forms

Qualify HubSpot form leads with isBusinessEmail

Enrich HubSpot form submissions with work-email verdicts and Google Workspace / Microsoft 365 detection, and route leads with workflows.

isBusinessEmail for HubSpot forms

HubSpot forms already have a built-in option to block common free email providers. isBusinessEmail adds what a static list can’t: disposable and relay detection, typo suggestions, an unknown lane for brand-new domains, and which suite the company runs, including the Microsoft tenant ID.

A good split: keep HubSpot’s own blocking on the form if you want a hard stop, and use isBusinessEmail to enrich and route every contact after submission.

1. Create contact properties

In HubSpot, create custom contact properties to hold the verdict:

Property Type Example
email_category Single-line text or dropdown business, personal, disposable…
email_recommendation Dropdown allow, review, block
uses_google_workspace Single checkbox true
uses_microsoft_365 Single checkbox false
microsoft_tenant_id Single-line text GUID

2. Call the API when a form is submitted

Pick the option that matches your HubSpot plan and tooling.

Option A: workflow custom code action. On plans that include custom code in workflows, enroll contacts on form submission and run:

// HubSpot workflow custom code action (Node.js).
// Add IBE_API_KEY as a secret and "email" as a property to include in code.
// Uses global fetch (Node 18+ runtimes); on older runtimes use the bundled axios.
exports.main = async (event, callback) => {
  const email = event.inputFields['email'];
  let r = {};
  try {
    const res = await fetch('https://api.isbusinessemail.com/v1/check', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.IBE_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ email }),
    });
    if (res.ok) r = await res.json();
  } catch (e) {
    // fail open: leave properties empty
  }
  callback({
    outputFields: {
      email_category: r.category ?? '',
      email_recommendation: r.recommendation ?? '',
      uses_google_workspace: r.workspace?.google_workspace?.detected ?? false,
      uses_microsoft_365: r.workspace?.microsoft_365?.detected ?? false,
      microsoft_tenant_id: r.workspace?.microsoft_365?.tenant_id ?? '',
    },
  });
};

Then add Edit record actions that copy the output fields into the properties above.

Option B: an automation tool. Trigger on new HubSpot form submissions or contacts in Zapier, Make or n8n, call the API, and update the contact.

Option C: your own server. Subscribe to contact creation through HubSpot’s developer platform, call the API, and update the contact through the CRM API. Best for high volume, since you can cache by domain.

3. Route with workflows

With the properties filled in, branch your lead-routing workflow:

  • email_recommendation is allow → assign an owner, create a deal.
  • uses_microsoft_365 is true → route to the rep who sells your Microsoft integration.
  • email_category is personal → nurture sequence instead of sales.
  • email_category is disposable → suppress.

Tips

  • Every enrolled contact uses one check. Enroll only new form contacts, not your whole database. For a one-off back-fill, use the batch endpoint from a script.
  • HubSpot’s plan features and action names change. Check HubSpot’s documentation for custom code and webhook actions on your plan.

Official docs: HubSpot Knowledge Base and HubSpot Developers. See also: B2B lead qualification.