Sending a Marketing Email

A blast is one message per recipient, rendered from a layout and addressed to a contact group. There is no scheduling, no pause and no undo: pressing Confirm hands the whole thing to a queue, and the next surface you see is a row in a report. That makes the shape of the composer worth learning before you use it rather than after.

Where the composer is

The composer is the New Email tab of the Email Marketing screen at /emails. That screen has four tabs — New Email, All Contacts, Groups and Sent Emails — and is reachable only by typing the URL: it is not in the tab rail, and it stays alive until a redesigned tab replaces it. Legacy URLs that still work lists it and its siblings.

Two of the other three tabs are documented elsewhere, because their content belongs to Engage rather than to email: browsing and importing contacts is contacts and importing contacts, and the Groups tab is contact groups and audiences. The fourth, Sent Emails, is the second half of this page.

Composing

The four fields

The New Email composer with all four fields filled and the Recipient Preview listing group members
  • Email Name — defaults to Email Blast plus a timestamp. Recipients never see it; it is the label this send carries in Sent Emails forever, so replace the default with something you will recognize in six months.
  • Recipient Group — the contact group to send to. The dropdown lists groups and nothing else, and is disabled outright when the workspace has none. Pick one and the Recipient Preview appears on the right, listing the resolved members with pagination so you can page through the actual audience rather than trusting a count.
  • Email Template — the email layout supplying the subject and the HTML body. Also disabled when there are none.
  • Page (optional) — a published page to feature. It populates the layout’s page variable, so it does something only if the layout uses it; leave it empty and a layout that references page renders that block empty.

Send a test to yourself

Send a test to yourself is available as soon as a layout is selected, on every plan including Free. It mails the layout to your own account address — not to anyone in the Recipient Group, and not to any address you can type. The test is classified transactional, so it is outside both the plan gate and the monthly meter.

Sending

Send opens a confirmation dialog titled Send Email, reading “Send an email to the all opted-in users in the group.” Confirm and the request goes out. Below Starter there is no Send button at all — an upgrade banner sits in its place, reading “Upgrade to Starter to send marketing email to your opted-in contacts. You can still compose and test-send to yourself.”

The composer on a Free workspace, with the marketing-email upgrade banner where the Send button would be
Captured on a Free workspace. Everything above the banner is fully usable; only the send is blocked.

What happens next runs in two halves. The first half is synchronous and answers you in the dialog:

  1. Access and entitlement checks. You need contact:write, and the workspace needs the marketing-email feature. Below Starter this returns 402 with reason: "feature_gated".
  2. Resolve the group. Members are read through the contact visibility cap, so contacts locked above your plan’s quota are never candidates.
  3. Drop do-not-contact. Anyone flagged do-not-contact is removed here.
  4. Refuse an empty audience. If nothing survives step 3, the request fails with 400 No opted in users in group and no batch is created.
  5. Check the monthly allotment. If this send would push the month past the quota, it is refused whole — see below.
  6. Queue the batch and return 201. Nothing has been sent yet.

The second half runs off the queue, and this is where a blast can go quiet:

  1. A second tier and allotment check. Queue lag or a concurrent blast can land an event that is no longer within quota, so both gates are re-evaluated.
  2. Filter to opted-in and not-hard-bounced. The consent pass that the Recipient Preview does not apply.
  3. Create the batch and its recipient rows, then fan out at 100 recipients per queue message.
  4. Render and send each message individually, stamping the sent time on the recipient’s row.
sequenceDiagram
  autonumber
  participant C as Composer
  participant A as POST /api/email
  participant Q as Email queue
  participant B as Batch handler
  participant S as Send handler
  participant R as Recipient

  C->>A: name · group · layout · page
  A--)C: 402 feature_gated — below Starter
  A->>A: Resolve group (visibility-capped)<br/>drop do-not-contact
  A--)C: 400 No opted in users in group
  A->>A: Monthly allotment check
  A--)C: 402 quota_exceeded — quota · used · currentTier
  A->>Q: create-email-batch
  A--)C: 201 accepted
  Q->>B: create-email-batch
  B->>B: Re-check tier and allotment
  B--xB: Dropped and logged — you are never told
  B->>B: Keep opted-in, not hard-bounced<br/>create the batch and its rows
  B->>Q: send-email × N, 100 per message
  Q->>S: send-email
  S->>S: Render · rewrite links · unsubscribe check
  S->>R: Deliver
  S->>S: Stamp the sent time

The three dashed returns are the failures you see; the crossed self-message is the one you do not.

StageConditionWhat you seeWhere
Feature gateWorkspace is below Starter402 with reason: "feature_gated", feature, requiredTier, currentTierThe composer, before anything is queued
Empty audienceNo opted-in contacts survive the group400 No opted in users in groupThe composer
AllotmentThis send would pass the monthly quota402 with reason: "quota_exceeded", quota, used, currentTierThe composer
Queue-side re-checkTier or quota changed after acceptanceNothing. The event is dropped and loggedNowhere in the CMS
Per-recipient guardRecipient hard-bouncedThat recipient is skippedNowhere — their row keeps no sent time
Per-recipient guardRecipient opted out after fan-outThat recipient’s send throwsNowhere
Per-recipient guardRow already has a sent timeThe re-send throwsNowhere — Leed has no resend

Every 402 on this page carries the same body shape as every other gate in Leed; when a feature is gated decodes it field by field.

Your monthly allotment

PlanMarketing emails per monthWhat happens at the limit
Free0The feature gate fires first — there is no Send button to press
Starter5,000The next blast that would cross the line is refused whole
Growth50,000The same
EnterpriseUnlimitedNo allotment check runs

Those are the launch defaults. A workspace’s stored quota is the real value and an administrator may have a different one; usage and limits shows yours, alongside the contacts limit and analytics retention — the only three quotas in Leed.

How it is counted

The window is the current UTC calendar month. It resets at midnight UTC on the first, not on your billing date and not in your timezone.

Only marketing rows count. A row is charged from the moment its batch is accepted, not from the moment it is delivered: usage is rows sent this month plus rows reserved by batches created this month and not yet sent. That is what stops two blasts fired seconds apart from both passing a check against a stale sent-only count and overshooting between them.

Transactional email never counts — not a form response email, not a test send, not a sign-in code. How email works in Leed lists which is which.

What happens at the limit

The whole batch is refused before anything is queued. Leed never half-sends a blast: if a 900-recipient send would take you from 4,500 to 5,400 on a 5,000 allotment, all 900 are refused, not 500 of them. The 402 tells you the quota, how much you have used and your current tier, so the arithmetic is visible rather than guessed.

While a workspace sits at or over its marketing allotment, Leed emails every active administrator once a day, and suppresses the notice for seven days after each one so a long overage does not become a daily nag. A Free workspace never receives it — a zero allotment with a feature gate in front of it has nothing to exhaust.

The only remedies are waiting for the month to roll over or moving up a plan; there is no way to buy a top-up. Changing plans and downgrades covers what happens to an in-flight month when you switch.

Sent Emails

The Sent Emails tab is the report. Each row is one blast, with four engagement columns that each show a count and, beneath it, that count as a percentage of recipients. A metric of zero shows a dash instead of 0.0%.

The Sent Emails table showing several sends with recipients, opens, clicks, bounces and unsubscribes
ColumnWhat it countsPer recipient or per eventWhen the number is written
NameThe Email Name you typed—At batch creation
DateWhen the batch was created—At batch creation
Contact GroupThe group the send was addressed to, linked—At batch creation
PageThe page from the Page field, linked—At batch creation
RecipientsRows created at fan-outPer recipientAt fan-out, after opt-out and bounce filtering
OpensRecipients who opened at least oncePer recipientOn the first tracking-pixel hit
ClicksRecipients who clicked at least oncePer recipientOn the first tracked-link click
BouncesRecipients whose delivery failedPer recipientWhen the bounce report arrives
UnsubscribesRecipients who opted out from this sendPer recipientOn the unsubscribe click

Four things this table does not say, all of which get misread:

  • It shows only blasts. The list is filtered to sends composed here. Form response emails, and any future campaign send, are excluded by batch type — so a form that has mailed ten thousand people leaves no row.
  • The metrics are flags, not counts. Each is a boolean on the recipient’s row, so the columns count recipients who did the thing at least once. A contact who opens your email six times adds one to Opens, and Opens can never exceed Recipients.
  • Recipients is post-filter. It counts the rows created at fan-out, after opted-out and hard-bounced contacts were removed. It will often be smaller than the number the Recipient Preview showed while you were composing, and both numbers are correct — the funnel is drawn out on contact groups and audiences.
  • There is no drill-down. You cannot click a row to see who opened. One contact’s full email history — every send they received, opened and clicked — is on their record in contacts; that panel needs the reader-identity entitlement, which is Starter and up.

Where the Opens and Clicks numbers physically come from, and what they can and cannot tell you — image blocking, privacy proxies, and what a forwarded email does to attribution — is on tracked links and open tracking. The Unsubscribes column is explained by unsubscribes and opt-outs, and the Bounces column is only meaningful once you know the three classes of bounce and which one permanently retires an address.

What you cannot do yet

Stated plainly, so you do not go looking:

  • Schedule a blast for later. Confirm sends now. Publish-time scheduling exists in Leed, but it is a page feature — you can schedule the page a blast points at, not the blast.
  • Pause or cancel a send in flight. Once the batch is queued there is no stop.
  • Resend to non-openers. Each recipient gets one row per batch and a row that has been sent refuses a second send, so a follow-up means a new group and a new blast.
  • A/B test a subject line. One blast, one layout, one subject. Two variants means two groups and two sends, compared by hand in Sent Emails.

If you need email as one channel among several in a coordinated push, the planning side of that lives in campaigns and deliverables — which coordinates the work but does not send — and the measurement side in journeys, funnels and attribution.

ESC