Sending Campaigns (Broadcasts)
A campaign in Super Speedy Emails is one configured email — a subject line, a body, an audience, and a category. You compose it once, choose an audience, and either send immediately or schedule for later.
Campaigns are how you send everything except automated drips and the newsletter digest (those are handled separately, see Automations and Newsletter).
Table of Contents
Composing a campaign
- Go to SSE Emails > Campaigns.
- Click Add New.
- Fill in: – Internal name — for your reference only, not shown to recipients – Category — see Email Categories. The category controls which “From” address is used and which suppressions apply. – Subject — what recipients see in their inbox – Audience — see below – Body (plain text) — the message. Plain-text-first by design; HTML is auto-generated.
- Click Save.
The campaign is now in draft status. It does not send until you tell it to.
Choosing an audience
The audience picker has four modes:
| Mode | What it does |
|---|---|
| Subscribers on list… | Everyone with subscribed status on a chosen SSE list. The most common choice. |
| All active subscribers | Everyone in sse_subscribers with status=active and marketing_opt_in=1. Use sparingly — it’s a blunt instrument. |
| Owners of a product… | Anyone who’s bought a specific WooCommerce product. Two checkboxes: Include bundle owners (someone who bought Super Speedy Pack counts as owning each component plugin) and Direct buyers only (the opposite — only people who bought the product itself, no bundles). |
| Advanced (JSON segment query) | Free-form predicate tree for the audience. See Product Audiences & Segments. |
Whatever audience you pick, suppressions are always applied automatically based on the campaign’s category. You do not need to manually exclude unsubscribed people — the gate handles it.
Send-to-self test
Before sending to the audience, send the campaign to yourself first:
- With the campaign open in the editor, click Send test to me.
- The message is sent to the email address on your WordPress user account, regardless of the configured audience.
- Check your inbox. Verify formatting, subject, From address, links.
The test send bypasses the audience selection but still respects the category’s “From” address and the test mode (see Test Modes).
Send (or schedule)
Once you’re satisfied with the test:
- Send to audience now — queues the campaign immediately. The queue is drained by cron every minute. For a small audience you’ll see messages going out within a minute; for thousands, it’ll take a few minutes.
(Scheduling a future send is on the roadmap; for now, schedule via the WordPress cron yourself or send manually at the right time.)
When you click send, you’ll see a confirmation count: “N messages queued.” That’s the resolved audience size after suppressions are subtracted.
Campaign statuses
| Status | Meaning |
|---|---|
draft | Created, not yet sent. Editable. |
scheduled | Has a schedule_at time in the future. Editable until then. |
sending | Currently being queued / drained. Not editable. |
sent | Done. Read-only. |
cancelled | Manually stopped before completion. Read-only. |
The status guard
A campaign that has been sent cannot be sent again from the same campaign row. This is intentional — it prevents the most common email mistake (“I clicked send by accident, now everyone got it twice”). If you genuinely need to resend, see “Reset to draft” below.
Reset to draft
On any sent campaign you’ll see a Reset to draft button. This returns the campaign to draft status, allowing you to edit and re-send. The new send goes to the audience as it stands now — anyone who has unsubscribed since the first send will be filtered out, anyone who joined the list since then will be included.
Reset-to-draft does NOT clear the audit log. The original send’s sse_email_log rows remain. The re-send creates new log rows. So if you reset and re-send, you’ll have two distinct log rows per recipient who got it both times.
Reviewing what was sent
Open any sent campaign to see its delivery report:
- Queued / sent / delivered / opened / clicked / bounced / complained / unsubscribed counts
- First-event timestamps for the campaign as a whole
- Per-recipient breakdown (linked to subscriber rows)
See Tracking & Reporting for what each metric means and how the MailGun webhook drives them.
The body supports basic merge tags resolved at send time:
| Tag | Substitutes |
|---|---|
{{first_name}} | Subscriber’s first name (or WC billing first name as fallback) |
{{last_name}} | Subscriber’s last name (with same WC fallback) |
{{email}} | Subscriber’s email |
{{unsubscribe_url}} | Per-recipient unsubscribe URL (also injected as a List-Unsubscribe header automatically) |
A merge tag with no value falls back to “there” — so Hi {{first_name}} becomes Hi there for an anonymous subscriber.
What a typical campaign looks like in practice
A real “Scalability Pro: 20% off this week” broadcast:
- Category:
product_marketing - Audience: Owners of a product → product ID for Scalability Pro → “Include bundle owners” checked. (So Super Speedy Pack buyers are included.)
- Subject:
20% off Scalability Pro support — this week only - Body: Plain text, 4-6 short paragraphs, one clear link to the offer.
Before sending, the audience picker shows you a recipient count (e.g. “382 recipients”). That’s after suppression — anyone who’s unsubscribed from product_marketing (or globally) was already filtered.
Cancelling a scheduled or in-progress send
If you spot a typo after clicking send but before it’s finished draining the queue:
- Open the campaign and change its status to
cancelled(manual; via the Cancel button). - The queue drainer skips queue rows whose campaign is in
cancelled. - Already-sent rows are not recalled — once
wp_mailhas fired, the message is in MailGun’s hands.
So speed matters: catching it within the first minute means most rows are still in the queue. After a few minutes on a big send, the bulk of messages are gone.
- Email Categories & Unsubscribes — the legal-basis matrix that gates audiences
- Newsletter — recurring article digest, automated rather than per-campaign
- Automations & Drips — multi-step series triggered by events (purchases, etc.)
- Test Modes — how to send safely while you’re still building confidence
- Product Audiences & Segments — the JSON segment query for advanced audience composition