OpenAgentOpenAgent

Contacts

The shared spine: every person deduplicated across doors, refilled automatically from sheets, CRMs, and webhooks, carrying DND, attribution, and history.

View as Markdown

Contacts is the business's memory of people. Every door writes into it, every campaign reads from it, and one person stays one record no matter how many ways they reach you — matched by phone first, then email, then external ID.

Where contacts come from

SourceHow
ConversationsEvery door auto-creates or matches the contact — a caller's number, a chat identify, a DM profile.
Contact sources (sync)Connect a Google Sheet, an external CRM, or a webhook feed and Contacts refills itself — new rows appear, existing ones update, matched by phone → email → ID. Set it once.
CSV importOne-time list uploads.
The APICreate/upsert programmatically — see the Contacts API.
ManualAdd contact for the walk-in you want to remember.

What a contact carries

  • Name, phone, email, external ID, and any custom attributes you define (plan, LTV, last visit…).
  • [DND flags](/docs/crm/dnd) — per channel and master, honored by every send in the platform.
  • Their conversations across all doors, their deals, and their first-touch attribution.
  • Tags and stage — the raw material for audiences.
Audiences are rules, not lists

"Ordered before, quiet 30 days", "everyone we quoted", "plan holders" — define the rule once and it stays current as Contacts refills. See Audiences.