October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk7 min

Email Deliverability for Node.js: Authenticate Your Domain and Sync Suppressions

A practical guide to custom-domain email authentication, provider suppression rules, and safe Node.js reconciliation of complaints, bounces, and unsubscribes.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a Node.js app, reliable email delivery depends on two connected jobs: authenticate the sending domain with the DNS records your provider requires, and stop sending to addresses the provider has suppressed. Keep your application’s contact data and the provider’s suppression list in sync, but treat complaints, hard bounces, soft bounces, and unsubscribes as different states. DNS records, suppression rules, and SDK methods vary by provider.

What to set up before sending

Use your email provider’s current domain onboarding screen and DNS instructions as the source of truth. SPF, DKIM, and DMARC help receiving providers authenticate mail; bounce handling gives the sending service a way to process delivery failures. A correct setup for one provider is not a template to copy to another.

As an Amazon Associate I earn from qualifying purchases.

Cloudflare Email Sending: a provider-specific DNS example

Cloudflare’s Email Sending guide describes MX records on cf-bounce.yourdomain.com for bounce routing, an SPF TXT record on cf-bounce, a DKIM TXT record on cf-bounce._domainkey, and a DMARC TXT record at _dmarc.yourdomain.com. These are Cloudflare-specific hostnames; use the exact values shown for your own domain in Cloudflare’s onboarding instructions.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Cloudflare treats Email Sending records and Email Routing records separately. Its sending records use the cf-bounce subdomain, while its routing records are on the root domain and use a separate DKIM selector. If you already publish an SPF record, Cloudflare says to add the required mechanisms to that record rather than publish a second SPF record; its documentation also notes SPF’s 10-lookup limit.

Cloudflare says DNS changes can take up to 24 hours to propagate globally, and usually complete in 5–15 minutes for domains using Cloudflare DNS. Those are Cloudflare’s estimates for its DNS environment, not a guaranteed deadline for every DNS host or resolver. Cloudflare’s Email Service domain configuration documentation was last updated September 16, 2026.

Verify each sending function independently

  1. Open the sending provider’s domain setup page and add the records it specifies at your DNS host.
  2. Check each required record in the provider dashboard, including bounce-routing records as well as SPF, DKIM, and DMARC where required.
  3. Use the DNS checking tools recommended by the provider to investigate records that are missing or not yet visible.
  4. Send controlled test messages and inspect the provider’s message or delivery logs to confirm the sending path and authentication results.

Do not assume that verifying inbound routing also verifies outbound sending. Cloudflare documents separate verification for its Email Sending and Email Routing records.

How suppression lists protect delivery

A suppression list is a provider-maintained block on sending to an address the service considers unsuitable, commonly after a delivery failure or a validated spam complaint. Preventing repeated sends to such addresses helps protect domain reputation. Cloudflare warns that high bounce rates or spam complaints can lead inbox providers to flag a domain, route mail to spam, or block it. It recommends SPF, DKIM, and DMARC, list hygiene, and separating marketing and transactional traffic across domains or subdomains so that reputations can be managed separately.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Cloudflare’s 2026 Email deliverability documentation gives the following key-metric recommendations for its product. They are Cloudflare guidance, not universal standards or a promise of inbox placement.

Metric Cloudflare’s stated recommendation
Delivery rate >95%
Hard bounce rate <2%
Complaint rate <0.1%

Why suppression scope and expiry matter

Before syncing provider records into your application, establish what a suppression applies to and how long it remains active. Scope may be account-wide, tenant-wide, or limited to one domain; an address blocked for one sender may not automatically be blocked for another.

Cloudflare scope and matching

Cloudflare distinguishes account scope, which applies to all sending domains and subdomains in the account, from sending_domain scope, which applies only to the exact sending domain. A suppression for a root domain does not automatically match its subdomain. If your app sends from more than one domain or subdomain, preserve the provider’s scope when applying a suppression rather than treating every record as a global block.

Cloudflare suppression lifecycle

Cloudflare’s documented timing applies to its service only. Complaint suppressions do not expire. Eligible soft-bounce suppressions default to 24 hours. Some eligible hard-bounce suppressions expire after seven days; others remain indefinitely when a mailbox or domain does not exist or a recipient-side issue persists through repeated delivery attempts. Not every temporary delivery failure becomes a recipient suppression: Cloudflare gives sender-side authentication or reputation problems as examples that should not be classified that way.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Cloudflare recommends changing or deleting a complaint suppression only after the recipient opts in again through your application. A complaint is not just another transient bounce, so do not remove one as an ordinary support fix. Mailgun likewise says an address on its complaint or unsubscribe suppression lists will not receive mail even if it is allowlisted.

Cloudflare’s suppressed-recipient send behavior

Cloudflare’s “Drop suppressed recipients” setting changes what happens when a send includes a suppressed address. With the setting off, the REST API returns HTTP 400, the Workers binding throws E_RECIPIENT_SUPPRESSED, and SMTP rejects the message. With it on, suppressed recipients are removed and the remaining recipients are processed. A Node.js sender should handle the selected provider’s documented response rather than assume every send either succeeds for all recipients or fails as a whole.

Use a provider-specific Node.js API to inspect suppressions

Mailgun’s Node.js package documents suppression-list methods under mg.suppressions. Its list method is mg.suppressions.list(domain, suppressionType, query?), with examples for bounces, unsubscribes, and complaints. The package also documents get, create, upload, and destroy operations. This is a Mailgun SDK example, not a standard Node.js email API; check the current package documentation and service contract for the version you install.

const result = await mg.suppressions.list(domain, "complaints", query);

The example shows the documented method shape, not a complete runnable integration: the package setup, credential handling, query format, returned data, pagination, and API permissions must be taken from the current Mailgun documentation for your installed version. Do not assume a list call returns every record in one response.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Reconcile provider records with application contacts

Provider suppression records and your application’s contact records serve different purposes. The provider decides whether it will send to an address; your app decides how that address is represented in product data and which workflows may contact it. Preserve both records where appropriate rather than trying to make one system a substitute for the other.

Build an idempotent sync

  1. Read provider state. Retrieve suppression records using the provider’s documented API or SDK. Confirm API permissions and the current rules for query parameters, pagination, rate limits, and available timestamps or cursors.
  2. Preserve record context. Store the provider record identity and timestamps where available, along with suppression type and scope. Normalize the address for matching to an application contact, but retain the original provider value for traceability.
  3. Apply the appropriate contact state. Keep complaint, hard-bounce, soft-bounce, and unsubscribe states distinct. Avoid collapsing them into a single “bad email” flag, because their meaning and provider lifecycle differ.
  4. Make repeated observations safe. Design the sync so seeing the same provider record again does not repeatedly or destructively mutate application state. This is an application design practice, not a guarantee supplied by the provider API.
  5. Keep provider suppression intact. Mailgun advises senders to remove suppressed addresses from contact lists they maintain while retaining the address in Mailgun’s suppression list.
  6. Check mutability before changes. For Cloudflare suppression records, inspect the read_only field before attempting an update or deletion. Cloudflare cautions that mutability should not be inferred from the record’s reason field.

Whether a suppressed address should disable a password reset, account notification, or other product workflow is an application policy decision. Provider suppression documentation does not prescribe account behavior; involve the product owner before changing those workflows.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Choose a polling strategy without assuming guarantees

The cited Mailgun SDK documentation establishes that suppression-list operations exist; it does not establish a universal polling interval, delivery latency, pagination completeness, retry schedule, or record-ordering guarantee. Do not treat a guessed cadence as a provider commitment.

Before setting a production schedule, check the current API contract for pagination or cursors, rate limits, timestamp semantics, retry behavior, and whether the provider offers webhooks or another event mechanism. If the contract does not specify a property, treat it as unknown. Any polling frequency you choose is an application design decision that should account for how quickly your app needs to reflect changes and the provider’s documented limits.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Compare provider behavior before committing

Suppression and integration details are service-specific. Compare the behaviors that affect your sending design rather than assuming one provider’s policy or SDK transfers to another.

Provider example Documented point What to verify for your integration
Cloudflare Email Service Distinguishes account and exact sending-domain suppression scope; documents complaint, soft-bounce, and hard-bounce lifecycles. Required DNS values, scope for each sending domain, suppressed-recipient behavior, record mutability, and current API permissions.
Mailgun Its Node.js package documents list, get, create, upload, and destroy suppression operations; its guidance says to remove suppressed addresses from sender-maintained contact lists while retaining provider suppression. Current SDK version, query and response shape, pagination, rate limits, and the behavior of each suppression type.
Amazon SES The SuppressionOptions API reference names COMPLAINT and hard-bounce BOUNCE as automatic suppression reasons and allows account or tenant scope. Current API and SDK operations for your use case; that API reference does not itself provide a Node.js polling tutorial.

For a multi-domain setup, also check whether suppressions are scoped to an account, tenant, domain, or exact subdomain, and whether marketing and transactional mail should use separate domains or subdomains. The right design depends on the provider’s scope rules and your application’s sending patterns.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.