Skip to content

2026-09-02

Reliability, feedback loop and billing

Cost controls, a bounce feedback loop with measured accuracy, credit packs, async settling, and Turnstile.

  • A shared mailbox answer cache across customers, so the same address is probed once.
  • Bulk runs process in chunks, and each chunk writes its own part file before results are stitched.
  • Provider balance alerts warn before the mailbox partner runs dry.
  • Six @spaw.test test addresses answer fixed verdicts at no cost and are never logged.
  • Every response carries X-Request-Id, repeated in meta.request_id and error.request_id.
  • Publishable keys accept a daily credit cap (429 KEY_SPEND_CAP_REACHED once it is spent).
  • A circuit breaker keeps a struggling mailbox provider from slowing every lookup.
  • Batch requests send their mailbox probes concurrently.
  • A bounce feedback API (POST /v1/email/feedback) and webhook targets for Postmark, Amazon SES, Mailgun, and SendGrid; bounces join the suppression list, deliveries clear it, and the dashboard shows measured accuracy.
  • smtp_checked_at, the 27th response field, records when the mailbox was last probed.
  • Catch-all domains are remembered for a week, and an account's own delivered addresses count as verified for 90 days.
  • Credit packs are sold through Stripe Checkout from the Billing page.
  • callback_url and callback_secret on a lookup re-check an unverified answer after 5 and 20 minutes and POST the settled verdict, signed.
  • Bulk uploads keep the file's own columns, add the verdict columns, and offer ?variant=deliverable|risky|undeliverable downloads.
  • Publishable keys can require a Cloudflare Turnstile token per lookup.

markdown version: /changelog/2026-09-02-reliability-feedback-loop-and-billing.md · atom feed: /changelog.atom

All releases