Email Marketing
Gordon CRM includes a complete email system with two complementary tools: Campaigns for automated drip sequences and Broadcasts for one-time mass sends. The system supports both marketing and transactional email categories, with a first-party tracking engine for click and open analytics.
How It Works
All emails in Gordon CRM flow through a unified pipeline:
- Compose — Write your email using the built-in HTML editor with merge fields for personalization.
- Target — Select your audience (campaigns use automation triggers; broadcasts use tag/event-based audiences).
- Send — Emails are dispatched by background CRON sweepers that run on a schedule, checking for due enrollments and scheduled broadcasts.
- Track — Every email is logged in the
email_sendstable. Status progresses throughpending → sent → delivered → opened → clicked. Click and open events are recorded by Gordon CRM's first-party tracking engine; delivery, bounce, and complaint events are received via Resend webhooks.
Email Categories
Every campaign and broadcast has a category that determines its compliance behavior:
| Marketing | Transactional | |
|---|---|---|
| Purpose | Promotional content, newsletters, drip sequences | Receipts, confirmations, critical notifications |
| Consent required | ✅ is_subscribed must be true | ❌ Bypasses consent gate |
| Unsubscribe header | ✅ Required (List-Unsubscribe) | ❌ Omitted |
| Tracking | Configurable (on by default, can disable) | Always off |
| Default | ✅ All new campaigns/broadcasts default to marketing | — |
Transactional emails bypass the
is_subscribedgate and omit unsubscribe headers entirely. Use this category only for emails that recipients expect to receive regardless of their marketing preferences — such as order confirmations, appointment reminders, or account notifications.
Campaigns vs. Broadcasts
| Campaigns | Broadcasts | |
|---|---|---|
| Purpose | Multi-step automated sequences | One-time mass emails |
| Trigger | Automation rules (form submission, tag applied, etc.) | Manual or scheduled |
| Steps | Multiple emails with delays between them | Single email |
| Personalization | Full merge field support | Full merge field support |
| Audience | Individual contacts enrolled via automations | Bulk audience by tags, events, or all contacts |
| Lifecycle | draft → active → paused → archived | draft → scheduled → sending → sent |
Email Eligibility
Before any marketing email is sent, Gordon CRM checks three conditions:
- ✅ The contact's
is_subscribedmust betrue - ✅ The contact's
unsubscribed_atmust benull - ✅ No active suppression record (bounce, complaint, etc.) exists
If any check fails, the email is skipped and logged. See Subscriptions & Consent for details.
Transactional emails bypass condition 1 (is_subscribed) and condition 2 (unsubscribed_at). Only
active suppressions (bounces, complaints) prevent a transactional email from being sent.
Sender Identities
Every email must be sent from a verified sender identity. This is a verified subdomain + email address configured in your workspace settings, with a separate reply-to address on your root domain.