Skip to content

Overview (Bulk / Marketing)

The bulk (marketing) module is independent from the transactional module. It uses the same authentication — Authorization: Bearer $MAILERDASH_API_KEY — but operates on a different channel (X-Md-Channel: bulk). You do not need to add that header to your REST calls: the bulk-worker adds it automatically when dispatching campaigns. Your interaction with the API is always to manage data (contacts, lists, templates, campaigns, sequences), not to trigger sends directly.

The general flow is:

Contacts → added to ListsCampaigns (or Sequences) point to a List + a Template → the bulk-worker dispatches the sends.

Individual records with email, name, and arbitrary metadata. Each contact has a status that reflects their deliverability state:

  • active — can receive emails.
  • unsubscribed — unsubscribed; will not receive further messages.
  • bounced — a permanent bounce (5.x.x) occurred; excluded from future sends.
  • complained — marked an email as spam via FBL; excluded from future sends.

Contacts are the source of truth for your subscribers.

Groups of contacts. A campaign points to exactly one list. You can have separate lists per product, segment, or channel (newsletter, onboarding, reactivation). Contacts can belong to multiple lists.

Reusable HTML and/or plain-text content, with its own subject. Campaigns and sequences reference them by ID, letting you update the content without modifying already-configured campaigns.

One-shot bulk send to a list. Lifecycle:

  • draft — draft state, editable.
  • send — queued for immediate dispatch.
  • sent — the bulk-worker finished processing all contacts.

Once sent, a campaign is not modifiable.

Drip automations. A sequence defines steps (steps) with a delay between each one (hours or days), and has subscribers — contacts that advance through the steps at the configured intervals. Useful for automated onboarding, nurturing, and follow-ups.

All bulk routes respect the account’s global suppression list. Contacts with status bounced, complained, or unsubscribed are automatically skipped at send time — you don’t need to filter them manually.

See the suppressions guide to learn how to manage the list and what happens when a contact is suppressed from different sources.

ResourceGuide
ContactsCreate, import, and manage contacts
ListsOrganize contacts into lists
TemplatesCreate reusable templates
CampaignsSend bulk campaigns
SequencesAutomate with sequences (drip)