Contacts
One record per customer, pulling together every channel they've messaged you on and their full Shopify order history.
A contact is one person. Enscale builds them automatically — from messages, from your storefront, from Shopify — and links them to the right Shopify customer wherever it can.
The payoff is the inbox sidebar: when someone messages "where's my order?", you can see their order without asking them which one.
Contacts are unlimited on every plan, including Free. You're never charged for storing customers, so there's no reason to prune your list.
Where contacts come from
You don't create these by hand. They appear when:
| This happens | …and a contact is created |
|---|---|
| Someone messages you for the first time, on any channel | From their phone number or social profile |
| A customer is created or updated in Shopify | From the Shopify record |
| Someone fills in a storefront popup | From the number they gave |
| Someone joins a back-in-stock waitlist | From the waitlist signup |
| You import a CSV for a campaign | From the file |
| An automation creates or updates one | From the flow |
How Enscale matches people to Shopify
Enscale links contacts to Shopify customers by phone number and email. When it matches, the contact gains order history, lifetime spend, and customer details — which is what makes the sidebar worth looking at during a conversation.
An unmatched contact still works completely. It just has less context. Someone who WhatsApps you from a number that's never been on an order has no Shopify record to link to yet — and it'll link itself automatically the moment they buy something.
This is worth understanding, because it explains a common surprise: a customer who ordered using their landline but messages you from their mobile won't match until one of those numbers appears on both.
What's on a contact
- Who they are — name, phone, email, and their handle on each channel.
- Their Shopify record — linked customer, past orders, total spend.
- Consent — whether you're allowed to message them on WhatsApp, and how you got permission.
- Tags — your own labels.
- Loyalty points, if you've turned loyalty on.
- Every conversation they've had with you, on every channel, in one list.
- Waitlists — products they're waiting to come back in stock.
That last one is quietly useful: a customer messaging about delivery who's also waiting on a restock is a customer you can help twice in one conversation.
Consent status
This is the part that matters. Every contact is in one of three states for WhatsApp:
| Status | Can you send them outbound WhatsApp? |
|---|---|
| Pending | No — they haven't agreed yet |
| Opted in | Yes |
| Opted out | No, and they can't be added to campaigns |
Consent is evidence, not a checkbox
Enscale records where each opt-in came from and when — popup, keyword reply, checkout, staff action, automation, AI conversation, or CSV import — and keeps the history of every change.
That record is what lets you answer "why did you message this person?" if Meta or a customer ever asks. Which is exactly why you shouldn't set opt-in by hand for people who didn't actually opt in — you'd be creating a record that says they did.
They opt in by: submitting a popup, joining a back-in-stock waitlist, replying START or SUBSCRIBE, a team member recording it, an automation's Set WhatsApp Consent step, or an AI agent capturing it in conversation.
They opt out by replying STOP, UNSUBSCRIBE, CANCEL, END, QUIT or OPT OUT. Enscale handles all of these immediately and automatically, and fires the WhatsApp Opt-Out trigger so you can tag or re-segment them if you want.
You never maintain a suppression list. Opted-out contacts are excluded from campaigns and automated sends automatically, for good.
Importing a list
Import by CSV when you're building a campaign audience.
Your file needs a phone number column, and should carry consent information if these people opted in somewhere else. Phone numbers are converted to international format on import, and any that can't be read are reported back to you rather than silently dropped.
Don't import a list of people who never agreed to hear from you on WhatsApp — a list you bought, scraped, or exported from an unrelated system. It is the fastest route to a restricted number, and a restriction stops every customer reaching you, not just the ones you messaged.
Blocking someone
Blocking stops their messages reaching your inbox and prevents anything being sent to them.
Use it for abuse, not for unsubscribes. If someone just doesn't want marketing, that's what opt-out is for — blocking them also cuts off their ability to ask you a genuine support question later.
Blocks and unblocks are recorded on the conversation timeline, so there's a record of who did it and when.
Automations that fire on contacts
| Trigger | Fires when |
|---|---|
| Contact Added | A new contact is created |
| Tag Added | A specific tag lands on a contact |
| WhatsApp Opt-Out | Someone opts out |
Contact Added is more useful than it looks — it's how you welcome someone the first time they ever reach you, on any channel.