ZapBounce and n8n

n8n's self-hosted option removes the per-execution cost that shapes every other automation platform, which changes what is worth building here.

A workflow that loops over ten thousand addresses is reasonable in n8n and ruinous in a per-task tool. The constraint becomes rate limiting rather than billing.

Without per-task cost, rate limiting becomes the constraint

An n8n loop will happily fire requests as fast as the node can execute them, which on a self-hosted instance with decent hardware is faster than the rate limit allows.

The result is a workflow that works on a test of ten addresses and returns a wall of 429s on a real list, usually at three in the morning when nobody is watching.

The HTTP Request node has retry settings, and they need configuring rather than accepting. Honor the Retry-After header rather than retrying immediately.

How the data moves

  1. Use the HTTP Request node with retry enabled

    Set the retry count and delay explicitly. The defaults are not tuned for an API with a published rate limit.

  2. Submit a batch for anything list-shaped

    Even without per-task billing, a batch is faster than a loop and lets the server pace probes per receiving mail host.

  3. Receive completion on a Webhook node

    A separate workflow triggered by the completion event, rather than a Wait node polling in a loop.

  4. Verify the signature in a Code node

    The Webhook node exposes the raw body. Hash it before any parsing, or the HMAC will never match.

Setting it up

  1. Add an HTTP Request node pointing at the batches endpoint, with the key in a header credential.
  2. Configure retry on the node with a delay that respects the rate limit.
  3. Add a Webhook node in a second workflow to receive completion events.
  4. Add a Code node that verifies the HMAC signature against the raw body before trusting the event.
  5. Loop the results with the pagination cursor rather than requesting one large page.
  6. Store the key as an n8n credential rather than inline in the node.

n8n: common questions

Loop or batch?

Batch for anything over a few dozen addresses. The server paces probes per mail host, which a client-side loop cannot do.

How do I verify the webhook signature in n8n?

A Code node on the raw body from the Webhook node, before any JSON parsing. Parsing first destroys the bytes that were signed.

Where should the key live?

An n8n credential, so it is encrypted at rest and not visible in the workflow JSON.

Check a n8n export today

100 free checks a month, no card. Unknown results and duplicates are never billed.