# Typeform Integration for Email Validation

URL: https://email-validation.org/integrations/typeform/
Updated: 2026-11-06

> Documentation index: https://email-validation.org/llms.txt

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.

[Read the full setup guide](https://email-validation.org/docs/guides/typeform/) [Get an API key](https://email-validation.org/signin/)

- Status: Setup guide
- A webhook relay and a clean script

**Relay and webhook** Cloudflare Worker

Settings

```text
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_SECRET
```

## At 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](https://email-validation.org/app/api-keys/) made for it, with a [daily credit cap](https://email-validation.org/docs/authentication/#limits). 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](https://email-validation.org/docs/guides/typeform/)

## 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](https://email-validation.org/docs/guides/typeform/), which stays the reference when a step does not match what you see.

1. **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.
2. **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.
3. **Add its secrets**: In the Worker’s Settings, Variables and Secrets, add `EV_API_KEY` and `TYPEFORM_WEBHOOK_SECRET`, and any of the optional settings.
4. **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.
5. **Test it**: Submit the form once with `no_mailbox@sandbox.email-validation.org`: the Worker’s log shows `invalid` with the reason `no_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.

## Related

- [The full Typeform setup guide](https://email-validation.org/docs/guides/typeform/)
- [Every relay setting: forms, fields, forwarding and Slack](https://email-validation.org/docs/guides/typeform/#settings)
- [How the relay answers Typeform, so no check is paid twice](https://email-validation.org/docs/guides/typeform/#retries)
- [Check an address before the form is accepted](https://email-validation.org/docs/guides/signup-form-validation/)
- [All integrations](https://email-validation.org/integrations/)
