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:

WaitlistWaitlist signups create a Contact and link the WaitlistSignup record
Contact FormContact messages create/merge a Contact and link the ContactMessage
Custom FormsForm submissions create/merge a Contact and link the FormSubmission
AI ChatLead capture during chat creates/merges a Contact and links the ChatConversation

Contact fields#

Property Type Description
email *stringContact email (unique per project)
name stringContact name (if provided in any submission)
referral_code stringAuto-generated unique referral code (e.g., ref_abc123)
referred_by ContactThe contact who referred this person (if applicable)
source stringFirst interaction source: waitlist, form, contact_form, chat
metadata JSONAdditional metadata from submissions
created_at datetimeWhen 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.