---
title: "Validate contact data in Typeform"
url: "https://lookvalid.com/integrations/typeform.md"
canonical_url: "https://lookvalid.com/integrations/typeform"
last_updated: "2026-10-22"
type: "how-to"
summary: "Receive each Typeform submission on a small server, check the email domain, and store the result next to the response."
related: ["https://lookvalid.com/integrations.md", "https://lookvalid.com/docs/api/email-domain-check.md", "https://lookvalid.com/docs/quickstart.md"]
---

# Validate contact data in Typeform

Receive each Typeform submission on a small server, check the email domain, and store the result next to the response.

A form is the first place a stranger types an email address, and an answer to a question you asked is easy to trust. Respondents mistype domains or use a throwaway address to reach the thank-you page, and the follow-up email then goes nowhere while the response sits in your results as a real lead.

## What LookValid checks

- [Email Domain Check](https://lookvalid.com/products/email-domain-check.md): Reads the domain of the email answer: mail records, SPF, DMARC, throwaway domains, free providers and role mailboxes. It cannot confirm that the mailbox exists. (1 credit per address checked)
- [Phone Numbering-Plan Validation](https://lookvalid.com/products/phone.md): Checks a phone answer against its country numbering plan and returns E.164. It does not tell you the line is active. (1 credit per valid number)
- [Website Contacts Scraper](https://lookvalid.com/products/website-contacts-scraper.md): For a company website answer, reads the public pages and lists the contact addresses and social profiles they publish. (10 credits per domain with contacts found)

## Connect it in four steps

1. Create a LookValid account and an API key from the dashboard, which a person does once.
2. Register an https address as the webhook for your form, since new webhook addresses must use https, and set the key as the LOOKVALID_API_KEY environment variable on the host behind it so it never appears in the form or its results.
3. Pull the email answer from the submission body, call the function, and if it returns null mark the response as unchecked; if it throws, log the error code and fix. Answer the webhook within 30 seconds either way, because a slow or failing reply makes Typeform retry, and a 404 or 410 reply disables the webhook.
4. Store the signal, throwaway and role mailbox values in the table or sheet where you keep the response, keyed by the response id.

A small server function at an https address that Typeform's Webhooks API sends each submission to, which then checks the email answer. The call is `POST https://YOUR_API_HOST/v1/email-domain-check`.

```js
const API_URL = "https://YOUR_API_HOST/v1/email-domain-check";

export async function validateTypeformEmail(value) {
  const response = await fetch(API_URL, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.LOOKVALID_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      "email": value,
    }),
  });
  const result = await response.json();
  if (!response.ok) throw new Error(`${result.error.code}: ${result.error.fix}`);
  if (!result.found) return null;
  return {
      "email_signal": result.data?.deliverability_signal ?? null,
      "email_disposable": result.data?.disposable ?? null,
      "email_role_mailbox": result.data?.role_account ?? null,
  };
}
```

| Response field | Goes into |
| --- | --- |
| `data.deliverability_signal` | email_signal |
| `data.disposable` | email_disposable |
| `data.role_account` | email_role_mailbox |

## Without code

If you would rather not host a server, point the form's webhook at the address of an automation platform's incoming-webhook trigger and add its generic HTTP request step to call LookValid with the email answer. No dedicated LookValid app is needed, and the step's output can update the row for that response.

## Questions

### What does it cost in credits?

The pricing page lists the credits for the email domain check. You pay one check per submission you choose to verify.

### What does the check not do?

It works on the domain. It cannot prove the mailbox exists, and it will not catch a real domain with a made-up name before the @.

### Where does the key go?

In an environment variable on the server that receives submissions, never in the form. Typeform can also sign each delivery, so the same server can reject requests that are not from your form.

## Sources

- [Webhooks API (Typeform developers)](https://www.typeform.com/developers/webhooks/), read 2026-10-18

## Related

- [LookValid integrations](https://lookvalid.com/integrations.md)
- [Email Domain Check reference](https://lookvalid.com/docs/api/email-domain-check.md)
- [Quickstart](https://lookvalid.com/docs/quickstart.md)
