Native HubSpot Integration

HubSpot email enrichment
that actually works

Connect your HubSpot portal to GTMData and automatically validate existing emails, find missing ones, and stamp every contact with enrichment data. No CSV exports, no manual work. Your CRM stays clean and your outbound stays deliverable.

View API Docs

How HubSpot Email Enrichment Works

Four steps to clean, validated email data across your entire HubSpot database. The integration handles everything automatically once connected.

1. Connect HubSpot

Authorize GTMData with one click via OAuth. We request only the scopes we need: contacts read/write and properties read/write. Your data never leaves your HubSpot portal.

2. Auto-Create Properties

We automatically create 8 custom contact properties under a dedicated "GTMData Enrichment" property group. No manual setup required. These properties appear in your HubSpot contact records immediately.

3. Select & Enrich Lists

Choose which contacts or lists to enrich. GTMData processes each contact by first validating existing emails, then finding missing emails using the contact's name and company domain.

4. Results Stamped on Contacts

Every enrichment result is written directly to your HubSpot contact properties. Build smart lists, trigger workflows, and segment your database based on email quality data.

The Enrichment Workflow

GTMData processes each HubSpot contact through a multi-step enrichment pipeline designed to maximize email coverage while minimizing wasted credits.

Validate Existing Email

If the contact already has an email address, GTMData performs a full SMTP verification. We connect to the mail server, check MX records, and verify the mailbox exists. The result is stamped as Valid, Invalid, Catch-All, or Disposable. This costs 0.25 credits per validation, and invalid results are free. You only pay when we confirm a valid or catch-all mailbox.

Find Missing Emails

For contacts without an email (or with an invalid one), GTMData uses the contact's first name, last name, and company domain to find a verified email address. We test up to 16 naming conventions (first.last, flast, firstl, etc.) via SMTP until we find a deliverable match. Found emails are written to thegtmdata_found_emailproperty. This costs 1 credit per successful find. Unsuccessful lookups are free.

Stamp Results on Contact

Every piece of enrichment data is written back to the contact record via the HubSpot API. This includes the email status, confidence score, email provider, naming convention, catch-all flag, and timestamps. You can use these properties to build HubSpot smart lists (e.g. "all contacts with valid emails enriched in the last 30 days") or trigger HubSpot workflows based on enrichment results.

8 Custom Contact Properties

GTMData automatically creates a GTMData Enrichment property group on your HubSpot contacts with the following fields. These properties are available in reports, lists, workflows, and the contact timeline.

Email Status

gtmdata_email_status

Valid, Invalid, Catch-All, Disposable, Not Found, or Missing Data

Found Email

gtmdata_found_email

The verified email address discovered by GTMData email finder

Email Provider

gtmdata_email_provider

The email provider (Google Workspace, Microsoft 365, etc.)

Is Catch-All

gtmdata_is_catchall

Whether the domain accepts all emails (catch-all configuration)

Confidence Score

gtmdata_confidence

Confidence level of the email match (0 to 1)

Email Convention

gtmdata_convention

The naming pattern used (e.g. first.last, flast, firstl)

Last Validated

gtmdata_last_validated

Timestamp of the most recent SMTP validation check

Last Enriched

gtmdata_last_enriched

Timestamp of the most recent email finder enrichment

Native CRM Integrations — Coming Soon

HubSpot is live today. These native CRM integrations are next on the roadmap. In the meantime, use our API with any CRM.

Salesforce

Coming Soon

Native CRM integration with custom fields and automated enrichment flows.

Attio

Coming Soon

Enrich Attio people and company records with validated email data.

Close CRM

Coming Soon

Validate and find lead emails directly within Close.

Pipedrive

Coming Soon

Enrich person records with validated emails directly inside Pipedrive.

Apollo

Coming Soon

Cross-reference and validate Apollo email data with SMTP verification.

Outreach

Coming Soon

Validate prospect emails before they enter your Outreach sequences.

Instantly

Coming Soon

Pre-validate email lists before loading them into Instantly campaigns.

Smartlead

Coming Soon

Clean your lead lists with validation before sending through Smartlead.

Works with any tool

API & Webhook Integration

Don't see your tool listed? GTMData's REST API and webhook support let you integrate email validation and email finding into any workflow. Use our API directly from your code, or connect via no-code platforms like Make and Zapier.

REST API

Simple JSON API with endpoints for single email validation, email finding, and batch operations. Authenticate with an API key and start making requests in minutes. See the full API documentation for details.

Webhooks

For batch and async operations, GTMData can send results to your webhook URL when processing completes. Ideal for large lists where you don't want to poll for results. Configure webhook URLs in your dashboard settings.

No-Code Tools

Use GTMData with Make (Integromat), Zapier, n8n, or any HTTP-capable automation platform. Our API is a standard REST endpoint that works with any HTTP action or webhook trigger module.

Integration Examples

Get started quickly with code snippets for the most common integration patterns. Every example uses our REST API, which you can call from any language or platform.

Python

enrich.py
import requests

API_KEY = "gtm_live_..."
BASE_URL = "https://api.gtmdata.co/v1"

# Validate an existing email
resp = requests.post(f"{BASE_URL}/validate", json={
    "email": "tim.cook@apple.com"
}, headers={"Authorization": f"Bearer {API_KEY}"})

result = resp.json()
print(f"Status: {result['status']}")  # valid, invalid, catchall

# Find an email by name + domain
resp = requests.post(f"{BASE_URL}/find", json={
    "first_name": "Tim",
    "last_name": "Cook",
    "domain": "apple.com"
}, headers={"Authorization": f"Bearer {API_KEY}"})

result = resp.json()
print(f"Found: {result['email']} ({result['status']})")

JavaScript / Node.js

enrich.js
const API_KEY = "gtm_live_...";

// Validate an email
const validate = await fetch("https://api.gtmdata.co/v1/validate", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ email: "tim.cook@apple.com" }),
});
const { status } = await validate.json();
console.log("Email status:", status);

// Find an email
const find = await fetch("https://api.gtmdata.co/v1/find", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    first_name: "Tim",
    last_name: "Cook",
    domain: "apple.com",
  }),
});
const result = await find.json();
console.log(`Found: ${result.email} (${result.status})`);

Clay (HTTP Enrichment Column)

Clay HTTP Enrichment
// In Clay, add an HTTP API enrichment column:
// Method: POST
// URL: https://api.gtmdata.co/v1/find
// Headers: { "Authorization": "Bearer gtm_live_..." }
// Body:
{
  "first_name": "{{First Name}}",
  "last_name": "{{Last Name}}",
  "domain": "{{Company Domain}}"
}

// Map response fields to new columns:
// $.email       -> Found Email
// $.status      -> Email Status
// $.confidence  -> Confidence
// $.convention  -> Email Convention

Make (Integromat) / Zapier

HTTP Module Configuration
// Make: Use the "HTTP - Make a request" module
// Zapier: Use the "Webhooks by Zapier" action

// Step 1: Trigger (new CRM contact, new row, etc.)
// Step 2: HTTP POST to https://api.gtmdata.co/v1/find
//
// Headers:
//   Authorization: Bearer gtm_live_...
//   Content-Type: application/json
//
// Body (JSON):
{
  "first_name": "{{trigger.first_name}}",
  "last_name": "{{trigger.last_name}}",
  "domain": "{{trigger.company_domain}}"
}

// Step 3: Use the response to update your CRM
//   - email:      the found email address
//   - status:     valid / invalid / catchall
//   - confidence: 0 to 1
//   - provider:   google, microsoft, other

Why GTMData for HubSpot Email Enrichment

Most enrichment tools give you a CSV to upload. GTMData writes results directly to your HubSpot contacts so your team can act on the data immediately.

Real SMTP Verification

We do not guess or rely on databases. Every email is verified in real-time against the actual mail server. This means fewer bounces and better sender reputation when you run outbound campaigns from HubSpot sequences or email tools.

Pay Only for Results

Invalid emails, failed lookups, and contacts missing required data are all free. You are only charged credits when GTMData delivers a verified result. This makes enrichment cost-effective even for large databases with messy data.

Re-Validate Anytime

Email addresses go stale. People change jobs, domains expire, and mailboxes get deactivated. Run enrichment on your HubSpot lists periodically to keep your email data fresh. The gtmdata_last_validated timestamp tells you exactly when each contact was last checked.

Ready to enrich your HubSpot contacts?

Sign up free, connect HubSpot in one click, and start enriching your contacts with validated email data. 100 free credits included.

API Documentation