FlowRunner
PricingContact
Theme
Start Free

BetterContact

Sales Intelligence

Run 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.

5 actions API key available
New CRM leads arrive with names and companies but no contact details
Agent submits up to 100 leads with Start Enrichment, custom fields attached
Agent polls Get Enrichment Results until the request reaches its terminal status
Rows sorted into the four BetterContact email status bands
Deliverable and catch-all safe rows written back and released to the sequence
Sales ops receives the catch_all_not_safe rows and the credits already spent
Sales ops decides which catch-all accounts are worth the bounce risk

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

One provider, one answer A single data source returns nothing and the lead is written off as unreachable
Paying per lookup Credits go out whether or not the lookup produced anything usable
Binary verdicts Addresses are treated as good or bad, with no visibility into which ones are simply unprovable

With FlowRunner

Providers chained Sources are tried in sequence until one resolves, so a miss from the first is not the end of the record
Paying per result Spend tracks resolved records rather than attempts
An explicit middle band Catch-all domains are labelled as safe or unsafe rather than quietly counted as wins

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 processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via Slack
Human decides
Agent resumes with decision

Agent Capabilities

5 actions

Enrichment

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.