July 2026 deliverability tune-up checklist: SPF, DKIM, DMARC, unsubscribe, and complaint-rate fixes to make before Q3 campaigns

deliverabilitygmailyahoo mailtutorial

July is the point where many email programs discover that their Q3 campaign plan is more ambitious than their sending setup.

The DNS records look familiar. The sending platform says authentication is enabled. The campaign team has an unsubscribe link in the footer. Then a new audience, a new subdomain, or a sudden volume increase exposes the part of the mail path nobody tested.

This checklist is framed for a July 2026 tune-up before Q3 campaigns. If Q3 mail is already running, use it before the next significant send. The goal is not to collect screenshots of settings. The goal is to prove that the final message sent by every real path is authenticated, aligned, easy to leave, and unlikely to generate complaints.

Google's current Email sender guidelines and sender guidelines FAQ apply to mail sent to personal Gmail accounts. Yahoo publishes its own Sender Requirements & Recommendations. These requirements are not a universal deliverability guarantee, but they are a useful minimum operating standard for a Q3 sender program.

The short version

Before approving a Q3 campaign, verify these six things on a live sample from every promotional sending path:

  1. The sending IP and envelope domain are represented correctly in SPF, with no accidental second SPF record and no lookup-limit error.
  2. DKIM passes with the expected signing domain and selector, and the signature survives the final message assembly path.
  3. DMARC passes through aligned SPF or DKIM for the visible From: domain. A policy of p=none is a monitoring starting point, not the finish line.
  4. Marketing mail has RFC 8058 one-click unsubscribe headers, a visible body link, and suppression that happens promptly.
  5. Complaint signals are measured per provider, stream, campaign, and audience, not hidden inside one domain-wide average.
  6. Someone can pause the affected stream quickly when authentication, unsubscribe, or complaint data turns bad.

Run the checks against the delivered message and the real endpoint. An ESP configuration page can be correct while a downstream relay, second platform, or template variant is still sending something else.

Start with the sender inventory

The most useful deliverability fix is often finding a sender that was never included in the original audit.

Make a current inventory of every system that can place your domain in a From: header. Include campaign platforms, product marketing tools, support systems, event software, billing systems, recruitment tools, local business units, and scripts that send directly through an SMTP relay.

For each sender, record:

  • visible From: address and domain
  • envelope-from or Return-Path domain
  • DKIM signing domain and selector
  • sending IP, host, or provider pool
  • message category and owner
  • SPF dependency
  • DMARC alignment result
  • unsubscribe implementation
  • last live test date
  • pause or rollback owner

Do not treat a vendor's name as a sender identity. A platform may use one domain for its dashboard, another for the envelope, and a customer domain for DKIM. The values in the final headers are what receivers evaluate.

Send a representative message from each promotional path to a controlled mailbox. Save the raw source and the SMTP result. Test a normal campaign, a template with the most tracking, and any path that changed since the last quarter.

For background, building a sender inventory with DMARC reports explains how aggregate reports can reveal senders that do not appear in documentation.

SPF: make the authorization list complete and small

SPF answers whether the host delivering a message is authorized to send for the envelope-from domain. It does not authenticate the visible From: address by itself, and it does not replace DKIM.

Check the record itself

For each envelope-from domain:

  1. Query TXT records and confirm there is one SPF record beginning with v=spf1.
  2. Check that every legitimate outbound system is represented by the correct include:, ip4:, ip6:, or other mechanism.
  3. Remove retired providers and old IP ranges after confirming that no live stream still uses them.
  4. Confirm the final mechanism matches your intended policy, such as ~all during a controlled migration or -all once the inventory is complete.
  5. Test the record from more than one resolver after DNS changes propagate.

The one-record rule is easy to miss. Multiple SPF TXT records do not combine into a larger allow list. Receivers can return a permanent error instead.

Count DNS lookups, not just visible includes

SPF has a limit of 10 DNS-querying terms during evaluation. An include can contain more includes, redirects, or mechanisms that perform DNS lookups. A record that looks short can still exceed the limit.

Use an SPF evaluation tool or inspect the full include chain. Count include, a, mx, exists, and redirect lookups. Avoid copying a provider's record into another provider's record without understanding the combined chain.

If a new campaign platform would push the record over the limit, do not solve it by randomly deleting an existing sender. First identify which systems are actually active. Then consolidate mail paths, use a provider-supported authorization design, or remove obsolete senders. SPF's 10-DNS-lookup limit covers the failure modes in more detail.

Confirm SPF where it matters for DMARC

SPF can pass while DMARC fails if the SPF-authenticated domain is not aligned with the domain in From:. Capture the delivered Authentication-Results header and check both the SPF result and its authenticated domain.

For example, this is not enough on its own:

From: offers@example.org
Return-Path: bounce@mailer.example.net
SPF: pass (mailer.example.net)

The SPF result can be valid for example.net and still be unaligned with example.org. Either align the envelope domain or make sure DKIM provides the aligned DMARC pass.

DKIM: prove the final message is signed

DKIM gives the receiver a cryptographic way to verify the signing domain and selected message headers. It also provides the stable domain identity that many reputation and feedback systems use.

Verify every selector used by the live paths

For every sample message:

  1. Confirm DKIM-Signature is present.
  2. Confirm dkim=pass in the receiver's authentication results.
  3. Record the d= signing domain and s= selector.
  4. Query the selector's TXT record, such as selector1._domainkey.example.org.
  5. Confirm the published public key is complete and parses correctly.
  6. Check that the signing domain is the expected organizational domain for DMARC alignment.

A DKIM key can exist in DNS while the live platform signs with a different selector. Test the message, not just the record.

Use a 2048-bit RSA key where the provider supports it. Google requires at least a 1024-bit DKIM key for mail to personal Gmail accounts and recommends 2048 bits when supported. A longer key does not fix a missing signature, a stale selector, or a message changed after signing.

Look for changes after signing

A message can leave the campaign platform with a valid signature and arrive with dkim=fail after a footer, tracking URL, MIME part, or header is rewritten. Compare the platform's captured message with the delivered raw source.

Pay particular attention to:

  • link tracking and URL rewriting
  • HTML or text footers added by gateways
  • subject or display-name changes
  • unsubscribe headers added after the DKIM signer runs
  • MIME conversion between the application and final relay

For one-click unsubscribe, the DKIM signature must cover list-unsubscribe and list-unsubscribe-post. This is a separate check from merely seeing those headers in the source. DKIM canonicalization and common breakage and DKIM selector rotation are useful follow-ups.

DMARC: check alignment, then decide the policy

DMARC evaluates the visible From: domain and requires at least one authenticated method to pass with alignment. SPF alignment uses the authenticated envelope domain. DKIM alignment uses the d= signing domain.

For each live sample, record:

  • From: domain
  • SPF result and SPF authenticated domain
  • DKIM result and d= domain
  • DMARC result
  • applied policy and disposition, if present
  • source system and campaign identifier

This is the result to aim for:

From: offers@example.org
SPF: pass (example.org)
DKIM: pass (example.org)
DMARC: pass

Both aligned methods are preferable when the mail path supports them. If a forwarding hop later breaks SPF, aligned DKIM still gives the message a chance to pass DMARC. If a gateway modifies the body and breaks DKIM, aligned SPF may still help on a direct path.

Review the record and the reports

Check that the domain has one syntactically valid DMARC record at _dmarc.example.org. Confirm that its rua destination is authorized and monitored. Aggregate reports should show whether all known senders pass, whether an unknown source is impersonating the domain, and whether a new sender is missing alignment.

Starting or remaining at p=none can be appropriate while the inventory is incomplete. It tells receivers to collect evidence without asking them to quarantine or reject mail. It does not make an alignment failure harmless, and it does not protect recipients from spoofing.

Once legitimate traffic passes consistently and unknown sources are understood, plan a controlled move toward enforcement. Use a staged policy and observe the result after each change. DMARC policy modes and DMARC pct rollout cover the tradeoffs.

Do not use a successful DMARC result as proof that a campaign is wanted. Authentication establishes authorization. It does not establish consent, relevance, or a healthy complaint rate.

Unsubscribe: test the action a mailbox provider sees

For bulk senders, Google requires one-click unsubscribe for marketing and promotional messages, plus a clearly visible body link. Yahoo requires easy unsubscribe, a visible body link, and processing within 2 days. Google recommends fulfilling requests within 48 hours.

The final promotional message should contain headers like these:

List-Unsubscribe: <https://example.org/unsubscribe/opaque-token>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

RFC 8058 requires the message to have a valid DKIM signature covering both headers. Its HTTPS endpoint must identify the recipient and list, accept the POST without cookies or login, and process the request without an HTTPS redirect. Use an opaque or hard-to-forge token so an attacker cannot easily unsubscribe arbitrary recipients.

The visible body link may lead to a preference page. The RFC 8058 header endpoint should directly perform the relevant unsubscribe action. A mailto: option can be useful as an additional fallback, but it does not replace Google's required HTTPS one-click method for bulk promotional mail.

Run this endpoint test

Extract the HTTPS URL from the delivered header and test it as a machine would:

curl -i -X POST \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data "List-Unsubscribe=One-Click" \
  "https://example.org/unsubscribe/opaque-token"

Then verify all of the following:

  1. The response does not require authentication, cookies, or a browser session.
  2. The POST is not redirected to a preference page.
  3. The token removes the address from the intended list or promotional stream.
  4. The suppression record is available to every sender that can target that stream.
  5. A subsequent campaign cannot select the address through a stale export.
  6. A test message does not arrive after the suppression SLA expires.

Repeat this test for each ESP, brand, region, template family, and promotional message type. A footer link on the main newsletter does not cover a forgotten product-announcement workflow. One-click unsubscribe in 2026 has a longer audit sequence.

Complaint rate: create room below the ceiling

Google's current guidance says to keep the Postmaster Tools spam rate below 0.10% and avoid reaching 0.30% or higher. Google's FAQ says bulk senders above 0.3% are ineligible for mitigation until the rate remains below that level for 7 consecutive days. Yahoo requires bulk senders to stay below 0.3% and calculates its rate from mail delivered to the inbox.

These figures are provider-specific signals, not one universal complaint-rate formula. For internal reporting, use:

complaint rate = confirmed complaints / messages delivered * 100

Do not use messages queued or attempted as the denominator when comparing streams. Keep sent, accepted, delivered, complained, unsubscribed, bounced, and deferred counts separate.

Split the rate before it hides the cause

Track complaint and unsubscribe events by:

  • recipient provider
  • primary domain and subdomain
  • DKIM signing domain
  • sending IP or pool
  • message category
  • campaign and template
  • acquisition source
  • audience age and engagement segment

Gmail Postmaster Tools reports on personal Gmail traffic and may omit data when volume is too low to protect privacy. Missing dashboard data is not a zero complaint rate. Verify the domain using the DKIM signing domain or SPF Return-Path domain that actually identifies the traffic, and add subdomains separately when they need independent visibility. See Google's Postmaster Tools setup guidance.

Yahoo's Complaint Feedback Loop is based on DKIM-signed mail. Enroll each relevant DKIM domain, process ARF complaints, and suppress the complaining address from the affected promotional stream. A CFL count will not necessarily match Yahoo's inbox-delivered rate, so label the denominator and time window clearly.

Use operating bands before the campaign

The following are internal control bands, not provider policy:

BandRateAction
Greenbelow 0.05%Continue and review the trend.
Watch0.05% to below 0.10%Do not expand into colder audiences. Check frequency and unsubscribe.
Amber0.10% to below 0.20%Pause volume expansion and isolate the campaign or segment.
Red0.20% to below 0.30%Stop the suspect promotional segment and investigate before resuming.
Critical0.30% or higherStop the affected promotional stream, preserve only genuinely necessary transactional mail, and begin recovery.

The correct response to a complaint spike is not to move the same audience to a fresh IP or subdomain. Find the cause first. Common causes include an unclear subscription promise, a frequency increase, stale recipients, a misleading subject or sender name, a broken unsubscribe path, or a new acquisition source with poor consent quality.

For more detail, see spam complaint rate control in 2026.

The Q3 preflight sequence

Run the following sequence at least once before the first large Q3 campaign and again after any sender or template change.

1. Freeze the inventory

Export the systems, domains, selectors, IPs, message types, owners, and suppression sources. Mark every entry that has not produced a live sample in the current quarter.

2. Send controlled samples

Send from every promotional path to personal Gmail and Yahoo test mailboxes where those providers matter. Preserve the raw source and delivery result. Do not rely only on a preview from the sending platform.

3. Inspect authentication

Confirm SPF and DKIM pass. Confirm DMARC pass. Confirm the aligned domain is the one intended for that From: identity. Investigate any none, neutral, softfail, permerror, temperror, dkim=fail, or alignment mismatch before launch.

4. Inspect unsubscribe

Confirm both RFC 8058 headers, DKIM coverage for those headers, the visible body link, direct POST behavior, list-specific suppression, and the actual processing time.

5. Check reputation signals

Review Gmail Postmaster Tools, Yahoo CFL events, internal complaints, unsubscribes, bounces, deferrals, and recent changes. Compare the same provider and denominator rather than combining unlike data.

6. Approve the audience and rate

Remove recent complainers, unsubscribers, hard bounces, and recipients outside the subscription promise. Start with the most engaged audience when the template, sender, domain, IP, or volume is new. Keep the rate consistent and avoid an immediate doubling of the previous volume.

7. Name the stop condition

The campaign owner must know which alert pauses the send, who can pause it, and what evidence is required before resuming. A control that requires three approvals during an active complaint spike is not an effective control.

Fixes to make before launch

If the preflight finds a problem, use this order:

  1. Stop the affected promotional path if messages are failing authentication or producing a rapid complaint spike.
  2. Correct the final outbound path, not just the application configuration.
  3. Remove stale SPF mechanisms and publish the required DKIM key before testing again.
  4. Fix the From: alignment or sign with an aligned DKIM domain.
  5. Repair the one-click endpoint and suppression job, then test the delivered headers and POST.
  6. Suppress the affected audience instead of moving it to a new infrastructure identity.
  7. Resume with a small, engaged segment and watch provider-specific results before expanding.

Do not make several unrelated changes at once. If authentication, content, audience, and infrastructure all change in the same campaign, a later improvement will not tell you which fix worked.

A steady operating cadence

The July tune-up should become a repeatable control rather than a quarterly scramble.

Every send

Run the campaign gate, record delivered and complaint counts, confirm suppression is available, and keep a sample of the final message.

Daily during a launch

Review provider dashboards, SMTP deferrals and rejections, complaints, unsubscribes, bounces, and suppression latency. Pause expansion when an internal band is crossed.

Weekly

Compare each provider, stream, sender domain, DKIM selector, IP pool, and audience segment with the last healthy campaign. Re-test a one-click endpoint after any platform or gateway change.

Monthly

Reconcile the sender inventory with DMARC reports. Remove retired SPF dependencies, review selectors, confirm DMARC report delivery, and check that every campaign owner still has a working stop procedure.

The result to aim for

Q3 readiness is not a green checkmark in an email platform. It is evidence from the final message and the operating process around it:

  • every legitimate sender is known
  • SPF authorizes the real envelope senders without exceeding its lookup budget
  • DKIM passes on the assembled message
  • DMARC passes with alignment for the visible From: domain
  • promotional recipients can unsubscribe with one action and stop receiving that stream promptly
  • Gmail and Yahoo complaint signals are monitored separately
  • the audience, volume, and stop conditions are understood before the send

Authentication protects the identity of the mail. Unsubscribe protects the recipient's choice. Complaint-rate controls protect the reputation built by every campaign before it. Treat all three as one preflight system, and the next Q3 launch will have room to handle an unexpected sender, a bad segment, or a provider feedback delay without turning a small defect into a quarter-wide deliverability incident.

Main point

The practical July 2026 fix is to test the whole path, not to add another isolated DNS record. Inventory the senders, verify SPF and DKIM on live mail, require aligned DMARC, exercise the RFC 8058 POST, measure complaints against delivered mail, and pause the stream that is causing harm.

That is the tune-up that makes a Q3 campaign safer before the campaign volume makes every weak assumption visible.

Previous Post