Cold email deliverability diagnosis is the controlled process of tracing a defined message cohort from submission through SMTP acceptance, deferral or rejection, then using provider feedback and bounded placement observations to isolate list, identity, infrastructure, reputation, sending-behavior, or content defects. “Sent,” “delivered,” and “in the primary inbox” are not interchangeable states.
This canonical owns end-to-end diagnosis. Use the rep-facing authentication guide for acceptance evidence, technical email authentication for DNS implementation, the cold email warmup guide for ramping, cold email compliance for legal analysis, and deliverability monitoring for ongoing tools and alerts. This page does not prescribe universal volumes, warmup schedules, placement targets, or vendor rankings.
Diagnose deliverability as a chain, not one rate
Begin with a falsifiable question: “Why did Gmail acceptance fall for this sending path after the configuration change?” is diagnosable. “Why is deliverability bad?” is not. Name the cohort, provider, period, sender, path, message version, list source, and comparison.
Transport, filtering, and human response are separate layers. RFC 5321 specifies SMTP transport and reply behavior. A receiving server's positive response transfers responsibility for delivery or further relay; it does not provide evidence of primary-inbox placement or reading. Read the SMTP standard for protocol semantics, not a placement promise.
Likewise, absence of a bounce is not proof of an inbox. An accepted message can be filtered, quarantined, placed in another tab or folder, or handled by downstream corporate security. A reply proves a recipient response for that message, not the placement of every non-reply.
Build a delivery-state ledger
Assign a stable message ID and preserve provider message ID, campaign/run ID, sender, recipient domain, receiving-provider classification, submission time, SMTP attempts, final response, authentication results, content hash, list source, suppression check, and later feedback. Never replace raw events with the latest status.
| State | Evidence | What it does not prove |
|---|---|---|
| Eligible | Passed permission, suppression, identity, and campaign rules | Address existence or acceptance |
| Submitted | Sending system handed a unique message to its transport | Receiver acceptance |
| Deferred | Temporary SMTP response with timestamp and attempt | Permanent failure |
| Rejected | Permanent SMTP response or exhausted approved retry policy | The cause without response interpretation |
| Accepted | Receiving system accepted responsibility under SMTP | Folder placement or reading |
| Placement observed | Controlled mailbox or other documented provider evidence | Placement for unobserved recipients |
| Complaint/unsubscribe | Provider or suppression event tied to the message/sender | Why the recipient objected |
RFC 3463 defines enhanced status codes as class, subject, and detail components. Store the complete response text and code rather than flattening everything into “bounce.” Use the status-code specification alongside each provider's current error documentation. The bounce-management canonical owns retry and suppression operations.
Separate observable evidence from inference
Maintain an evidence hierarchy. SMTP replies are transport evidence. Authentication results are identity/path evidence. Controlled seed mailboxes can observe their own placement but may not represent the target population. Provider dashboards describe the traffic and definitions that provider exposes. Replies, complaints, and unsubscribes are recipient actions with selection effects.
Do not calculate inbox placement as “sent minus bounces.” That produces an acceptance residual, not observed placement. Do not treat opens as verified reading or inbox evidence. Google explicitly states in its sender guidelines that it does not track open rates and cannot verify third-party open-rate accuracy.
Label every result as observed, provider-reported, calculated, or inferred. Record the denominator and coverage. If placement was observed for 180 of 900 accepted messages, report 180/900 coverage and keep the remaining 720 unknown.
Freeze a provider-specific baseline
Freeze the analysis window before looking for a favorable segment. Export message-level events and configuration effective during that window. Capture receiving provider, recipient domain, list source and verification time, sender/domain/mailbox, sending IP or pool where available, mail provider, sequencer, authentication alignment, message/content hash, links and tracking configuration, schedule, and server responses.
Do not combine Gmail, Outlook.com, Yahoo, and corporate gateways into one unexplained rate. Provider requirements, feedback coverage, and filtering paths differ. Microsoft's Outlook.com high-volume guidance, for example, applies to its consumer domains and states authentication requirements and hygiene recommendations for the specified sending population. It is not a universal B2B placement formula.
Reconcile: eligible = submitted + policy-blocked + unresolved; submitted = accepted + deferred-active + rejected + unresolved. Investigate unexplained messages before optimizing copy. A missing event pipeline can imitate a delivery defect.
Test six failure layers in order
| Layer | Evidence to inspect | Bounded next step |
|---|---|---|
| Permission and suppression | Source, jurisdiction/use, consent or other authority, unsubscribe/complaint state | Stop unauthorized or suppressed sends; route legal questions |
| Address and list | Source, verification time/status, typo/role/shared/catch-all handling, prior outcomes | Quarantine the affected source; do not infer permission from validity |
| Identity and transport | SPF/DKIM/DMARC results, alignment, PTR/TLS/format, SMTP codes, path | Use approved technical change control and retest representative sends |
| Reputation and feedback | Provider dashboards, complaints, blocks, domains/IPs, shared-pool changes | Stop the affected path; inspect the domain reputation workflow |
| Sending behavior | Volume/time series, bursts, retries, provider mix, mailbox concurrency, changes | Return to the last evidenced stable configuration; avoid universal caps |
| Content and links | Headers, From/Reply-To, subject/body truthfulness, URLs, redirects, HTML, attachments | Test one approved content difference within matched cohorts |
Google's current guidance covers authentication, DNS, TLS, message format, recipient feedback, volume changes, server responses, and reputation. It also advises against purchased addresses and unexpected messages. Apply the exact requirements to the relevant Gmail population and date; do not convert provider guidance into a guarantee.
Run matched diagnostic cohorts
Change one bounded factor at a time. Stratify the eligible list by receiving provider, domain type, source, geography, age/verification state, and persona. Within each stratum, randomly or deterministically assign comparable records to control and candidate configurations before sending. Freeze exclusions and analysis.
Useful comparisons include an approved current path versus a corrected authentication path, incumbent list source versus a reverified extract, or current content versus a version that removes one broken redirect. Do not compare a new Gmail-heavy list at month end with an older Outlook-heavy list at midmonth and call the difference causal.
Predeclare primary outcomes: acceptance by provider, temporary deferral, permanent rejection by status family, complaint or suppression event, and observed placement where coverage exists. Record operational guardrails such as duplicate send, unauthorized send, suppression latency, and unexplained event loss. Replies and meetings may be business outcomes, but this test cannot attribute them solely to placement.
Reconcile a worked delivery cohort
Fictional example—not a benchmark: 1,000 eligible messages enter a frozen cohort. The system records 980 unique submissions, of which 900 receive acceptance, 50 remain in an approved temporary-deferral window, and 30 are permanently rejected. Placement is observable for a matched panel of 180 accepted messages: 132 appear in the intended inbox view, 36 in another folder, and 12 are missing/quarantined.
| Measure | Formula | Result | Limit |
|---|---|---|---|
| Submission completeness | 980 ÷ 1,000 | 98% | Twenty eligible messages need reconciliation |
| Acceptance rate | 900 ÷ 980 | 91.84% | Does not prove folder placement |
| Resolved-placement coverage | 180 ÷ 900 | 20% | Panel may not represent all accepted mail |
| Observed inbox share | 132 ÷ 180 | 73.33% | Applies only to the observed matched panel |
Reporting 132/900 as inbox placement would classify 720 unknown messages as failures. Reporting 900/980 as inbox placement would classify every accepted message as inboxed. Both are wrong. Preserve the state ledger and the observation-coverage denominator.
Change one layer and retest
Write a change record with hypothesis, affected population, evidence, owner, approver, exact configuration, acceptance tests, hard gates, canary size, monitoring window, and rollback. Snapshot DNS, sending-path, suppression, list, and content configuration. Fix the smallest supported defect.
For authentication, the DNS owner should implement and verify changes; this article does not supply generic records. For a list defect, stop the source, preserve previous status, reverify under a declared rule, and never treat technical validity as permission. For a sending-behavior defect, return to the last evidenced stable state and canary. For content, preserve identity and meaning; do not use obfuscation to evade filtering.
Retest with the same definitions and provider mix. Compare message-level states, not only aggregates. Keep the prior path available until the candidate passes and the event ledger reconciles. Continuous alerting belongs in deliverability monitoring; campaign measurement belongs in cold email metrics.
Use hard stop and rollback gates
Stop the affected campaign or path for failed authentication requirements, deceptive sender identity, unauthorized or suppressed recipient, cross-client/domain contamination, uncontrolled duplicate sending, unexplained population loss, broken unsubscribe/suppression, or an unreviewed change to a production sending route. These failures should not be averaged into an overall score.
Provider thresholds are provider-specific operational requirements, not universal quality benchmarks. Evaluate the current official rule for the applicable population. A team may choose a more conservative internal gate based on risk, but it should label that gate as policy rather than attribute it to a provider.
Rollback restores the last approved sender, routing, authentication, volume, content, and suppression configuration. It does not resend the failed cohort automatically. Reconcile retries and message IDs first so rollback cannot create duplicate contact.
Cold email deliverability diagnostic checklist
☐ Freeze provider, cohort, sender, path, content version, list source, and period
☐ Reconcile eligible, blocked, submitted, accepted, deferred, rejected, and unknown
☐ Preserve message IDs, raw SMTP responses, authentication, configuration, and history
☐ Report observed placement coverage; never convert acceptance into inbox placement
☐ Segment provider and receiving path before comparing rates
☐ Check permission/suppression, list, identity/transport, reputation, behavior, then content
☐ Match cohorts and change one bounded factor at a time
☐ Predeclare outcomes, exclusions, hard gates, canary, owner, and rollback
☐ Stop on authorization, suppression, identity, duplicate, or unexplained-loss failures
☐ Retest with the same definitions and disclose unknowns and observation limits
A defensible diagnosis may end with “placement remains unknown for most accepted messages.” That is more useful than a precise-looking rate built from the wrong denominator. Preserve the evidence, narrow the next test, and avoid promising placement or business outcomes that providers and senders cannot guarantee.