Enscale Docs
Inbox

Contacts

Customer profiles in Enscale — how they're created, matched to Shopify, and how consent is tracked.

A contact is one person. Enscale creates them automatically from inbound messages, storefront activity, and Shopify customers, then matches them to your Shopify customer record where it can.

Contacts are unlimited on every plan, including Free. You're never charged for storing them.

How contacts are created

SourceWhen
Inbound messageSomeone messages you on any channel for the first time.
Shopify customerA customer is created or updated in Shopify.
Storefront popupSomeone submits a popup form.
Back-in-stock signupSomeone joins a product waitlist.
CSV importYou upload a list for a campaign.
WorkflowA flow creates or updates a contact.

Matching to Shopify

Enscale links contacts to Shopify customers by phone and email. When it matches, the contact profile gains order history, lifetime spend, and customer details — which is what makes the inbox sidebar genuinely useful during a support conversation.

An unmatched contact still works fully. It just has less context: someone who messages your WhatsApp from a number that isn't on any order has no Shopify record to link to yet, and will link automatically when they order.

The contact profile

Open a contact to see:

  • Identity — name, phone, email, and channel identities.
  • Shopify — linked customer, order history, spend.
  • Consent — WhatsApp opt-in status and where it came from.
  • Tags — see Tags.
  • Loyalty — points balance, if loyalty is enabled.
  • Conversations — every conversation across every channel.
  • Waitlists — back-in-stock products they're waiting on.

Every contact has one of three WhatsApp consent states:

StatusCan you send outbound WhatsApp?
PendingNo. They haven't opted in yet.
Opted inYes.
Opted outNo, and they can't be added to campaigns.

Consent is evidence, not a flag

Enscale records where each consent came from and when — popup, keyword reply, checkout, staff action, workflow, AI conversation, or CSV import — and keeps a history of changes.

That record is what lets you answer "why did you message this person?" if Meta or a customer ever asks. Don't set opt-in manually for people who didn't actually opt in.

Opting in — a popup submission, a back-in-stock signup, replying START or SUBSCRIBE, a staff action, a workflow's Set WhatsApp Consent node, or an AI agent capturing it in conversation.

Opting out — replying STOP, UNSUBSCRIBE, CANCEL, END, QUIT, or OPT OUT. Enscale handles these automatically, immediately, on every channel, and fires the WhatsApp Opt-Out trigger so you can tag or re-segment them.

You never need to maintain a suppression list. Opted-out contacts are excluded from campaigns and workflow sends automatically.

Importing contacts

Import via CSV when building a campaign audience.

Your file needs a phone number column, and should carry consent information if these contacts opted in elsewhere. Importing a list of people who never agreed to hear from you on WhatsApp is the fastest way to get your number restricted by Meta.

Phone numbers are normalised to international format on import. Numbers that can't be parsed are reported rather than silently dropped.

Blocking

Blocking a contact stops their messages appearing in your inbox and prevents outbound sends. It's for abuse, not for unsubscribes — use consent for those.

Blocking and unblocking are recorded on the conversation timeline.

Contacts and workflows

Three triggers fire on contact activity:

TriggerFires when
Contact AddedA new contact is created.
Tag AddedA specific tag is added.
WhatsApp Opt-OutA contact opts out.

Next steps

  • Segments — grouping contacts into audiences.
  • Tags — labelling contacts.
  • Audiences — who a campaign reaches.

On this page