Integrations
Typeform integration
Check the email answers of every new Typeform response with a small relay in your own Cloudflare account, and get each result in the log, at a URL of yours or in Slack. A clean script checks the responses a form already has and writes a CSV you match up by response id.
- Status: Setup guide
- A webhook relay and a clean script
Worker secrets
EV_API_KEY your API key
TYPEFORM_WEBHOOK_SECRET 32 or more random characters
Typeform: Connect → Webhooks → Add a webhook
URL your Worker’s URL
Secret the same value as TYPEFORM_WEBHOOK_SECRETAt a glance.
- Status
- Setup guide. Not listed on a marketplace yet: you set it up yourself in a few steps, below and in the full guide.
- For
- Teams who collect sign-ups, leads or registrations with Typeform and want to know which addresses will bounce before they follow up, without changing the form itself.
- You need
- A Typeform form with an Email question, a Cloudflare account for the relay (the Workers free plan runs it), a webhook secret of at least 32 random characters, and an API key made for it, with a daily credit cap. The clean script also needs Node.js 22 or later and a Typeform personal token that can read responses.
- Costs
- 1 credit = 1 validated address, as with any API request. Free: unknown results, API errors, malformed addresses and test addresses on sandbox.email-validation.org.
- Full guide
- Read the full setup guide
Typical uses.
Know before you follow up
Each new response is checked a few seconds after it is submitted. Each result names the Email question and holds its status, reason and recommended action.
Hear only about problems
Set NOTIFY_ON to problems, and your URL and Slack get only the results whose action is not send.
Clean past responses
The clean script checks a form’s completed responses and writes a CSV with one row per answer. Running it again skips every answer already in the file, so only new responses are checked.
Set it up. 5 steps.
The short version of the full setup guide, which stays the reference when a step does not match what you see.
Create a key and a secret
Create an API key with Validate addresses and a daily credit cap, and a random webhook secret of at least 32 characters, for example the output of openssl rand -hex 32.
Deploy the relay
Deploy relay.js from the guide as a Cloudflare Worker, with Wrangler or by pasting it into a new Worker’s Edit code in the dashboard.
Add its secrets
In the Worker’s Settings, Variables and Secrets, add
EV_API_KEYandTYPEFORM_WEBHOOK_SECRET, and any of the optional settings.Add the webhook
In Typeform, open the form, then Connect, Webhooks, Add a webhook. Paste the Worker’s URL, set Secret to the same value as the relay’s, save and turn the webhook on.
Test it
Submit the form once with
no_mailbox@sandbox.email-validation.org: the Worker’s log showsinvalidwith the reasonno_mailbox, at no cost.
Good to know.
- Typeform has already accepted a response when its webhook fires, so the relay reports a bad address a few seconds later but cannot block or undo the submission.
- Typeform’s public API has no call to tag or change a response, so the result is not stored in Typeform: the reports and the CSV carry the response id instead.
- Act on the action rather than the status: spam traps and known complainers are valid with the action remove.
- Test with your own submission rather than Typeform’s Send test request button: its sample response is checked like any other and can use a credit.
- The log never holds the address, and the forward and the Slack message hold it only when you set INCLUDE_EMAIL to true.
Updated · Maintained by the email-validation.org team