5. Campaigns — sending to a list
Contents
- The campaigns table
- Campaign statuses
- Building a campaign
- Campaign Settings, field by field
- Choosing recipients
- Send Now
- Scheduling
- Cancelling a scheduled send
- Duplicating
- Deleting
- Reading the numbers
- Recipient Activity
- A safe send checklist
The campaigns table
Marketing → Campaigns.
| Column | Notes |
|---|---|
| Name | Internal. Recipients never see it |
| Status | Coloured badge — see below |
| From | The from-address on the campaign |
| Subject | What recipients see |
| Sent | How many recipients it actually went to |
| When | The relevant date, labelled: Sent, Scheduled for, or Created
|
Quick Filter searches the table. Reload refetches. New Campaign opens the editor.
Which actions appear on a row depends on its status:
| Action | Appears when |
|---|---|
| ✏️ Edit | Draft or Cancelled |
| ✈️ Send Now | Draft or Cancelled |
| 📅 Schedule | Draft or Cancelled |
| 🚫 Cancel Send | Scheduled |
| 📊 View Stats | Sending or Sent — anything that isn't Draft or Cancelled |
| 📋 Duplicate | Always |
| 🗑️ Delete | Always (with one exception — see Deleting) |
Campaign statuses
| Status | Means | Can you edit it? |
|---|---|---|
| Draft | Being built. Nothing sent | Yes |
| Scheduled | Waiting for its send time | No — cancel it first |
| Sending | NX is working out recipients and handing messages off | No |
| Sent | Hand-off complete | No — duplicate it instead |
| Cancelled | A scheduled send was called off. Nothing was sent | Yes |
| Paused | Not used in normal operation — if you see it, ask support | No |
Two things people trip on:
- Cancelled behaves like a second draft. It never sent, so NX lets you edit it, schedule it again, or send it now. (The confirmation dialog says the campaign "will return to DRAFT status" — the badge actually reads Cancelled. Same capabilities either way.)
- Sent is a one-way door. There is no unsend and no re-edit. To send a corrected version, Duplicate and fix the copy.
Building a campaign
New Campaign opens a full-screen editor.
-
Name it in the toolbar field — internal only, e.g.
2026-03 Win-back 60d. -
Get a design in. Any of:
- 🖼️ Load Template — a starter or one of yours
- ✨ AI Generate — describe it
- Build it by hand from the blocks on the right
- ⬇️ Import Design JSON — paste a design you exported
- ⚙️ Settings — sender, subject, preview text, recipients. All the required fields live here.
- Save. The campaign appears in the table as a Draft.
Save refuses if any of Campaign Name, From Name, From Address, Subject is missing — it names the missing fields and re-opens Settings for you. Recipients are not required to save a draft, but a campaign with no lists sends to nobody.
Cancel discards everything since the last Save. There's no draft auto-save.
Full editor detail — templates, AI, personalization tags, design advice — is in §4.
Campaign Settings, field by field
| Field | Required | Notes |
|---|---|---|
| Campaign Name | Yes | Internal label |
| From Name | Yes | What appears as the sender, e.g. Tony's Trattoria. Use your restaurant name, not a person, unless you mean it |
| From Address | Yes | e.g. hello@tonystrattoria.com. Watch the chip underneath |
| Subject Line | Yes | Personalization tags work here |
| Preview Text | No | The grey line next to the subject. Always worth filling in |
| Recipients | No, but | Tick the lists this goes to |
The sender chip
As you type a From Address, a small chip appears telling you what recipients will actually see:
- "Sends natively from your verified domain" — the address is yours and verified. Recipients see exactly what you typed.
-
"Routes through NX shared sender" — the domain isn't verified for you, so recipients see
Tony's Trattoria via NX <noreply@joinnx.com>and replies still come back to your address.
Both deliver. The first performs noticeably better. §7 is the fifteen-minute fix.
Choosing recipients
In Settings, the Recipients section lists every list in the current venue/Enterprise, with its type and either a member count (Static) or "Computed at send" (Dynamic and Customer Query).
Tick as many as you like. Contacts appearing on more than one list are de-duplicated — nobody gets two copies.
If the section is empty, you have no lists yet — go build one (§3).
Before a big send, re-check the lists themselves. A campaign stores which lists, not which people. A Dynamic or Customer Query list re-resolves at send time, so if someone edited the rule since you built the campaign, your audience changed too.
Send Now
The ✈️ action on a Draft or Cancelled row. The confirmation names the lists it's about to go to — read it, that's your last check. Then:
- Status → Sending.
- NX resolves recipients: all ticked lists, de-duplicated by email, suppressed recipients removed.
- The final count lands in Sent.
- Messages hand off in the background — seconds for a small list, a few minutes for a big one.
- Status → Sent once hand-off is complete. Not when every guest has received it.
There is no stop button. Once confirmed, it goes.
Scheduling
The 📅 action. Pick a date and time (nothing in the past). The dialog shows:
- Timezone — your computer's current timezone, and it's what NX uses. If you're travelling or your laptop is set to another zone, that's the zone your campaign will fire in. Check it.
- A confirmation line: Will send Fri, Mar 13, 2026, 10:00 AM (America/Chicago).
Schedule sets the status to Scheduled and shows the send time in the When column.
Good send times for restaurants:
| Goal | Try |
|---|---|
| Weekend plans | Thursday 10–11am |
| Filling a slow weeknight | Same-day, 10am–2pm |
| Weekend brunch | Friday or Saturday morning |
| Special-occasion / catering | 2–3 weeks ahead, mid-week morning |
Avoid Monday morning (inbox triage) and after 8pm (people are eating dinner, not reading email).
To change the time, Cancel Send and schedule again.
Cancelling a scheduled send
🚫 Cancel Send on a Scheduled row. The schedule is dropped and the campaign becomes Cancelled. Nothing was sent; the content is intact; you can edit, re-schedule or send it now.
Duplicating
📋 Duplicate creates <name> (Copy) as a fresh Draft, carrying over the design, subject, preview text, sender and selected lists.
Use it for:
- Sending a corrected version of something already sent
- Monthly campaigns — duplicate last month's, change the offer and the date
- Trying a different subject line on the same design
The copy is a Draft, so nothing is sent until you say so.
Deleting
🗑️ Delete removes the campaign and its per-recipient send history. The stats go with it. Export or screenshot anything you need for reporting first.
A campaign actively Sending can't be deleted — NX asks you to try again in a few minutes. If a campaign is genuinely wedged in Sending (rare, and worth telling support about), the block lifts after about five minutes of inactivity so you can clean it up.
Reading the numbers
📊 View Stats opens a panel with six figures and a percentage against Total Sent:
| Number | Means | What's healthy |
|---|---|---|
| Total Sent | Recipients after de-duplication and suppression | — |
| Delivered | Accepted by the recipient's mail server | 95%+ |
| Opened | Opened at least once | 20–40% for restaurant email |
| Clicked | Clicked at least one link | 2–5% |
| Bounced | Rejected | Under 2% — investigate above that |
| Unsubscribed | Opted out from this campaign | Under 0.5% |
How to read them honestly:
- Clicks are the real signal. Opens are measured with a tracking pixel, and Apple Mail's privacy features report opens that no human performed. Treat open rate as a rough trend, click rate as truth.
- Delivered climbs for minutes; opens and clicks for days. Checking stats 30 seconds after sending tells you nothing. Give it 24–48 hours before judging a campaign.
- A bounce spike means list quality. Old typed-in addresses are the usual cause. Bounced recipients are suppressed automatically, so the problem self-corrects — but a high rate hurts delivery for everyone else in that send.
- Unsubscribes are not a failure. A steady trickle is normal and healthy. A spike means the content or frequency missed — send less, or send more relevant offers.
- Sent lower than expected? That's de-duplication plus suppression doing their job. See §3.
The panel also shows when the campaign was sent, or when it's scheduled for.
Recipient Activity
At the bottom of the stats panel, Load fetches the per-recipient list. Each row shows an email address and its furthest milestone:
| Status | Means |
|---|---|
QUEUED |
Accepted for sending, not handed off yet |
SENT |
Handed to the mail system |
DELIVERED |
Accepted by their mail server |
OPENED |
They opened it (with open time) |
CLICKED |
They clicked a link (with click time) |
BOUNCED |
Rejected — shows PERMANENT/TRANSIENT and the reason |
COMPLAINED |
Marked as spam |
FAILED |
NX couldn't send it — shows why |
The status is the furthest step reached, not a history. Someone who clicked shows CLICKED, not DELIVERED. Use the ↻ button to refresh as events arrive.
This list is the most useful diagnostic in the module:
- One address
FAILEDwith a reason → usually a malformed address - Lots of
BOUNCEDwithPERMANENT→ dead addresses; they're now suppressed -
COMPLAINED→ that person marked you as spam and is now suppressed. Don't chase them - Everything stuck at
SENTafter an hour → tell NX support, with the campaign name
A safe send checklist
Ten seconds each, saves an afternoon:
- [ ] Sent to
Team testfirst and opened it on a phone - [ ] Personalization tags render (no
Hi ,, no12500, notrue) - [ ] Every link clicked and correct
- [ ] Offer has an expiry date
- [ ] Subject under ~50 characters, preview text filled in
- [ ] From Name is your restaurant, and the sender chip is what you expect
- [ ] Correct lists ticked — and you know roughly how many people that is
- [ ] Send time is sensible in your timezone
- [ ] Not the third email this week
Next: §6 Quick Send