How to import contacts on the WhatsApp Business API
Importing your customer list into the official WhatsApp Business API is the foundation of every campaign, drip, and broadcast you'll ever run. Do it cleanly and your first send lands with high delivery and a healthy quality rating; do it carelessly and you invite blocks, template rejections, and a number that never leaves the "Medium" tier. This guide walks you through importing contacts in InfiQ end to end — how to format the file, map phone numbers to E.164, capture proof of opt-in, dedupe against existing contacts, and validate before you send a single template message. Everything here is no-code inside InfiQ; you only touch the API if you want to sync contacts programmatically.
What you'll do
Prepare a UTF-8 CSV with E.164 phone numbers and an opt-in column, upload it in InfiQ's Contacts screen, map your columns, let InfiQ validate and dedupe, tag the list, then test with your own number before broadcasting. Clean data plus recorded opt-in protects your quality rating from day one.Step 1 — Prepare and clean your CSV file
Before you touch InfiQ, get your data right, because a five-minute clean-up here prevents most import failures. Export your contacts to a CSV saved as UTF-8 so names in Hindi, Tamil, or any Indian script aren't mangled. Give the sheet a header row and put one contact per row. The only mandatory column is the phone number; everything else — first name, city, order ID, plan type — is optional data you can map to attributes later for personalisation and segments. Strip out obvious junk: blank rows, test entries, and landlines you can't message on WhatsApp.
- Save as CSV with UTF-8 encoding (not ANSI or UTF-16)
- Keep a clear header row: phone, name, opt_in, city, and so on
- One contact per row, no merged cells or multi-line values
- Include an opt_in column recording where and when consent was captured
- Remove duplicates, blanks, and non-mobile numbers before uploading
Step 2 — Format every phone number in E.164
WhatsApp identifies contacts by their international phone number, so the single most important field is formatted correctly as E.164: a plus sign, the country code, then the national number with no spaces, dashes, or brackets. An Indian mobile becomes +919812345678 — not 09812345678, not 9812345678, and not 91 9812 345678. This is where imports most often go wrong: leading zeros carried over from a local format, or numbers stored as text that Excel silently truncated. InfiQ normalises numbers where it can safely infer the country and flags anything ambiguous rather than guessing, so you can correct it before the list ever receives a message.
- Always prefix with + and the country code (91 for India)
- Drop the leading 0 from national numbers
- Store the column as text so spreadsheets don't strip leading digits
- Let InfiQ flag unparseable numbers instead of sending to a bad address
Step 3 — Confirm opt-in before you import
WhatsApp's Business Messaging Policy requires active opt-in from every person before you message them, and this rule is enforced through your quality rating: message people who didn't ask to hear from you and the blocks and reports will drag your number down fast. Importing is not consent — uploading a number gives you no right to message it unless that contact opted in somewhere first, whether through a website checkbox, a checkout, or a WhatsApp keyword. Record the source and timestamp of consent in your CSV so it's auditable, and never import purchased, rented, or scraped lists. Clean, consented data is the difference between a number that climbs to the High tier and one that gets restricted.
Step 4 — Upload, map columns, and validate in InfiQ
Now the no-code part. In InfiQ, open the Contacts screen and choose to import a CSV. InfiQ reads your header row and asks you to map each column to a field — phone number, name, opt-in status — or to a custom attribute for anything extra like city or order ID. As it processes, InfiQ validates every number, deduplicates incoming rows against contacts you already hold so nobody is stored or messaged twice, and produces a report of what imported cleanly versus what was skipped and why. Fix the flagged rows in your source file and re-import just those, rather than re-uploading the whole list.
- Open Contacts and select CSV import
- Map phone, name, and opt-in to fields; map extras to custom attributes
- Review the validation and skipped-rows report
- Tag or segment the list on import (e.g. 'Diwali-2026', 'Bangalore')
- Re-import only the corrected rows, not the full file
Step 5 — Test, then send to your first segment
Never let a fresh import go straight to a full broadcast. Send a test to your own number first to confirm the mapping is right — that the name variable resolves, the city attribute pulls through, and the template renders as intended. Then, if the number is new, warm it up: start with a smaller, engaged segment and grow volume as your messaging tier rises and quality holds, rather than blasting the whole list on day one. Choose the correct template category for what you're sending — marketing, utility, or authentication — because WhatsApp bills per delivered message by category and the wrong category invites rejection. Watch delivery and read status after going live and pause anything that isn't landing.
- Send a test message to yourself and check every variable resolves
- Warm up a new number — grow volume gradually, don't blast everyone at once
- Pick the right template category (marketing / utility / authentication)
- Monitor delivery, read, and block signals; act on failures early