Contacts and consent

On this page 4

A contact can have an email address, phone number, name, status, source, custom properties, identities, tags, and engagement time. Email uniqueness is scoped to the team.

Contact states

StatusMeaning
activeEligible for communication when consent and campaign rules allow it
pendingWaiting for confirmation, commonly during double opt-in
unsubscribedOpted out of marketing communication
suppressedBlocked because of policy, provider feedback, or operational decision
archivedRetained but removed from active use

Public signup forms record whether consent was requested or confirmed, along with purpose, source, jurisdiction, policy version, proof, IP address, and time. A double opt-in form queues a confirmation email with a signed token that expires after 48 hours.

Preference and unsubscribe links also use signed public tokens. Preserve the event history instead of replacing it with a single boolean. This provides evidence of how and when a contact's permission changed.

Data minimization

Store only data needed for segmentation, personalization, delivery, or a documented business process. Use custom fields for stable structured data, tags for lightweight classification, and properties for limited integration metadata. Do not place credentials or payment details in contact properties.

Identity and merge

Contact identities map provider or channel identifiers to one contact. Merge records should retain provenance so the team can explain why identities were combined and reverse mistakes through a controlled process.

Creator-first communications infrastructure, released under the MIT License.