Contacts architecture
Audience records, directories, imports, and signal watch creation.
Contacts are the shared audience model for email, calling, signals, history, and analytics. Directories provide lightweight segmentation for campaigns and playbooks.
Runtime flow
The /contacts page uses api.contacts to load contacts/directories, parse import files, map columns, save rows, and refresh query caches. Imports can create company watches from business email domains.
Implementation map
Frontend
/contacts, contact/directory modals, import mapper, TanStack Query, and selectedContactIds in Zustand.
Backend
ContactsController and ContactsService own CRUD, CSV/XLSX parsing, duplicate behavior, custom fields, and directory lifecycle.
Data
Contact, ContactDirectory, and best-effort CompanyWatch records.
Consumers
Email campaigns, calling campaigns, signal matching, history filters, and dashboard segment analytics.