Sender identities
A verified domain cannot send on its own. The thing that sends is a sender identity: the From address, plus the compliance information that goes in every footer. Create them under Email > Senders.
An identity activates only when both conditions hold: its domain is active,
and the compliance fields are filled in. Try to activate one on a domain that is
still verifying and you get a plain error saying so rather than a silent
failure.
If you later edit an active identity in a way that removes a required address or
disclaimer, the identity is paused rather than left sending non-compliant
mail. The save succeeds and sending stops, which is the safe direction: a
paused identity is a problem you notice today, while non-compliant mail is one
you find out about from a regulator.
Each sender is isolated
Every sender identity gets its own isolated reputation on our sending infrastructure. Practically, this means a committee that sends both a high-volume fundraising program and a careful volunteer-coordination program can keep them apart: if the fundraising sender runs into trouble, the volunteer sender is not dragged down with it. It is the reason to create a second identity rather than reuse one, whenever two programs have genuinely different audiences or risk profiles.When sending is paused for you
Our sending infrastructure can disable an individual sender on its own judgment, usually for a complaint rate it considers unacceptable. When that happens the platform does not let campaigns keep failing message by message. Every in-flight campaign on that identity is paused automatically, the reason is recorded on the identity, and your organization is notified. Because identities are isolated, this stops at the one sender. Your other identities keep sending.Building a campaign
A campaign is one message, from one sender identity, to one or more lists. Pick the audience, write the subject and body, and the platform deduplicates recipients across lists and removes anyone suppressed before it counts your audience. A campaign sends to every subscribed contact on its lists that is not suppressed. Each message is also screened at send time: an address rated as likely undeliverable is not sent to, is not counted as a bounce, and shows in the report as Screened as invalid. The builder is organized in five groups:
When the campaign is built, choose Save and continue. The campaign opens on
its own page and moves to the next step it needs: Awaiting test, Awaiting
approval, or Ready. Scheduling is not part of the builder. Once a campaign
is ready, choose Start on the campaign page or on its row in the Campaigns
dashboard, then pick when it sends and in which time zone. The time starts at
right now, so choosing it as is sends the campaign straight away. A scheduled
campaign can be unscheduled from the same places, which returns it to ready.
The send window is worth setting deliberately. It keeps a send from
starting outside civilized hours in the recipient’s time zone, rather than
arriving at 3 AM.
Templates are built separately, under Email > Templates, and the builder
picks from your saved ones. That is where the document editor, Import HTML,
and Draft with Lincoln live. See Templates below.
Link domain. Every link in a campaign is rewritten to a tracked URL, the
open pixel is added for you, and pasted bare URLs become links too, so click
metrics are never optional. Choose which host those URLs use under Link
domain in the builder: any active tracking domain the organization owns or
shares (the
links. host created with your sending domain under Admin >
Domains), or the shared platform link host. Branding the host keeps link
reputation with your domain and matches what recipients see. If the chosen
domain is not active yet the checklist says so and the send falls back to the
platform link host.
The platform link host is e.txtplatform.app, a neutral hostname that carries
no product name. Whichever host a campaign uses serves everything a recipient
can reach: every tracked link, the open pixel, view in browser, the unsubscribe
and preferences page, and the one-click unsubscribe the mailbox provider calls.
A recipient on a branded campaign never leaves your domain.
No A/B testing, and what to do instead
There is no A/B split test. One campaign is one message to one audience. The supported equivalent is Duplicate campaign plus Compare campaigns: duplicate a campaign, change the one thing you want to test, send both to comparable segments, and then compare up to four campaigns side by side on the campaign page. It takes one more step than a split test and gives you a result you can read a week later, rather than a winner picked automatically on an hour of early opens.Templates
Templates live under Email > Templates and are reusable across campaigns. There are three ways to make one:- The document editor. Write the email like a document. Type
/for a menu of blocks (text, headings, lists, buttons, donate buttons, images, columns, sections, dividers, spacers, quotes, footer text, a compliance footer, and a raw HTML block), and@to insert a merge tag as an editable pill. Paste from Google Docs or Notion and the formatting carries over. A Design rail sets the background, card color, font, and heading, text, link, and button colors, and a Checks panel shows live compliance checks, server lint, and the size against Gmail’s 102 KB clip, alongside a desktop and mobile preview. - Import HTML. Paste HTML or upload a file, for a design your team already has or one exported from another tool. An HTML template is edited as text, and a document template can be converted to one, one way, with confirmation.
- Draft with Lincoln. Describe the email and the platform’s AI agent writes it, returning editable blocks in the document editor. See below.
Draft with Lincoln
Lincoln, the AI agent already drafting your text replies, writes email designs too. The Draft with Lincoln button sits in the template editor’s toolbar and on the templates page. Describe the email you want, optionally pick up to six images and your brand colors, and Lincoln returns a finished design: a subject, a preheader, and editable blocks that load straight into the document editor for you to edit. Four things worth knowing before you use it:- It costs $3.00 per draft, at your organization’s own price, and you are charged only when a draft comes back ready. A draft that fails, or that comes back invalid, is never billed.
- It is not instant. Generation runs in the background and usually finishes in under two minutes. Leaving the page does not lose the draft.
- Images must already be in your email library. Add them on the Upload tab of the image picker, or at Assets > File Uploads with the Email images kind. Picking a texting image copies it into the email library for you.
- It replaces the document. If the template already has content, you are asked to confirm before the draft overwrites it.
Drafting in the dashboard
Drafting runs in the dashboard, not over the API. It is paid, asynchronous, and non-deterministic, so it stays a product feature rather than a versioned API contract: Email > Templates > Draft with Lincoln. If the wallet cannot cover the draft, generation does not start. If the balance runs out mid-generation the draft finishes failed and is not billed.The checklist
A campaign will not schedule until its checklist is clear. The single-campaign API read returns ablocked array naming exactly what is unresolved, so an
integration never has to guess:
Some items appear as warnings rather than blockers, including sunset holds,
frequency-cap holds, and warm-up ceilings. They tell you the send will reach
fewer people than the list total, without stopping it.
Test sends
Send a real message to up to 10 addresses before committing. Test sends use sample merge data so you see what a recipient sees. Every campaign requires a successful test send before it can be submitted or scheduled. There is no setting to turn this off. If you edit a campaign after its test, the test is invalidated and you need to send another one before you can submit or schedule. A campaign that was only waiting on its test moves on by itself once the test is accepted: to ready, or to awaiting approval if it requires one. “Editing,” for this purpose, means changing the body or content, the subject or preheader, the sender identity, the lists, the suppression lists, or the template. Changing the name, schedule, timezone, send window, or TTL does not invalidate the test. Two more things to know: test sends are real sends and are billed at the normal per-recipient rate, and they are excluded from campaign statistics and never fire webhooks, because they are your traffic rather than your audience’s. They are also exempt from the warm-up ceiling, so a test never consumes your daily allowance. A test send skips any address on your suppression list and does not charge for it, and test sends are not available while sending is paused for your organization.Approval
A campaign can require a sign-off before it sends. Turn on Require approval before sending in the campaign builder, which setsrequire_approval on the
campaign (false by default). This is a per-campaign choice, not an
organization-wide setting: some campaigns can require approval while others
send as soon as their test is clear.
When it’s on, the campaign needs both a current test send and an approval
before it can be submitted or scheduled. Editing the campaign after approval
invalidates the approval the same way it invalidates the test, using the same
definition of “editing” above.
Warm-up
A brand-new domain that sends 200,000 messages on its first day gets filtered, not delivered. Mailbox providers build reputation from a sending history, and no history plus sudden volume looks exactly like a compromised account. New domains ramp through a daily ceiling:
The ramp advances one step per sending day, but only if yesterday went
well. The step-up is checked each night against your own numbers, and it is
held if the previous day’s bounce rate was 2% or higher or the complaint rate
was 0.05% or higher. The complaint rate divides by messages to providers that
report complaints; Gmail reports none, so Gmail sends are not in it, which is
how mailbox providers and the sending account measure it too. A handful of events on a small day is not a rate, so a
step is never held on fewer than 5 bounces or fewer than 2 complaints. A held
step needs nothing from you: the domain keeps sending at its current ceiling,
the addresses that bounced or complained are already suppressed, and the ramp
resumes after the next clean sending day. The hold is shown with the domain’s
warm-up on the domain’s page under Email > Domains. This is the point of a ramp: a schedule that
climbs regardless of results is a countdown, not a warm-up.
A day on which the domain sent nothing does not count in either direction: it
neither advances the ramp nor holds it. Reputation is built from a sending
history, so a day with no history is no evidence. In practice this means the ten
steps are ten days of sending, not ten days on the calendar: a domain that mails
twice a week takes about five weeks to reach the top step.
Two further points:
- Acquired lists ramp on half steps. Every ceiling above is halved.
- The ramp belongs to the domain, not the sender. Every sender identity on a domain shares the domain’s step and its daily ceiling, and so does every campaign sending from it. A new identity on a warm domain is warm from its first send. Warm-up progress is shown on the domain, under Email > Domains.
A campaign larger than today’s ceiling
It is not rejected. It goes out over several sending days. Before you send or schedule it, the Start dialog shows the schedule day by day. One million recipients from a brand-new domain looks like this:
What to expect while it runs:
- Later days start at the same time of day as the first. A campaign started at 9 AM in its time zone sends each later day’s share at 9 AM.
- The schedule is a projection. Each step up still depends on the previous sending day’s bounce and complaint rates, so it can take longer than shown. It does not go faster.
- Campaigns on the same domain take turns, in the order they joined the line. A campaign joins at its scheduled start time; a resumed campaign joins again at its resume time. Campaigns at 11:00, 11:02 and 11:04 send in that order, whether each one is new or resumed. The campaign first in line gets each day’s allowance first and finishes out before the next one starts. A later campaign sends whatever is left that day, and starts the moment the earlier one finishes. If the earlier campaign is waiting until tomorrow, today’s leftover goes to the later one. The schedule shows days on which a campaign sends nothing as 0 and names the campaigns ahead of it.
- Pausing gives up your place. A paused or unscheduled campaign stops holding the allowance, so the next campaign in line can use it the same day. Resuming it puts it at the back of the line, behind anything that started or resumed before it; what the other campaigns already sent stays sent. To let smaller campaigns go first, resume a large one at a later time.
- The campaign stays in
sendingbetween days. The campaigns dashboard and the campaign page show when the next batch starts, in the campaign’s time zone, and which sending day it is. The campaign page also shows what went out each day. The Email tab of Scheduled Sends (the calendar icon in the header) puts every sending day on the calendar: what went out on past days, and an estimate, marked “est.”, for each day still ahead. - You can pause at any time. Later days do not send while it is paused. Resume works like Start: send now, or pick a date and time and the campaign shows as Scheduled until then, then resumes on its own. The resume time becomes its daily start time for the days after. It says how many recipients are still queued and shows the schedule again, updated for what has already gone out and where the domain is on the ramp. Unschedule calls a planned resume off and leaves the campaign paused.
- You can change it part-way. Pause, then choose Edit. Changing the sender, lists, or content stops the paused send; send a new test and start it again to reach everyone else on the new setup. People who already received it are not sent it again, and anyone no longer on its lists is dropped. Other changes, like the name or send window, keep it paused so you can resume.
Deliverability breakers
If a send is going badly, continuing makes it worse. Three breakers pause a campaign automatically:
The bounce and complaint rates are measured across the campaign (since its last
resume, see below). The complaint rate divides by messages to providers that
report complaints, which leaves Gmail out (it reports none), so it matches the
rate the sending account is held to. Neither is judged until at least 500 messages have
been sent. A complaint pause also needs at
least 3 complaints: one or two spam clicks on a small send are noise, not a
rate, so they cannot stop a campaign on their own. Rates are re-evaluated on a rolling sweep. For
reference, our sending infrastructure begins suspending senders near 5% bounce
and 0.1% complaint; these thresholds sit deliberately below that.
Gmail does not report individual spam complaints to senders, so the complaint
rate above cannot see Gmail. The Gmail spam rate fills that gap: it is read daily
from Google Postmaster Tools for any domain connected there, and when the latest
reported day is at 0.10% or more, every scheduled or sending campaign on that
domain pauses with
pause_reason gmail_spam_rate and the domain’s warm-up
step is held. Google reports this rate about two days late, and it is the
domain’s rate, not one campaign’s. Gmail begins filtering a domain to spam
around 0.30%.
When a breaker trips, the campaign pauses and pause_reason records which one.
Fix the underlying problem, which is usually list quality, then resume.
After a resume, the breaker judges only the mail sent after it: the campaign
gets a fresh 500 sends before its rates are checked again.
Separately, if overall sending quality across the platform rises toward the
level where mailbox providers act, campaigns sending to acquired lists or from
sending domains under 30 days old are held before their next batch, then
continue on their own once it recovers. Nothing is paused or charged while held,
and the campaign page shows the hold. Our team is told the moment a hold starts
and can let a specific campaign continue while it lasts; contact support if a
held campaign matters to you. Every other safeguard on this page still applies
to a campaign let through.
A campaign that has been auto-paused twice cannot be resumed over the API.
It returns 409 EMAIL_CAMPAIGN_RESUME_REQUIRES_SUPPORT and needs a person to
look at it. There is no override, because the breaker exists precisely to stop an
integration retrying through a real deliverability problem.
For what happens to the individual addresses behind those rates, see
Bounces, complaints, and suppressions.
Frequency cap
An optional organization-level cap limits how often any one person is mailed across all your campaigns, with separate 24-hour and 7-day limits. It is off by default; turning it on suggests one message per 24 hours and three per 7 days, which you can change. When enabled, recipients already over the limit are held out of the send rather than the send being rejected, and the campaign reports how many were held. It is the cheapest protection against the most common self-inflicted deliverability wound: three committees, one shared list, one bad week. A re-permission campaign is exempt, since a message asking whether someone still wants your mail is useless if the frequency cap stops it from arriving.Sender requirements scorecard
Gmail and Yahoo publish bulk-sender requirements. The scorecard, on the sender identity page, checks your domain against them continuously so you find out before a mailbox provider tells you:- SPF passes, DKIM signs every message, and both pass together
- A DMARC policy is published, and messages align with it
- Messages are properly formatted
- Valid forward and reverse DNS, and mail sent over TLS
- Spam complaints under 0.10%
- Bounce rate under 2%
- A physical mailing address is present
DMARC progression
DMARC tells mailbox providers what to do with mail that fails authentication. Starting at enforcement would bounce your own legitimate mail from any sending service you had forgotten about, so the policy moves in stages:p=none → p=quarantine at 10% → p=quarantine at 100% → p=reject
Leaving p=none requires all of the following over a 30-day window:
- 98% or better aligned pass rate
- At least 1,000 reported messages
- At least 2 independent reporting sources
none.
We generate the record; you publish it. The record carries a reporting address
where mailbox providers send their aggregate reports, which is what these
thresholds are measured from. If you set your domain up before it did, see
Sending domains and DNS. If your root domain already has a DMARC
record we do not manage, we will not stage an edit to it and the API returns
DMARC_ROOT_DOMAIN_NOT_MANAGED. Make that change yourself.
Dedicated sending
Most senders should use shared sending, where reputation is pooled and warm from day one. A dedicated managed sending pool is worth it only at sustained high volume, where your own reputation is an asset rather than a liability. Dedicated sending is per sending domain, because sending reputation lives on the domain. Each pool is $35.00 per month, one pool per sending domain, billed to the organization that owns the domain. An organization can turn it on for several of its domains, and each is billed separately. If you send for several clients on several domains, this also keeps one client’s list problem from affecting the others’ IPs. Turn it on from Email > Domains, on the domain’s row or its page. The domain must be verified (active) first. It is recommended for domains sending roughly 100,000 or more emails a week on a steady schedule; below that, shared sending usually delivers better. Warm-up usually takes up to about six weeks, and the pace depends on how much you send to each mailbox provider. The domain’s campaigns keep sending through shared IPs until warm-up ends, then switch automatically. Plan it well ahead of an election deadline, not during one. Dedicated IPs need steady sending afterwards to stay healthy. Turning it off stops billing at the end of the current month, with no mid-month refund, and the domain goes back to shared sending. Turning it on again later starts a new pool and a new warm-up. A domain with dedicated sending on cannot be removed until you turn it off. If the monthly renewal cannot be charged before the grace period ends, the pool is released, the domain returns to shared sending, and your organization is notified with how to turn it back on. Three conditions you may hit:DOMAIN_NOT_ACTIVE means the domain is not
verified yet, POOL_ALREADY_ACTIVE means the domain already has a pool and the
request did nothing, and POOL_CAPACITY_EXHAUSTED means the capacity cap has
been reached and you should contact support.
Two conditions you may hit: POOL_ALREADY_ACTIVE means your organization already
has one and the request did nothing, and POOL_CAPACITY_EXHAUSTED means the
capacity cap has been reached and you should contact support.
Tracking
Tracking is not optional and does not need configuring. On every send:- Every link is rewritten to a tracked URL on your link domain. That includes bare URLs you pasted into the text without making them links.
- An open pixel is added, an invisible one-pixel image that loads when the message is displayed.
- A view-in-browser link is available, which renders the message as a web page for recipients whose client mangles it. The browser version does not count as an open, though its links are still tracked.
Opens are approximate
Take open rates as a trend, not a count. Two things distort them in opposite directions, and neither is fixable by any sender:- Apple Mail Privacy Protection loads the pixel for every message, whether or not the recipient looked at it, which inflates opens.
- Recipients who never load images never register an open, even after reading and acting on the message, which deflates them.
Reporting
Each campaign has one page, and that page is its report. Open it from the campaign’s name or Report on the Campaigns dashboard. The top of the page carries the same actions as the dashboard row, anything holding the campaign back (waiting for approval, paused, warming up), and Campaign details: the sender, subject, preview text, lists, and schedule. Details stay open until the campaign starts sending, and the results below them appear once it does. The report opens on tiles covering sent, delivered, opened, clicked, click-to-open, bounced, complaints, unsubscribed, and cost, with the corresponding rates. Below them:
CSV export builds the full recipient-level file in the background and gives
you a download link valid for seven days. Figures on the page are cached for 60
seconds.
Test sends and seed addresses are excluded from every number, though they are
still billed, because they are your traffic rather than your audience’s. Seed
addresses are the inboxes you list under Email settings, up to 25. Every
campaign also goes to them, sent with the first batch, so your own team can see
where it lands. A seed address that is on your suppression list is not sent
to. They are not part of the audience count and never fire webhooks.
Compare campaigns puts up to four campaigns side by side, which is the
supported way to evaluate a change in subject line, sender, or creative.
