Sending Campaigns (Broadcasts)

Dave Hilditch

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).


Composing a campaign

  1. Go to SSE Emails > Campaigns.
  2. Click Add New.
  3. 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.
  4. 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:

ModeWhat it does
Subscribers on list…Everyone with subscribed status on a chosen SSE list. The most common choice.
All active subscribersEveryone 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:

  1. With the campaign open in the editor, click Send test to me.
  2. The message is sent to the email address on your WordPress user account, regardless of the configured audience.
  3. 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

StatusMeaning
draftCreated, not yet sent. Editable.
scheduledHas a schedule_at time in the future. Editable until then.
sendingCurrently being queued / drained. Not editable.
sentDone. Read-only.
cancelledManually 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.


Merge tags

The body supports basic merge tags resolved at send time:

TagSubstitutes
{{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:

  1. Open the campaign and change its status to cancelled (manual; via the Cancel button).
  2. The queue drainer skips queue rows whose campaign is in cancelled.
  3. Already-sent rows are not recalled — once wp_mail has 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.


Related

Leave a Reply

Your email address will not be published. Required fields are marked *

×
1/1