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.

Contact import and downstream usage
Rendering architecture diagram...

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.