Pre-send QA: 20 checks that save your campaign
Every email team has a horror story. A broken link sent to 80,000 people. A subject line that still reads "[TEST] FW: final v3 REAL". A personalization tag that greeted half the list with "Hi, {first_name}". These are not rare edge cases. They happen every week, at companies of every size, and the root cause is almost always the same: no checklist, or a checklist that nobody follows.
Why a pre-send checklist matters
Email is unforgiving. There is no "edit after publish" button. Once you hit send, the message exists in inboxes, cached on servers, forwarded to colleagues. A typo on a blog post is a quiet fix. A typo in a subject line seen by 50,000 people is a support ticket avalanche and a screenshot on social media.
The 20 checks below come from real mistakes we have seen across hundreds of email operations. Some take seconds. None take more than five minutes. Together they turn "ready to send?" from a gut feeling into a verifiable process.
Run through them in order. The sequence matters: content first, then technical, then delivery infrastructure. Fixing a broken link is pointless if the list itself contains 30% dead addresses.
Content & copy
Subject line: length, clarity, no leftover test text
Keep it under 50 characters for mobile. Read it out loud. If it sounds like something you would skip in your own inbox, rewrite it. Search for "test", "draft", "v2" — these survive into production more often than anyone admits.
Preheader text
If you leave the preheader empty, the email client pulls the first line of body text, often "View in browser" or "Having trouble viewing this email?". That is wasted real estate. Write 40–90 characters that complement the subject line without repeating it.
Personalization tokens
Send a test to yourself and check every dynamic field. What does the email look like when first_name is empty? If your fallback is "there" and the result reads "Hi there," that is fine. If the fallback is missing and it reads "Hi ," with a hanging comma, fix it before sending.
Spelling and grammar
Run a spellcheck. Then have a second person read it. Automated tools catch "teh". They do not catch "We are excited to announce our new produce" when you meant "product".
CTA: one primary action, visible without scrolling
If a reader spends six seconds on your email — and they will — can they tell what you want them to do? One button, above the fold. Repeat it at the bottom if the email is long, but the first instance needs to be visible immediately.
Links & images
Every link works
Click every single one. Not hover — click. Check that the destination page loads, that tracking redirects resolve, and that UTM parameters are correct. A broken main CTA link means the entire campaign is wasted.
Unsubscribe link present and functional
Required by CAN-SPAM, GDPR, and every major mailbox provider. Gmail and Yahoo now mandate one-click list-unsubscribe headers for bulk senders. If the unsubscribe link is missing or broken, your domain reputation takes the hit before the complaint even reaches you.
Images load, have alt text, and look right without images
Outlook blocks images by default. So does Apple Mail with "Protect Mail Activity" in certain configurations. Your email needs to make sense with rectangles where the images should be. Alt text is not optional; it is the fallback experience for a significant share of your list.
Design & rendering
Mobile rendering
Over 60% of email opens happen on mobile. Send a test to your phone. Check that text is readable without pinching, buttons are tappable with a thumb, and nothing overflows horizontally. Gmail app, Apple Mail, Outlook mobile — test at least these three.
Dark mode
Dark mode inverts or adjusts colors in ways you did not plan for. A logo with a transparent background disappears. Light gray text on white becomes invisible on dark. Turn on dark mode and look at the email. If the CTA button vanishes, you have a problem.
Plain-text version
Some clients default to plain text. Some spam filters compare the HTML and plain-text parts — large discrepancies raise flags. If your ESP auto-generates the plain-text version, review it. Auto-generated text from complex HTML layouts often looks like garbage.
List & segmentation
Correct segment selected
Double-check the segment name, size, and filters. "All subscribers" and "Active subscribers last 90 days" can differ by 40%. Sending a win-back email to your most active users is embarrassing. Sending a premium offer to your entire list instead of paying customers is expensive.
List is validated
When was the last time you ran this list through a validator? If it has been more than three months, addresses have gone stale. People change jobs, abandon inboxes, get their accounts deleted. A quick pass through uChecker before sending catches dead addresses, spam traps, and disposable emails before they damage your sender score.
Suppression lists applied
Unsubscribes, hard bounces, spam complainers, legal opt-outs — all must be excluded. Most ESPs handle this automatically, but if you imported a list or switched platforms recently, verify that suppressions carried over. Sending to a previous complainer is one of the fastest ways to tank domain reputation.
Technical & deliverability
From name and reply-to address
The from name is the first thing people see. Is it your brand name, a person at your company, or a generic "noreply"? Make sure it matches what the recipient expects. And if someone replies, does the reply-to go somewhere that is actually monitored?
SPF, DKIM, DMARC are passing
Send a test to a Gmail address. Open it, click the three dots, select "Show original." You should see SPF: PASS, DKIM: PASS, DMARC: PASS. If any of these fail, fix the DNS records before sending to your full list. Since 2024, Gmail and Yahoo require all three for senders above 5,000 messages per day.
Spam score check
Run the email through Mail Tester or GlockApps before sending. A score below 7/10 means something is wrong: spammy phrases, missing headers, blacklisted links. Catching it now costs nothing. Catching it after sending costs deliverability.
Tracking and analytics
Are open tracking and click tracking enabled? Are UTM parameters on every link? Do they match the campaign name you will look for in Google Analytics later? A campaign you cannot measure is a campaign you cannot improve.
Send time and time zone
Is the scheduled time in your time zone or the recipients'? Sending at 10:00 AM EST to a list that is mostly in Moscow means it arrives at 5:00 PM. If your ESP supports send-time optimization, turn it on. If not, at least make sure you are not sending at 3 AM local time for your main audience.
Final test send
Send the final version to yourself and at least one colleague. Not a preview — an actual send through the production pipeline. Open it on phone, desktop, and webmail. This is the last chance to catch everything the previous 19 checks missed.
The goal of a QA checklist is not perfection. It is catching the obvious mistakes that feel catastrophic once they reach 50,000 inboxes. Fifteen minutes of checking saves hours of damage control.
Quick reference: check order
- Subject line and preheader — readable, no junk words
- Personalization — fallbacks work
- Copy — proofread by a second person
- CTA — one button, visible immediately
- Links — every one clicked and resolving correctly
- Unsubscribe — present and functional
- Images — loading, with alt text
- Mobile rendering — tested on a real device
- Dark mode — nothing disappears
- Plain-text version — readable
- Segment — correct, right size
- List — recently validated
- Suppressions — applied
- From / reply-to — correct
- SPF / DKIM / DMARC — PASS
- Spam score — above 7/10
- Tracking and UTM — in place
- Send time — right time zone
- Test send — to phone and desktop
- Colleague has reviewed and approved
Item 12 takes two minutes. Upload your list to uChecker and invalid, risky, and disposable addresses are flagged before they can hurt your deliverability.
