BetterContact
Sales IntelligenceRun waterfall B2B contact enrichment and lead search through BetterContact, chaining multiple data providers until a record resolves. Agents fill missing emails and phone numbers before a sequence starts.
What This Integration Enables
BetterContact is not another email finder. It is a router across email finders. Start Enrichment queues a batch of leads and BetterContact tries multiple data providers in sequence until one of them returns a work email or a direct phone number, which changes the economics of the whole step. You stop paying to ask a single vendor a question it may not be able to answer, and start paying for records that actually resolve. For an agent, that means a lead which fails enrichment has genuinely failed rather than having been asked in the wrong place.
The second thing worth building on is the honesty of the result vocabulary. BetterContact returns four email statuses: deliverable, catch_all_safe, catch_all_not_safe and undeliverable. Most tools collapse the middle two into a confidence percentage, which is the same information with the uncertainty sanded off. Keeping the catch-all distinction explicit is what lets a FlowRunner agent route the certain rows automatically and hold only the genuinely ambiguous ones for a person. Lead Search runs on the same submit-and-poll contract, filtering the BetterContact database on company domain, industry, technology and headcount alongside person-level criteria like seniority, department, function and skills, with include and exclude lists on every filter. Both flows are asynchronous, so a FlowRunner flow starts a job, waits properly, and picks the results up when they are ready rather than holding a connection open.
Without FlowRunner
With FlowRunner
Use Case Scenarios
Waterfall enrichment on inbound CRM rows
New leads land in HubSpot from a conference scan with a first name, a last name and a company, and nothing else. Nightly, the agent batches them in groups of up to 100 and calls Start Enrichment, attaching each CRM record ID as a custom field so the results correlate cleanly on the way back. It polls Get Enrichment Results, then writes the found email, its status, the email provider, the job title and the gender onto each record. Rows that resolved cleanly join the sequence. Rows that resolved to a catch-all domain wait for a person. Rows that returned nothing are marked as needing a different route, which is a more useful signal than an empty field because BetterContact already tried several sources.
Building a list against a filter, not a hunch
An outbound team wants operations leaders at software companies between 200 and 1000 employees running a specific tooling stack. The agent calls Start Lead Search with the domain, industry, technology and headcount filters set, plus person-level seniority and function criteria, then polls Get Lead Search Results and pages through using the leads_found total. Each returned lead carries name, job title, seniority, headline, location, profile URL and company firmographics including size, funding and headquarters. The agent writes the whole set into Google Sheets for review before anyone commits it to a sequence.
Phone enrichment with the input the vendor asks for
BetterContact documents that supplying a public LinkedIn profile URL materially improves the direct phone hit rate. So the agent does the cheap work first: it checks which CRM records already carry a profile URL, enriches only those when phone numbers are the goal, and routes the rest through a profile resolution step before enrichment rather than after a poor result. The team gets a better hit rate because the flow respects what the API actually needs, not because anyone remembered to fill in a field.
Human-in-Loop Highlight
A catch_all_not_safe result is the one BetterContact will not decide for you. The waterfall found an address that at least one provider stands behind, but the receiving domain accepts mail for every address at it, so deliverability cannot be proven by anyone. The credits are already spent. Sending anyway risks the sender reputation that the rest of the campaign depends on, and discarding the row wastes an account somebody chose deliberately. The agent gathers these rows, then posts to Slack: "Enrichment [request ID] returned [N] catch_all_not_safe addresses across [N] accounts, [N] credits already consumed. These cannot be verified by any provider. Release to the sequence, hold for a different channel, or drop?" The revenue owner answers per account, because the answer depends on how much a given logo is worth and not on a threshold. That is the digital andon cord in its plainest form. The agent runs the line and stops it at the one place where the data itself refuses to give a verdict.
Agent Capabilities
5 actionsEnrichment
2- Start Enrichment Queues a waterfall enrichment of between 1 and 100 leads and returns a request ID to poll. BetterContact tries multiple data providers in sequence until it finds a work email or direct phone number, so each lead needs a first name, a last name and either a company name or a company domain. Supply a public LinkedIn URL when requesting phone numbers, as BetterContact documents that it markedly improves the hit rate. Custom fields are echoed back on the result so rows correlate with CRM records.
- Get Enrichment Results Retrieves the results of an enrichment request by ID. Returns credits consumed and remaining, a summary counting valid, catch-all safe, catch-all unsafe, undeliverable and not-found addresses, and a per-lead array with the found email, its status, the email provider, job title and gender. Poll until the status reaches its terminal value. An unknown request ID returns a 406.
Lead Search
2- Start Lead Search Queues a search of the BetterContact lead database and returns a request ID. Filters combine company domains, industries and technologies, headcount bounds, and person-level criteria including full name, LinkedIn URL, skills, location, job title, department, function and seniority, with include and exclude lists on every filter. Used to build a target audience against explicit criteria.
- Get Lead Search Results Retrieves search results by request ID, returning credits consumed and remaining, a leads_found total for pagination, and a leads array of person and company records. Each lead carries name, job title, seniority, headline, location, profile, email and phone where available, plus company size, industry, funding, headquarters and specialities.
Account
1- Get Account Credits Returns the enrichment credits remaining on the account. Requires the account email, which is taken from the Account Email setting on the connection. Used to gate a large batch before it runs, or to raise an alert when the balance drops.
Frequently Asked Questions
What can FlowRunner do with BetterContact?
FlowRunner agents can run Start Enrichment, Get Enrichment Results, and Start Lead Search in BetterContact, plus 2 more actions.
Does connecting BetterContact to FlowRunner require OAuth?
No. BetterContact connects to FlowRunner with an API key, no OAuth flow required.
Can BetterContact trigger a FlowRunner workflow automatically?
BetterContact doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with BetterContact
$100 in credits. No card required. Connect in minutes.