Audience
People & profiles

Customers

The Customers module is the canonical place to view, search, and manage individual users in your workspace.

Customer record

Each row consists of:

FieldTypeNotes
external_idtextUnique per workspace. Your internal user ID.
emailtextLowercased on write. Used for email channels and as a soft identity hint.
phonetextE.164 format preferred. Used for SMS and WhatsApp.
first_name, last_nametextUsed for Liquid personalization.
country, city, device, platformtextAuto-populated from Track API context where possible.
attributesjsonbArbitrary traits. Register schema in Attributes for autocomplete.
is_blacklistedboolWhen true, the customer is excluded from all sends regardless of channel or campaign.
last_seen_attimestampAuto-updated on any event ingest.

Customer profile page

Click any row to open the profile. You'll see the identity card on the left, and a timeline of the 50 most recent events on the right, with full properties displayed inline. From here you can:

  • Add or remove the customer from the blacklist.
  • Delete the customer permanently (cascades to events, list memberships, attributions).
  • Inspect consent states (if Trust module is used).

Creating customers

Customers are created in four ways:

  1. Manual add — Customers → + Add customer.
  2. CSV import — see CSV import.
  3. Track API — any event with an unknown external_id creates a stub customer.
  4. Commerce ingest — Shopify / Woo webhooks upsert by email.

Anonymous → identified merge

Browser and mobile SDKs assign each new device an anonymous id (anon_…) and persist it across reloads. Events fired before sign-in are stored under that anonymous customer.

The first time you call identify('user_123', …) on a device, the SDK passes the anonymous id to the server, which:

  • Reassigns every event from the anon customer to user_123.
  • Reassigns device tokens (push, web push) to user_123.
  • Deletes the orphan anon row.

The result is a single, continuous profile — the user's pre-signup behaviour is preserved on their real account.

CSV import

Go to Imports → + New import. Upload a CSV with headers that match known fields (external_id, email, first_name, etc.). Unknown columns land in the attributes JSONB.

  • Imports are deduplicated by external_id. Rows without one fall back to email.
  • Existing customers are merged, not replaced — blank CSV values don't overwrite existing data.
  • Large files are processed in chunks; the Imports page shows progress per file.

Exporting customers

From the Customers list, use Export CSV to download the current filtered view, or schedule recurring exports under Integrations → Scheduled exports.

Deleting customer data

For GDPR erasure requests, delete the customer from their profile page. Pulse cascades the delete across:

  • Events
  • List memberships
  • Campaign messages & attributions
  • Journey runs
  • Consent records

The suppression list retains the email/phone hash so the person is not accidentally re-contacted if they're re-imported.