Contact management and audiences
Import contacts, build audiences, and segment recipients for targeted email. Subscription topics and RFC 8058 one-click unsubscribe are handled for you.
Audience management
Group contacts into audiences. Import from CSV, sync from your app over the API, and export at any time. No lock-in, no per-contact fees.
Segmentation that actually ships
Filter by tags, custom fields, and engagement signals. Save segments, send broadcasts to them, and watch them update as contact data changes.
Compliant unsubscribe handling
Subscription topics let contacts opt out of one stream without losing others. RFC 8058 one-click unsubscribe is added to every marketing send for Gmail and Yahoo compliance.
Create a contact
await poststack.contacts.create({
email: 'alice@example.com',
firstName: 'Alice',
lastName: 'Smith',
tags: ['customer', 'pro-plan'],
customFields: {
company: 'Acme Inc',
signedUpAt: '2026-01-15',
},
});Use cases
Newsletter and marketing lists
Import existing contacts from a CSV or sync them over the API. Group into audiences, segment by tag or property, and broadcast to the right subset for every campaign.
Product changelog and release notes
Build an audience of users who opted in to product updates. Segment by plan or activation status so feature announcements only reach customers who can actually use them.
Transactional + lifecycle blended
Pair contacts with workflows to ship lifecycle email — onboarding sequences, dormant-user re-engagement, trial-expiry reminders — driven by event triggers or property changes.
GDPR-compliant consent management
Subscription topics let recipients opt out of one stream (marketing) while keeping another (account alerts). Every unsubscribe is recorded with timestamp and source for audit.
How it works
Contacts are first-class records identified by email. Each contact carries first name, last name, an arbitrary set of tags, and a flexible `customFields` JSON object. Custom contact properties are defined at the team level so you can validate types — string, number, boolean, date — at write time. Contacts can be created, updated, and deleted via the API or imported from a CSV. The import process deduplicates by email, validates against MX records (to drop typos like `gmial.com`), and runs every address through your suppression list so previously-bounced or unsubscribed contacts are kept out. Audiences are named groupings — e.g. `all_subscribers`, `paid_customers` — and a contact can belong to many audiences at once. Segments are saved queries that live within an audience: `paid_customers WHERE last_active > 30 days ago AND plan = "pro"`. Segments are evaluated at send time so they always reflect current contact data. Every contact action — created, updated, subscribed, unsubscribed, bounced — emits a webhook event you can pipe into your CDP or data warehouse. Subscription topics implement GDPR-compliant granular consent: a contact can subscribe to `product_updates` while staying unsubscribed from `marketing`, and each topic gets its own RFC 8058 one-click unsubscribe link in compliant headers.
Frequently asked questions
Are contacts charged per record?
No. PostStack does not charge per contact. You pay for emails sent, not contacts stored. Import millions if you need to — only the sends count.
Can I import an existing list?
Yes — CSV import from the dashboard or bulk API. Imports automatically dedupe by email, run an MX-record validation, and skip addresses on your suppression list. Imports are previewable before they commit.
How do unsubscribes work?
Every marketing send includes RFC 8058 one-click unsubscribe headers and a visible link in the footer. Unsubscribes are processed instantly, recorded in the contact’s history, and prevent further sends. Subscription topics support granular opt-out per stream.
Can contacts have custom fields?
Yes. Define typed contact properties at the team level (string, number, boolean, date), then set them per contact via the API or dashboard. Use them in segmentation, template variables, and workflow conditions.
Is the data export-friendly?
Yes. Every contact, audience, segment, and subscription state is exportable as JSON or CSV via the API. No lock-in — your data is yours, and you can leave at any time with a full export.