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_recommendationisallow→ assign an owner, create a deal.uses_microsoft_365is true → route to the rep who sells your Microsoft integration.email_categoryispersonal→ nurture sequence instead of sales.email_categoryisdisposable→ 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.