Skip to content

Contacts & segments

Open Contacts in the sidebar. Three tabs sit along the top: Contacts, Segments and Re-engagement.

The list shows each contact’s name, phone, your contact fields as columns (until you define any, City, Product interest, Budget and Status), and tags. Columns that are empty for every contact on screen are hidden; click … empty columns hidden · Show to bring them back. More contacts load as you scroll. The search box finds contacts by name or phone.

If your workspace’s privacy setting hides phone numbers, the Phone column is hidden and the page says so.

  • Conversations. A contact is created automatically the first time a conversation with a new number starts, whether the customer wrote to you or you messaged them (a broadcast included).
  • Add contact. On the Contacts page, click Add contact, enter the phone with its country code (for example 919876543210) and, optionally, a name, and click Save.
  • CSV import. See Import a CSV.
  • The API. Your developers can push contacts from your app or CRM with the Contacts API.

Click a contact to open their profile. It shows their name, phone, opt-in status, tags and every field, how many conversations they have, and the date they were added. With several WhatsApp numbers, it lists their conversation on each number. Below that: the Flows they have been through and their answers, AI conversations, Forms filled, and Broadcasts received with the status of each.

History is matched to the contact by the last 10 digits of their number, so it still shows when a number was stored with and without its country code.

Click Import CSV on the Contacts page (or Settings → Contacts → Upload CSV). The file needs a header row.

ColumnRequiredWhat it does
phoneYesThe contact’s number. A bare 10-digit number is taken as an Indian number (+91). Rows without a usable number are skipped.
nameNoThe contact’s name.
tagsNoTags, separated by commas (put the cell in quotes when it has more than one).
opt_inNo1, true, yes, y or opted_in marks the contact Opted in.
opt_in_statusNoUsed when opt_in isn’t one of those: opted_in, opted_out or pending. With neither, the contact is Pending.
any other columnNoStored as a field on the contact, under the column’s name.
contacts.csv
phone,name,city,rate_interest
9876543210,Ravi,Chennai,gold
9812300002,Priya,Mumbai,silver

When it finishes, the page says how many contacts were added or updated. The same number is never stored twice: a number already in your contacts, in any format, updates that contact.

Developers can import the same file format through the API: see Import Contacts (CSV).

Every extra column you import becomes a field on the contact. Settings → Contact Fields lets an org admin give those fields a label and a type, so they show as proper columns on the Contacts list and as the right kind of filter in Segments.

  1. Open Settings → Contact Fields.
  2. Enter the Key: letters, numbers and _ only. It must match the column name in your CSV (or the attribute your integration sends), for example party_type.
  3. Enter the Label people will see, for example Party type.
  4. Pick the Type. For a dropdown or multi-select, list the Options separated by commas.
  5. Click Add field. Edit or delete a field from the list below the form.
TypeUse it forIn Segments
TextFree textText conditions
Dropdown (single)One value from a fixed listPick the value from the list
Multi-selectSeveral values from a fixed list“contains any / all / none of”
DateA dateDate conditions (before, after, in the last N days…)
PhoneA phone numberText conditions

Defining a field doesn’t change the values already stored. If you type a field as Date and some contacts hold something that isn’t a date, a segment on that field skips them and tells you how many it couldn’t read.

A segment is a saved group of contacts defined by conditions, for example “city is Chennai and tagged gold”. Use segments as a broadcast audience, as the audience of a re-engagement rule, or just to look at a slice of your list.

  1. Go to Contacts → Segments and click New segment.
  2. Choose Match all conditions (every condition must hold) or Match any condition (one is enough).
  3. Click Filter and pick a field, then an operator and a value. Add as many conditions as you need. The table below updates live with the contacts that match.
  4. Type a name, or use the button beside the name box to suggest one from the conditions.
  5. Click Create segment.

You can filter on:

  • Dates: Date (when the contact was added), Last updated, and Reply window expires (when their 24-hour reply window closes).
  • Your contact fields (or, before you define any, a standard set: City, State, Country, Company, Stage, Status, Source, Product Interest, Budget and Email).
  • Tag.
  • Opt-in status: Opted in, Opted out or Pending.
Field typeOperators
Text, dropdown, phoneis, is not, contains, does not contain, starts with, ends with, is any of, is none of, is set, is blank
Dateon, before, after, is between, in the last … days, in the next … days, today, yesterday, this month, is set, is blank
Multi-selectcontains any of, contains all of, contains none of, is blank
Taghas tag, does not have tag, has any of, has all of, has no tags
Opt-in statusthe text operators, with Opted in, Opted out or Pending as the value

“In the last / next … days” takes a whole number from 1 to 3,650. A condition still missing its value shows needs a value, and the builder warns that it isn’t being applied, so the segment matches more contacts than the filters show. Fill it in or remove it before you save.

A segment built from conditions is dynamic: it is worked out again every time it is used, so the Total contacts column on the Segments page is always current, and a contact who starts matching the conditions is in it the next time you use it.

From the ⋯ menu on a segment you can Edit filters, Rename, Copy link (a link that opens the segment’s contacts), and Delete it. Re-engage (WhatsApp) takes you to the Broadcast page. Click a segment’s name to see its contacts. Drag segments to reorder the list.

Click Combine (you need at least two segments), pick 2 to 10 segments, name the result and choose:

  • Union: a contact is included if they are in any of the chosen segments.
  • Intersection: a contact is included only if they are in all of them.

A combined segment is a fixed list: it holds the contacts that matched at the moment you combined, and it doesn’t change when the segments it came from do. Its Filters column says it is a union or an intersection. To refresh it, open Edit filters on it and click Create union (or Create intersection) again: that updates the same segment rather than making a new one.

When a segment is turned into a list of people (as a broadcast audience, a re-engagement audience, or when combining), it includes at most 20,000 contacts. The count on the Segments page can show more than that, but only 20,000 are used. Split a larger audience into several segments, for example by city or by date added.

A re-engagement rule sends an approved template to contacts who haven’t messaged you for a while. Find it under Contacts → Re-engagement.

Click New rule and set:

SettingWhat it doesDefault
Rule nameYour label for it.
AudienceAll contacts (org-wide) or one of your segments.All contacts
Approved templateThe message to send.
Quiet daysA contact qualifies only if they haven’t sent you a WhatsApp message for this many days. Contacts who have never messaged you always qualify. 1 to 365.14
Cooldown daysAfter this rule sends to someone, it won’t send to them again for this many days, however often you click Run now. Counts this rule’s sends only. 1 to 365.7
Max / runThe most contacts one Run now sends to. The rest are left for the next run. Up to 5,000.200

Quiet contacts are always outside their 24-hour window, so only an approved template can reach them.

Pick a plain template. Run now sends the template exactly as approved, with nothing filled in:

  • A template with variables ({{1}}) fails for every contact. The form warns you if you pick one. Use a broadcast to send a template with variables.
  • Templates with a location header, or a button that needs a value (a link ending in a variable, an offer code), can’t be chosen.
  • A header file you attach in the form isn’t sent, so don’t pick a template with an image, video or document header either.

An audience includes at most 20,000 contacts, All contacts included (see the cap).

Click Run now on the rule. When it finishes you see how many were sent, skipped and failed. A contact is skipped when they have no phone number, have unsubscribed, were sent this rule within the cooldown, have messaged you within the quiet days, or the run reached Max / run. The Last run column shows when it last ran.

Re-engagement messages go out from your workspace’s default WhatsApp number, and Meta charges them like any template message (see Billing & wallet).

There are two separate things, and only one of them stops messages.

  • Unsubscribed (STOP). A contact who sends STOP (or unsubscribe, opt out and similar) goes on the Unsubscribed Contacts list on the Broadcast page. Everyone on that list is left out of every broadcast and every re-engagement rule until they send START or you re-subscribe them. See Unsubscribes for the exact keywords.
  • Opt-in status (Opted in, Pending, Opted out) is a field on the contact, set by your import or your integration. It shows on the contact’s profile and you can filter segments on it. It does not stop broadcasts by itself, and replying STOP doesn’t change it.

To send marketing only to people who agreed to it, build a segment with Opt-in status is Opted in and send to that segment.

There is no export of the contact list from the dashboard. Each broadcast has its own per-recipient report you can download as CSV; see Delivery report.