ZapBounce and Make

Make bills per operation, and its iterator module makes it very easy to turn one scenario run into several thousand operations without noticing.

An iterator over a list, each item hitting an HTTP module, costs one operation per address per module. Two modules inside the loop doubles it.

The iterator multiplies operations by the length of your list

A scenario that iterates a thousand-row array through an HTTP module and a router consumes at least two thousand operations. On a mid-tier plan that is a meaningful share of a month.

The alternative is an aggregator: collect the addresses into one array, submit them as a job in a single HTTP call, and handle the results in a second scenario that polls for completion.

That turns thousands of operations into a handful, and it lets the server pace probes properly, which produces better results as well as a smaller bill.

How the data moves

  1. Aggregate before the HTTP module

    An Array Aggregator collects the iterator's output into one bundle, which the jobs endpoint takes in a single call.

  2. Poll for completion

    A scheduled scenario calls GET /v1/jobs/{id} and starts the results scenario once the job completes.

  3. Route on the verdict

    A router after the results parsing sends valid, catch-all and unknown down different paths without re-checking anything.

  4. Use a data store to avoid re-verification

    Make's data stores can hold a verdict per address, so a scenario that runs daily does not re-check what it checked yesterday.

Setting it up

  1. Build the scenario with an iterator feeding an Array Aggregator rather than an HTTP module.
  2. Submit the aggregated array to the jobs endpoint in one HTTP call.
  3. Create a second scheduled scenario that polls the job status.
  4. Parse the results and route on the verdict.
  5. Store verdicts in a Make data store keyed by address to avoid repeat checks.
  6. Keep the key in a Make connection rather than inline in the HTTP module.

Make: common questions

Why is my Make scenario so expensive?

Almost always an iterator feeding modules one item at a time. Aggregate and batch instead.

How do I know a job is done?

A scheduled second scenario that polls the job status. Polling with a sleep inside one scenario costs operations for the whole wait.

Can I cache verdicts?

Yes, in a data store keyed by address. Check it before calling out and the daily scenario stops re-verifying stable data.

Check a Make export today

100 free checks a month, no card. Unknown results are refunded.