Lead Scoring and Routing API
A signup form can ask for three fields before conversion starts dropping. That is never enough to know whether the person is your buyer, and self-reported company size is the least reliable field on the internet.
Enriching at the moment of submission gives you real title, seniority, industry and headcount in about a second, which is inside the window where you can still act on it while the visitor is on the page.
- requests served per month
- 40M+requests served per month
- uptime
- 99.9%uptime
- median response time
- 1smedian response time
- serving production traffic since
- 2023serving production traffic since
Qualification that happens too late is not qualification
The common setup enriches in a nightly batch. By morning the lead has been in a generic nurture sequence for twelve hours, the enterprise account that signed up at 9pm got the same automated email as a student, and the rep who should have called sees it a day late.
The alternative is asking for more form fields, which trades conversion for data and gets you answers people typed rather than facts.
At 1 second median, enrichment fits inside the request that handles the signup. Score and route synchronously, and the routing decision is made before the welcome email sends.
How it works
- 01
Resolve at submission
Take the profile URL or company domain the signup carries and enrich it in the same request that creates the account. One call, about a second.
- 02
Add firmographics
Headcount, industry and headquarters are what most ICP definitions are actually made of, and they decide both the tier and the territory.
- 03
Score against your ICP
Run your own rules on real values: seniority band, headcount range, industry, geography. No inference, no guessing from an email domain.
- 04
Route while it is warm
Above the bar, assign an owner and trigger the alert. Below it, self-serve onboarding. The decision is made before the welcome email goes out rather than the next morning.
In code
Score and route inside the signup handler
export async function onSignup({ profileUrl }) {
const { profile } = await fetch(
`https://api.fetchin.io/api/v1/profile?url=${profileUrl}`,
{ headers: { 'X-API-Key': process.env.FETCHIN_KEY } }
).then(r => r.json())
const { company } = await fetch(
`https://api.fetchin.io/api/v1/company?companyId=${profile.companyId}`,
{ headers: { 'X-API-Key': process.env.FETCHIN_KEY } }
).then(r => r.json())
const senior = /chief|head|vp|director|founder/i.test(profile.jobTitle ?? '')
const sized = company.employeeCount >= 200
return senior && sized
? routeToSales({ profile, company }) // owner assigned, alert fired
: routeToSelfServe({ profile }) // onboarding email, no rep
}What it changes
Shorter time to first touch
The lead that matters is assigned and alerted in the same second it converts, rather than in a batch that runs overnight.
Shorter forms
Stop asking for company size, industry and job title. You can read all three, and the answers are better than the ones people type.
Rep time spent on real accounts
Everything below the bar goes to self-serve automatically, so the humans only see records worth a human.
Tiering that holds up
Pricing and packaging decided on actual headcount rather than on a dropdown, which is also how you avoid the invoice dispute later.
Endpoints this uses
Questions
- Is it fast enough to run during signup?
- Yes. 1 second at the median and 1.5 at P95, which fits inside a form submission if you enrich in the handler. If you would rather not block, fire it right after and act on the result before the welcome email sends.
- What if the lookup fails?
- Fall back to your default routing and retry out of band. Failed requests are not billed, so a fallback path costs nothing beyond the code to write it.
- How many requests per second do I get?
- Self-serve accounts get 5 per second, which covers most inbound volume comfortably. 10 to 100 or more is available on request for spikes, launches and bulk backfills.
- Can I backfill leads that are already in the system?
- Yes, it is the same endpoint called concurrently up to your rate limit. There is no separate batch interface to learn and no job queue to poll.
Other use cases
Build it this week
1,000 free credits, no card, and failed requests are never billed. Every example on this page runs against the live API.