A marketplace needs to stop sending welcome messages to invalid seller addresses without treating every delivery failure as proof that an address is invalid. Preserving the explanation takes more work than storing a bounce flag, but it makes the suppression decision reviewable. TL;DR: assess email API providers for high US deliverability by asking whether their evidence can explain and reproduce recipient suppression; use that evidence to qualify candidates before comparing delivery-rate claims.
The constraint is evidentiary: a reviewer must be able to distinguish a failed attempt, a decision to suppress, and a later decision to permit delivery. These are different records. The following design treats a suppression review as a reconstruction exercise, then derives the storage boundary and a minimal Go check from what that exercise needs. It proposes application requirements, not a claim about capabilities shared by all providers.
What must survive when a seller disputes a suppressed welcome email?
Start with the question a marketplace support team would have to answer: why was this destination excluded from this welcome attempt? An aggregate deliverability percentage cannot answer it. Neither can a current boolean, because the current value omits the reason, the applicable address, and the policy that authorized its change. A candidate integration should therefore be assessed against a specific review packet before its advertised delivery rate influences selection.
Consider an illustrative seller record, seller-42, whose welcome attempt used recipient revision 7. The seller later supplies a replacement address at revision 8. These are example identifiers, not production observations. A delayed failure concerning revision 7 must remain attributable to that destination; applying it to whichever address happens to be current would turn accurate historical evidence into an incorrect present restriction.
Keep both revisions.
For this proposed marketplace, the review packet contains the attempt identity, the recipient revision actually used, the original delivery evidence, the interpretation applied to that evidence, and the policy revision behind the resulting action. Record source identity and event identity together, rather than assuming an event identifier is globally unique. Preserve source time separately from application receipt time: the former describes the reported occurrence, while the latter helps reconstruct ingestion. Neither should silently replace the other.
The packet also needs an explicit boundary of inference. A permanent recipient failure can justify suppression only when its documented meaning meets the marketplace's recipient policy; a temporary or unresolved failure must not become an invalid-address finding merely because it is inconvenient to classify. Store the original reason with the normalized result so a reviewer can examine the interpretation. If that evidence is unavailable, record the gap rather than manufacturing certainty.
Evidence has limits.
A complete packet does not establish consent, settle the legal classification of a message, or determine a lawful retention period. The team must review those obligations separately, including access to recipient information and diagnostic payloads. Auditability is a property of this proposed workflow; legal compliance requires a broader assessment.
Reconstruct the decision before designing the callback
Work backward from a review packet. First identify the exact recipient revision and attempt. Then recover the source event, reproduce its classification under the recorded policy, and compare that decision with the stored eligibility transition. Finally, inspect whether a later authorization used the resulting state. This sequence separates a classification defect from a missing event or a dispatch race, which otherwise tend to collapse into the unhelpful statement that email failed.
There is a concrete implementation trap here. If event ingestion commits first and suppression commits later, a crash between the writes can leave an event that appears processed without its intended effect. Reversing the writes can leave a restriction without its explanation. The proposed database transaction should therefore bind deduplication, the recorded decision, and its recipient-state effect together. Enforce uniqueness on the source-account/event-identity pair inside that transaction; a preliminary existence check alone is not the concurrency boundary.
Require one committed effect.
That is the exactly-once mindset appropriate to this ledger: one durable application effect for a logical event, with repeat ingestion returning the original outcome. It is a design requirement, not a promise that notifications arrive exactly once. Authenticate incoming evidence through the selected integration's documented mechanism before allowing it to authorize a restriction, and preserve enough verification context for the team's reviewed audit requirements.
Dispatch introduces a separate boundary. A welcome job can wait while its recipient becomes suppressed, so eligibility must be checked against the destination revision at the defined authorization point. Record that authorization with the attempt. A later restriction can prevent later authorizations; this design cannot retract an attempt already handed to an external transport. Explaining that boundary accurately is more useful than claiming a transaction spans the local ledger and the mail system.
Suppression also needs a scope. In this design, invalid-recipient evidence concerns a destination revision. A consent withdrawal, complaint, or account restriction needs a separate policy, potentially with a broader scope. Replacing an address must not erase the earlier evidence, and replacing an address must not automatically override an unrelated restriction. The additional policy state costs engineering effort, but a single overloaded bounce flag cannot express those distinctions.
Use a small Go check to expose missing explanations
A reconstruction check is useful before enforcement because it reveals whether the proposed review packet can support the decision at all. This minimal example checks record linkage for a suppression decision. It does not validate a provider payload, implement a database transaction, or prove that a classification was correct; those responsibilities remain explicit acceptance requirements.
package evidence import "errors" type Attempt struct { ID string RecipientRevision string } type Evidence struct { SourceAccount string EventID string AttemptID string RecipientRevision string OriginalReason string Classification string } type Decision struct { SourceAccount string EventID string RecipientRevision string PolicyRevision string Action string } func CheckSuppression(a Attempt, e Evidence, d Decision) error { if a.ID == "" || a.RecipientRevision == "" || e.SourceAccount == "" || e.EventID == "" || e.OriginalReason == "" || d.PolicyRevision == "" { return errors.New("incomplete review packet") } if e.AttemptID != a.ID || e.RecipientRevision != a.RecipientRevision || d.RecipientRevision != a.RecipientRevision { return errors.New("recipient or attempt linkage differs") } if d.SourceAccount != e.SourceAccount || d.EventID != e.EventID { return errors.New("decision refers to different evidence") } if d.Action != "suppress" || e.Classification != "permanent_recipient_failure" { return errors.New("packet does not explain recipient suppression") } return nil } The classification string is an internal category chosen for this example. Only an adapter with documented, reviewed mappings should produce it. A successful check establishes that the fields agree under the example's rule; a fabricated but internally consistent packet could also pass, which is why authenticity, policy review, and transactional persistence cannot be delegated to this function.
This is deliberately a narrow check. It gives support tooling a concrete reason to reject an incomplete explanation without confusing structural consistency with a compliance verdict.
How should email API providers substantiate high deliverability rates?
The reconstruction exercise now supplies a selection method. Ask each candidate to demonstrate the same recipient-replacement example, a repeated event, and a temporary failure against documented event semantics. Record what the marketplace can reconstruct, what it must retain itself, and what remains unknown. These are proposed acceptance cases, not published benchmarks or claims about any named service.
| Control arrangement | Evidence the review needs | Engineering trade-off |
|---|---|---|
| Transport controls suppression | An attributable restriction and the documented destination scope | Review depends on the evidence and history the integration makes available |
| Application controls suppression | Original evidence plus a durable local policy decision | The marketplace owns classification, persistence, and policy maintenance |
| Both apply suppression | Local authorization and an explanation for any transport refusal | Reconciliation must account for two independently enforced decisions |
The combined arrangement deserves an explicit disagreement case. If the application permits an attempt but the transport declines it under a separate suppression rule, a local eligibility record explains only part of the outcome. Require evidence that can be attached to the same attempt, or document the unresolved boundary before adoption. More local control creates more maintenance work; less local control makes the integration's available evidence more consequential. Choose according to the review obligation and the team's capacity to maintain it.
Sender authentication belongs in a separate acceptance check. RFC 7208 defines SPF for checking whether a sending host is authorized to use a domain in SMTP identities. Its Section 4.6.4 limits the number of DNS-querying terms evaluated to 10; that is a concrete configuration constraint, not a recipient-validity test or a delivery-rate guarantee. Review the authentication configuration without treating an SPF result as evidence that a particular seller address should remain eligible.
For high US deliverability claims, require a stated definition of delivery, the population being measured, and the measurement window before making a comparison. Without comparable evidence, this article cannot establish a top provider or attribute a delivery percentage. The useful selection output is a documented explanation of which candidate satisfies the marketplace's evidence requirements and which unanswered questions prevent a decision.
Roll out by reviewing disagreements
Begin with observation: construct review packets and proposed suppression decisions alongside the existing path, restrict access to diagnostic data, and investigate disagreements before enabling enforcement. Set retention and retry policies through the team's normal review process. Keeping every raw payload indefinitely is not a substitute for deciding what an audit actually needs.
Use an illustrative acceptance fixture with 4 inputs: the same permanent-failure event twice, a temporary failure, and a delayed failure for a replaced destination. Expect one committed decision for the repeated event, no invalid-recipient finding for the temporary failure, and no restriction on revision 8 from evidence tied to revision 7. Inject a transaction failure as well; after replay, the decision record and recipient state must agree. These are test expectations, not measured results.
Monitor missing packets, unresolved classifications, ingestion delay, and disagreements between authorization and transport outcome. Each points to different corrective work. Retaining diagnostics and investigating mismatches also consumes storage and staff time, so include that maintenance burden in selection without making volatile unit prices the argument.
Enable enforcement only when a sampled restriction can be reconstructed from attempt to evidence to policy to recipient state. That exit criterion makes bounce handling accountable to the marketplace's review needs while leaving unsupported deliverability rankings out of the decision.
References
The transaction boundaries, record shapes, example identifiers, and rollout checks above are proposed application design choices. The public specification below supports the SPF discussion; it does not substantiate comparative provider performance or a legal compliance claim.
Sources
- RFC 7208: Sender Policy Framework (SPF), including Section 4.6.4 on DNS lookup limits: https://datatracker.ietf.org/doc/html/rfc7208
