Grow · Broadcasts
Write it once. Send it to the right people.
A visual editor for campaigns that hold up in the inbox, sent to segments built from what your product already knows. The contacts, the suppression list and the consent record are the ones your API already uses.
- /broadcasts, Live
- /segments, Live
- /topics, Live
- /templates, Live
01, Editor
Blocks that hold their shape in the inbox.
The editor saves a structured document, not a pile of HTML. When you send, it compiles to email-safe markup: tables where older desktop mail apps need them, columns that stack on a phone, and colour hints for dark mode.
- Headings, text, images, buttons, dividers, spacers, social links, a footer, product rows and HTML.
- A footer with your postal address and an unsubscribe link is added to any campaign that lacks one.
Columns that stack
Up to four columns in a row. On a phone they stack, or stay side by side if you say so.
Brand kit
Your colours, fonts, button shape and footer, applied to every new block.
Saved blocks
Save a header or a product row once and drop it into the next campaign.
Two previews
The compiled email at desktop width and at phone width, before anyone else sees it.
Keyboard first
Move any block without a mouse, with a Move to… menu, and undo or redo every edit.
Your HTML, cleaned
Paste an HTML block and its scripts, iframes, forms and event handlers are removed before it is saved.
02, Personal
Personal, and safe with it.
Merge tags read from the contact record your product keeps up to date, with a fallback for anyone missing a value. Every value is escaped for the place it lands, so a name typed into a signup form can never rewrite your email.
{{ contact.first_name | there }}and any custom property, in the subject, the body and links.- Triple-brace tags such as
{{{contact.first_name|there}}}also work in HTML you send through the API, so templates you bring with you render as they did. - An unknown tag is flagged as an error before sending. It never goes out blank.
TemplateHi {{ contact.first_name | there }},
first_name on the contact | What the reader sees | Why |
|---|---|---|
Asha | Hi Asha, | The value itself. |
| Not set | Hi there, | The fallback after the pipe. |
<b>Asha</b> | Hi <b>Asha</b>, | Shown as text. A contact’s data never becomes markup. |
{{ contact.email }} | Hi {{ contact.email }}, | A value is never read as a new tag. |
03, API
Your templates can live in your repo.
Render the email with whatever your code already uses, send the HTML, and create, schedule or cancel the campaign from a script or your CI. No SDK needed: it is one HTTP call.
POST /broadcastscreates a draft.POST /broadcasts/{id}/sendsends it now, or at a time you give, such asin 1 hour.- A scheduled campaign can be cancelled back to a draft until it starts.
- Recipients and clicked links can be read per campaign, so your own dashboards can use them.
04, A/B tests
Test on a slice. Send the winner to the rest.
Try two subject lines, two senders or two versions of the content on part of the audience. When the test window closes, the version more people clicked goes to everyone who was held back.
- Winners are judged on unique human clicks. Opens are there too, but some mail apps fetch images when a message arrives, so an open is not proof of reading.
- A test waits for its window and for a minimum number of deliveries per version, so an early lead cannot decide it.
- No clear winner? You choose in advance: send version A, or send whichever is ahead.
05, Review
Checked before it leaves.
Every broadcast gets an unsubscribe link, and it will not launch without your postal address. The review also checks your sending domain against the rules the big mailbox providers set for bulk senders, and warns when a message is big enough to be clipped.
- Every campaign carries one-click unsubscribe headers (RFC 8058). Opening an unsubscribe link never unsubscribes anyone by itself, so link scanners cannot opt your readers out.
- Test sends to up to five addresses before a campaign launches.Coming
- Scheduling in your team’s time zone, IST for a new team.Coming Until it ships, a broadcast is scheduled for an exact date and time.
- Sending only to contacts with a marketing consent on record, as every team’s default.Coming
06, Sending
In control while it sends.
A big campaign takes time to go out. You can stop it, and it cannot surprise you halfway.
Pause, resume, cancel
Pause stops new sends at once and resume carries on from where it stopped. Cancel skips everyone not yet sent.
Frozen at launch
The content is locked when the campaign starts, so an edit made halfway cannot reach half your list.
Once per person
Each recipient gets the campaign at most once, even if a worker restarts in the middle of the send.
Checked again as it goes
Suppression is checked for each recipient at the moment of sending. Someone who unsubscribed an hour ago is skipped.
07, Reports
ComingNumbers you can defend.
Delivered, bounced, clicked, unsubscribed and complained, per campaign and per link. Each figure will count one clear thing, and the ones that are easy to misread will say so.
- DeliveredComing
- Accepted by the recipient’s mail server.
- Bounced
- Split into permanent and temporary. A permanent bounce suppresses the address for every later send, campaign or transactional.
- Clicked
- Unique people, per campaign and per link. Clicks made by link scanners are marked as machine events and left out.
- OpenedComing
- Shown with a caution. Some mail apps fetch images when a message arrives rather than when it is read, so opens overstate reading.
- Unsubscribed and complained
- Each one also lands in the consent ledger and the suppression list, so the next campaign already knows.
- Orders and revenueComing
- Orders your code sends to POST /orders, credited to the last human click within 5 days, or else the last human open within 1 day.
Revenue from one call
Once revenue attribution ships, you will send each order from your checkout to POST /orders. It will be matched to the contact and credited to the email they last clicked within 5 days, or else opened within 1 day, so each campaign report can show orders and revenue, in your team’s currency, next to its clicks.
curl -X POST https://api.refiremail.com/orders \
-H "Authorization: Bearer $REFIREMAIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "order-1042",
"email": "[email protected]",
"total_minor": 149900,
"currency": "INR"
}'For the email your team writes, on the same contacts.
Automations
Journeys that respond to events
Audiences
Contacts, topics, segments, consent
Forms
Signup forms with double opt-in
Send your first campaign.
Bring the contacts your product already has. Your transactional code stays as it is.