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.
Four steps to clean, validated email data across your entire HubSpot database. The integration handles everything automatically once connected.
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.
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.
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.
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.
GTMData processes each HubSpot contact through a multi-step enrichment pipeline designed to maximize email coverage while minimizing wasted credits.
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.
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.
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.
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
GTMData's REST API works with any tool that can make HTTP requests. Here are the most popular integrations our customers use.
Use GTMData as a Clay HTTP enrichment for email finding and validation. Zero errors with soft rate limits.
Build automated email enrichment workflows with n8n's HTTP Request node and GTMData's API.
Connect GTMData to 6,000+ apps. Validate emails on form submissions, CRM updates, and more.
Create sophisticated enrichment automations with Make's visual workflow builder and GTMData's API.
Use GTMData's API directly from Claude Code to validate and find emails programmatically.
Integrate GTMData into any tool or workflow with our simple REST API. Python, JavaScript, Go, and more.
HubSpot is live today. These native CRM integrations are next on the roadmap. In the meantime, use our API with any CRM.
Native CRM integration with custom fields and automated enrichment flows.
Enrich Attio people and company records with validated email data.
Validate and find lead emails directly within Close.
Enrich person records with validated emails directly inside Pipedrive.
Cross-reference and validate Apollo email data with SMTP verification.
Validate prospect emails before they enter your Outreach sequences.
Pre-validate email lists before loading them into Instantly campaigns.
Clean your lead lists with validation before sending through Smartlead.
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.
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.
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.
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.
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.
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']})")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})`);// 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: 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, otherMost 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.
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.
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.
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.
Sign up free, connect HubSpot in one click, and start enriching your contacts with validated email data. 100 free credits included.