Platform
Contacts & Audience
Every person who interacts with your project — through waitlists, forms, chat, or contact messages — feeds into one unified contact list.
Unified contact model#
The Contact is the single source of truth for people in your project. Contacts are keyed on project_id + email — if the same email appears in multiple tools, it’s the same contact.
How contacts are created#
Every public submission endpoint calls upsert_contact() to find-or-create a Contact and link it to the source record:
Contact fields#
| Property | Type | Description |
|---|---|---|
| email * | string | Contact email (unique per project) |
| name | string | Contact name (if provided in any submission) |
| referral_code | string | Auto-generated unique referral code (e.g., ref_abc123) |
| referred_by | Contact | The contact who referred this person (if applicable) |
| source | string | First interaction source: waitlist, form, contact_form, chat |
| metadata | JSON | Additional metadata from submissions |
| created_at | datetime | When the contact was first created |
Contact detail view#
The contact detail page shows a full picture of every interaction:
- Linked waitlist signups
- Contact messages received
- Form submissions across all forms
- Chat conversations (with summaries)
- Referral chain — who referred them and who they referred
- Activity timeline
Filtering and search#
The audience list supports:
- Source filter: waitlist, form, contact_form, chat
- Search: by email or name
- Sort: by created date, last activity, referral count
Smart source upgrading#
When a contact interacts through multiple channels, their source automatically upgrades to the highest-intent channel. For example, if someone first sends a contact message and later joins the waitlist, their source changes to “waitlist.”
CSV export#
Export your audience list to CSV from the dashboard. The export respects active search and source filters. Columns include email, name, source, referral code, referral count, and created date. Capped at 10,000 rows.
Contact messages can also be exported separately from the Messages page, including message content and status.
Tags#
Contacts can be organized with project-scoped tags. Each tag has a name and color. Tags are managed via the API and support assigning/removing contacts.