Send Email Campaigns
A campaign sends one template to many recipients. This is your bulk marketing path — for one-to-one transactional sends use the public API .
Prerequisites
Before you can create a campaign:
- At least one verified sender domain — the
from_emailyou choose has to live on a domain you’ve authenticated - At least one template — you can’t send a blank message
- Contacts in segments — campaigns send to segments. If you don’t have any yet, build them at Settings → Segments first
If any of these is missing, the campaign create wizard will tell you and link directly to the fix.
Open the wizard
Email → Campaigns → New campaign.
The wizard has 4 steps. You can go Back at any point — nothing is saved until you finish step 4.
Step 1 — Identity
Tell us who the email is from.
| Field | Notes |
|---|---|
| Campaign name (internal) | Just for your records — recipients never see this. e.g. “Diwali sale 2026” |
| From name | The sender display name. e.g. “Acme Store” |
| From email | Pick a verified domain from the dropdown, then edit the local part. e.g. hello@acme-store.com. Must be on a domain in Sender Domains with status=verified |
| Reply-to (optional) | Where customer replies should go (often your support inbox) |
Why does From email matter? Recipients see the
Fromline in their inbox. A friendly one (hello@acme-store.com) gets opened more than a noreply (noreply@acme-store.com). And replying to “noreply” feels cold — let customers actually respond.
Step 2 — Pick a template
Grid of every template you’ve built. Click one to select.
Don’t have a template yet? The wizard will tell you and link to Email → Templates → New so you can build one without losing your campaign-in-progress (the wizard preserves your name/from until you finish).
Step 3 — Audience
Pick one or more segments. We send to every contact in those segments who:
- Has an email address (contacts without one are silently skipped — no error)
- Isn’t on your suppression list (hard-bounced before, complained, or unsubscribed)
- Isn’t a duplicate (the same contact in two segments = one email)
Segment counts shown next to each name help you estimate volume before you commit.
Segments only: this version doesn’t allow ad-hoc contact pickers. If you want to send to a specific list of people, build a segment first at Settings → Segments — that’s also where the audience is reusable across campaigns.
Step 4 — Schedule
Two options:
Save as draft (default)
Best for first-time senders. Creates the campaign but doesn’t send yet. You can review the recipient count on the campaign detail page, then click Send now when you’re ready.
This is the safer flow — it lets you confirm “yes, send to 5,000 people” with one extra click rather than blasting on the wizard’s last step.
Schedule for later
Pick a date/time. We’ll send at that moment.
Time zone: schedule input uses your browser’s local time. We convert to UTC server-side. Don’t worry about DST or zone math.
When you click Create campaign, you land on the campaign detail page.
Send the campaign
If you saved as draft, your campaign sits in Draft status. Hit Send now on the detail page when you’re ready.
A confirmation dialog asks you to acknowledge: “Sends to all matching recipients in your selected segments. This action cannot be undone.”
Click Send — the campaign flips to Sending status. You’ll see live counters tick up:
| Counter | Meaning |
|---|---|
| Recipients | Total addresses we’ll attempt |
| Sent | We’ve handed off to recipient’s MX server |
| Delivered | MX server accepted the message |
| Opened | Recipient opened (tracked via 1×1 pixel — sprint 5) |
| Clicked | Recipient clicked any link (tracked via redirect — sprint 5) |
| Bounced | Hard or soft bounce |
| Unsubscribed | Recipient hit Unsubscribe |
The page auto-refreshes every 5 seconds while sending. You can leave it open or come back later.
Cancel an in-flight campaign
Hit the Cancel button while status is sending. We stop dispatching new messages immediately.
Already-delivered emails can’t be unsent. Cancel just stops the queue from processing more. If you cancelled at 50% sent, the other 50% never receive.
Costs
- First 100 emails per UTC day are free across your entire account (campaigns + transactional API combined)
- Beyond that:
- Marketing email (campaign sends): ₹0.10/email + reseller markup (if your platform is white-labeled)
- Transactional email (public API): ₹0.05/email + reseller markup
- Charges show in Settings → Track Expenses under category
email_marketing
The campaign detail page doesn’t show the running cost yet (sprint 6); use Track Expenses for the breakdown.
Health flags
The campaign detail page surfaces warnings when something looks off:
- Bounce rate > 5% — your list has too many invalid addresses. Bounce rates above 5% damage your sender reputation. Clean the list before the next campaign — remove obvious typos and confirm contacts opted in
- Multiple unsubscribes in quick succession — common when sending to a stale list. Pause and review your audience definition
Best practices
- Start small — first campaign should be 100–500 recipients. Confirm delivery + open rates look reasonable before scaling
- Send time matters — Tuesday/Wednesday/Thursday between 10am–2pm in the recipient’s local time-zone gets the highest open rates for most B2B audiences
- Subject line < 50 chars — Gmail truncates after that on mobile. Make the first 5 words count
- Personalise — use
{{first_name}}in subject + greeting. Open rates jump 20–30% - A/B subject lines — split your audience 50/50, send 2 variants, see which wins. (A/B testing as a built-in feature is sprint 6+)
- Don’t send too often — once-a-week is the typical sweet spot for B2C marketing. Daily blasts kill engagement