A campaign is a single email send to a group of your subscribers. You write the content once (or reuse a template), pick a segment, and fire.
Campaign lifecycle
Draft → (optional) Scheduled → Sending → Sent
→ Cancelled| Status | Meaning |
|---|---|
draft |
Editable — body, subject, and segment can still be changed |
scheduled |
Locked to a send time — only the send time and name can be changed |
sending |
In progress — recipients are being queued and emails are going out |
sent |
Complete — all recipients processed (some may have failed delivery) |
cancelled |
Cancelled before send started |
Creating a campaign
In the dashboard → Newsletter → Campaigns → New Campaign:
- Give the campaign a name (internal label, not shown to subscribers)
- Write or paste a subject line
- Write the email body in HTML (or start from a saved template)
- Choose a segment (or send to all active subscribers)
- Save as draft
IMPORTANT
When you create a campaign from a template, the campaign copies the template body at that moment. Editing the template later does NOT change the campaign. This is intentional — scheduled sends are deterministic: the email that goes out is the exact body you approved when you scheduled it.
Sending immediately
From the campaign detail page → Send now.
What happens:
- The service resolves your recipient list (segment filter + exclude unsubscribed/bounced/suppressed)
- Credits are charged upfront:
Math.ceil(recipients / 5)credits - If the charge succeeds, one email job is queued per recipient
- The campaign status moves to
sending - Jobs process in batches of 50, delivered via your email provider
- When all recipients are processed, status moves to
sent
If you have insufficient credits, you'll get a 402 error and nothing is queued. No emails go out.
Scheduling for later
From the campaign detail page → Schedule → pick a date and time (your local timezone — converted to UTC internally).
- The campaign locks its body at the moment you schedule it
- A Durable Object alarm fires at exactly the scheduled time and triggers the send
- You can change the scheduled time or cancel the campaign before it fires
NOTE
Once scheduled, only the send time and campaign name can be changed. To edit the body, cancel the campaign and create a new draft.
Segments
Segments let you send to a subset of your subscribers. You define a segment with filter rules:
| Filter | Example | Matches |
|---|---|---|
| Tag | "tag": "vip" |
Subscribers with the vip tag |
| Status | "status": "active" |
Active (confirmed) subscribers only |
| Subscribed after | "subscribedAfter": "2026-01-01" |
New subscribers since Jan 1 2026 |
Segments can combine multiple rules. The recipient count shown in the dashboard is an estimate — it may be slightly higher than the actual send count because suppressed addresses are excluded at send time (not at segment creation time).
Viewing results
After a campaign sends, the dashboard shows:
| Metric | Definition |
|---|---|
| Sent | Total emails processed (queued and attempted) |
| Delivered | Confirmed delivery by the email provider |
| Opens | Unique opens tracked by pixel (where supported by the email client) |
| Clicks | Unique link clicks tracked by URL redirect |
| Bounced | Hard or soft bounces reported by the provider |
| Failed | Jobs that exhausted all retries without a provider confirmation |
Hard bounces automatically add the address to the global suppression list — that address won't receive emails from any Vlozi tenant in future.
Test send
Before sending to your full list, send a test email to yourself:
Dashboard → campaign → Send test → enters your account email.
Test sends cost 1 credit regardless of audience size. They are not tracked in the campaign stats.