use cases

Clean and enrich your CRM

Back-fill email category, disposable flags and Google Workspace / Microsoft 365 detection across your CRM contacts with isBusinessEmail batch checks.

CRMs collect years of contacts from forms, imports, events and integrations. Many are personal addresses, disposable inboxes or typos, and they distort pipeline reports, lead scoring and email deliverability.

What to add to every contact (or company)

Property From Use
Email category category Segment: business, personal, education, government…
Disposable / relay is_disposable, is_relay Suppress from sequences and reporting
Invalid category: "invalid" Remove or fix: the domain can’t receive mail
Typo suggestion did_you_mean Queue for correction
Suite workspace.*.detected, other_suite Segment and route by stack
Microsoft tenant workspace.microsoft_365.tenant_id Account matching; integration readiness

Do it in batches, by domain

Most contacts share domains. De-duplicate to domains first, check those, then join back:

import os
from collections import defaultdict

import requests

contacts = load_contacts()  # [{"id": ..., "email": ...}, ...]
by_domain = defaultdict(list)
for c in contacts:
    by_domain[c["email"].rsplit("@", 1)[-1].lower()].append(c)

domains = list(by_domain)
headers = {"Authorization": f"Bearer {os.environ['IBE_API_KEY']}"}

for i in range(0, len(domains), 100):
    chunk = domains[i:i + 100]
    r = requests.post(
        "https://api.isbusinessemail.com/v1/check/batch",
        json={"items": chunk},
        headers=headers,
        timeout=30,
    )
    r.raise_for_status()
    for result in r.json()["results"]:
        for c in by_domain[result["domain"]]:
            update_contact(c["id"], {
                "email_category": result["category"],
                "uses_microsoft_365": result["workspace"]["microsoft_365"]["detected"],
                "uses_google_workspace": result["workspace"]["google_workspace"]["detected"],
            })

A domain check costs one check, however many contacts share it. Thousands of contacts often reduce to a fraction as many domains.

Mind your daily quota (100 checks on a new account). Spread a large back-fill over a few days, or ask for higher limits. Rate-limit handling is in Rate limits.

Keep it clean

  • Check new contacts as they arrive, with a Zapier, Make, n8n or HubSpot workflow.
  • Re-check domains every few months; verdicts improve, and companies change providers.
  • Address-level flags (role account, +tag, exact-address blocklist) need an email check rather than a domain check. Use those for the contacts you’re about to email.

What this isn’t

We classify domains; we don’t verify that each mailbox exists. Before a large send, use a deliverability verification service as well; see alternatives for how the two differ.

Related: Batch checks · B2B lead qualification