Skip to content
Meta Business PartnerStep-by-step guide

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.

E.164, e.g. +919812345678
Number format
UTF-8 CSV, one contact per row
File type
Required and auditable per contact
Opt-in
Automatic against existing contacts
Dedupe
None — fully no-code import
Coding needed
Free; you pay per delivered message
Cost to import

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

Do this in InfiQ now

Talk to InfiQ

Want us to set this up with you?

Tell us where you’re stuck — we’ll walk you through it and get you live.

Step 1 of 2
WhatsApp

Protected by invisible spam checks · replies within 1 working day

Frequently asked questions

What format do phone numbers need to be in?+
E.164 — a plus sign, country code, and national number with no spaces or symbols. An Indian mobile looks like +919812345678. Drop leading zeros and don't mix the 0- and 91- prefixes. InfiQ normalises numbers where it safely can and flags anything it can't validate.
How many contacts can I import at once?+
You can import large lists in a single CSV. What limits how fast you can actually message them is your WhatsApp messaging tier, not the import — a new number starts in a lower tier and Meta raises the cap as you show consistent quality, so scale sends up gradually.
Do I need opt-in for every contact I import?+
Yes. WhatsApp's Business Messaging Policy requires active opt-in before you message anyone. The consent can come from a website form, checkout, or keyword — but you must be able to show where and when it was given. Importing purchased or scraped lists risks blocks and a suspended number.
Will importing create duplicate contacts?+
No. InfiQ deduplicates on import by matching incoming numbers against contacts you already hold, so the same person isn't stored twice or messaged twice in one campaign. You'll see a report of how many rows were merged or skipped.
Why were some rows skipped during import?+
Usually an invalid or malformed number, a missing phone column, or an encoding issue that broke the file. InfiQ returns a skipped-rows report telling you exactly which rows failed and why, so you can fix those entries in the source and re-import only the failures.
Does importing contacts cost anything?+
Importing and storing contacts in InfiQ doesn't cost per contact. You're only charged when you actually send a message. WhatsApp bills per delivered message by category — marketing, utility, or authentication — and InfiQ applies transparent ₹ pricing (ex-GST).
Do I need a developer to import contacts?+
No. The CSV import in InfiQ is fully no-code — upload, map columns, validate, done. You'd only reach for the API if you want to sync contacts automatically from your own CRM or app on a schedule.
Can I import extra fields like city or order ID?+
Yes. Add any columns you like and map them to custom attributes during import. Those attributes then power template variables (personalised messages) and segments (targeted broadcasts), such as sending a utility update only to customers in a specific city.