The six-step guide covers the decisions. This one covers the clicks: which button, which field, what to type in it. Roughly two hours of work spread across five weeks, because four of those weeks are spent waiting on purpose.
This walkthrough names the stack we use ourselves (Google Workspace for mailboxes, Cloudflare for DNS, Instantly for sending) because a guide that says "your email platform" cannot tell you which checkbox is wrong.
None of it is an endorsement and nothing is sponsored. Microsoft 365, any registrar's DNS panel, and Smartlead or Lemlist all work the same way. The record values and the principles are identical everywhere; only the menus move. Written September 2026. Interfaces drift, so trust the intent over the exact wording.
A domain bought for this purpose, kept separate from the one your invoices go out on. If it ever burns, you throw it away rather than repair it.
brightwave.co.uk, buy brightwavehq.co.uk, getbrightwave.co.uk or brightwave-group.com. The reader should recognise it as you.
.com and .co.uk are equally fine. Avoid the cheap new endingsDomain age is a real deliverability factor and it is the one thing you cannot buy later. A six-week-old domain collects rejections that an identical, correctly configured two-year-old domain does not. We have watched exactly that happen on a technically perfect setup.
If a campaign is anywhere on your horizon, buy the domain today. It is a few pounds a year and it is the cheapest deliverability improvement available.
Three of them, not one. Volume comes from more mailboxes sending a little, never from one mailbox sending a lot.
yourname@: a real person, and the one most replies come tooutreach@team@Check Admin → Apps → Google Workspace → Gmail → End User Access and confirm access is enabled for that user or organisational unit. A connection that times out before it ever asks for a password is almost always this setting, not a bad password. We lost a fair while to that one.
Four kinds of record. All of them go in Cloudflare under the domain → DNS → Records → Add record.
Google Workspace gives you these during setup. Modern setups use a single record:
| Type | Name | Content | Priority |
|---|---|---|---|
| MX | @ | smtp.google.com | 1 |
Delete any MX records the registrar added by default. Leaving a stray one in place sends a share of your mail somewhere you are not reading.
| Type | Name | Content |
|---|---|---|
| TXT | @ | v=spf1 include:_spf.google.com ~all |
Your sending platform may tell you to add its own include:
include:spf.theirplatform.com. Before you add it, check that the
hostname actually publishes a record.
If it does not, your SPF does not fail. It returns a permanent error. Most checkers show that as a warning rather than a failure, mail keeps going out, and nothing looks broken. On one of our own domains that ran unnoticed across 2,146 messages over eleven weeks, during which SPF never once passed.
And you may not need it at all. When Google Workspace holds the
mailboxes, most platforms send through Google, so
include:_spf.google.com already covers it and the extra include is not
just broken, it is unnecessary. Part 04 shows the check.
google._domainkey and that value as the content| Type | Name | Content |
|---|---|---|
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:you@yourdomain.co.uk |
Start at p=none. That is monitoring only: it changes nothing about
delivery and asks receivers to send you reports. After two weeks of clean
reports, change p=none to p=quarantine. Do not start
at quarantine; if something is misconfigured you will not find out until your mail has
already been disappearing for a fortnight.
p=none with a reporting addressPublishing a record and having it work are different things. This is the step almost everybody skips, and it is where the expensive mistakes are found.
On a Mac or Linux machine, in Terminal. On Windows, use nslookup -type=TXT or any online DNS lookup tool.
dig +short TXT yourdomain.co.uk dig +short TXT google._domainkey.yourdomain.co.uk dig +short TXT _dmarc.yourdomain.co.uk dig +short MX yourdomain.co.uk
Each should return something. An empty answer means the record is not published, whatever the dashboard says.
Take every hostname named in your SPF record and look it up on its own. If your record
says include:spf.theirplatform.com, then run:
dig +short TXT spf.theirplatform.com
Not failing. Erroring, which most tools report as a warning. Remove the include. If the platform sends through Google Workspace, the Google include already covers it and nothing is lost.
Two minutes. Almost nobody does it. It is the single highest-value check in this document.
spf=pass, dkim=pass and dmarc=passpermerror or none on any line sends you back to part 03Three mailboxes in, warm-up on, and nothing sent to anybody real for four weeks.
Sixty emails a day from three mailboxes is ordinary. Sixty from one is a pattern, and it is the pattern filters are looking for. The cost is the same either way: it is three licences rather than one, and it buys you the only safe route to volume there is.
This is the shortest part and the one that has cost us the most. Every item below is a default we did not check, and each one cost real time before we found it.
| Setting | Do this |
|---|---|
| Open and link tracking | TURN IT ON. It can be off by default. If it is, your open rate is not low. It does not exist, and every number you look at for weeks is meaningless. This caught us twice on two different campaigns. |
| Automatically pause on high bounce rate | Usually at Settings → Preferences → Outreach Preferences. Leave it on, but know it exists and know where it lives. When it fires, a stopped campaign looks exactly like a slow one. See part 10. |
| Unsubscribe link header | Turn it on. It adds the opt-out into the message headers where mail clients can offer it natively. Good for deliverability, and it helps satisfy the opt-out obligation that applies to every message. |
| Provider matching | Turn it on if your mailboxes are Google. It sends Google-to-Google where it can, which measurably helps. |
| Automatic subject line optimisation | Leave it off for now. It needs hundreds of sends per variant before it means anything, and switched on early it will pick a winner from noise. Revisit once you have volume, and set it to judge on replies rather than opens. |
| Stop sequence on reply | On. Nothing loses a warm reply faster than the follow-up arriving anyway. |
Tracking that was off cannot be turned on retrospectively. Every send made while it was off is unmeasurable forever. You cannot go back and find out what those weeks did.
Nothing to do. That is the hard part, and skipping it undoes parts 01 to 06.
Warm-up is building a sending history so the domain is not a stranger when your first real email arrives. There is no way to compress it and no setting that substitutes for it.
Run your Winnowed count, build the list, and write the three emails from part 09. By the time the four weeks are up you want to be pressing go, not starting to think about copy.
It is not a setup phase you switch off at launch. Leave it on permanently alongside the campaign. It keeps a baseline of ordinary conversation under your sending, which is what a real mailbox looks like.
Suppression check first, then dedupe, then upload. In that order, because the first two cannot be undone after the third.
The leads search usually matches on email address, not company name. If a company search returns nothing, search a fragment of the address instead. It is not a bug and the record is not missing.
Three emails at day 1, day 3 and day 10. Subject line variants on the first one only.
The platform does not branch by which step 1 variant a lead received. Every lead flows into one shared step 2 and one shared step 3 regardless. Adding variants there creates a test you cannot read.
Only step 1 gets variants. It took us a while to work that out.
With 1,000 leads across three variants you get a few hundred sends each, which is enough, eventually. At 25 sends per variant it is noise, and we have read far too much into a difference that turned out to be nothing. Wait, then judge on replies rather than opens.
Four checks before you press go, then one number that matters more than the dashboard.
| When | Check |
|---|---|
| Day 1, an hour after launch | Mail is actually going out. Any immediate bounces |
| Day 2 | Bounce rate. Above 5% and something is wrong with the list. Pause and look before it pauses you |
| Day 4 | Bounce categories, not just the total. See below |
| Day 7 | First read on replies worth having. Write the week's four numbers down |
A paused campaign and a slow campaign look identical on a dashboard showing lifetime figures. Both sit there displaying a reassuring, unchanged number.
We lost twenty-one days to exactly this. The automatic high-bounce pause from part 06 had fired, the campaign had stopped entirely, and the averages looked stable. It read as deliverability quietly recovering. It was a stopped campaign.
Every check you make, look first at how many emails went out in the last three days. If that is not moving, nothing else on the page means anything.
Not before a run of clean days with no reputation-based rejections. Then 20 → 25 → 30 per mailbox, a week apart, and one policy-blocked bounce resets the clock. There is no prize for getting there faster and the downside is weeks of repair.
One row a week in a spreadsheet: sent, bounced, replied, conversations. Four numbers, taken the same day each week. Six weeks of that tells you more than any dashboard, and it is the only thing that survives you changing tools.