Lead .qualify
Confirm a lead fits your offer and open its deal, with its value.
- Action class
- None
- Approval
- Runs on its own
- Emits
Lead.qualified- Sites
- 4 sites
- Price
- Free
POST https: //api.sb/ {your-domain}/ leads/ qualify
Opens a deal for a lead that fits one of your offers, with its value and the reason it fits. The hub’s definition of Lead.qualify.
Inputs
| Name | Type | Default | Meaning |
|---|---|---|---|
lead | Lead | Required | The lead to qualify. |
offer | Offer | Required | The offer whose ICP the lead matches. |
Outputs
| Field | Type | What null means |
|---|---|---|
deal | Deal | Never null. |
lead | Lead | Never null. |
deal.status | string | Never null: Open when the deal starts. |
deal.value | money, in USD | Never null: the offer’s first-year price, from its price and interval. |
deal.nextStep | text | Null when no dated step is agreed yet; a booked Meeting sets it. |
lead.status | string | Never null: working once qualified. |
lead.fit | string | Never null once graded: strong or partial. A lead graded none is not qualified. |
Effects
- Action class
None: no approval rule names it, so it runs within its seat’s Permissions and Limits
- Modes
try: Grades the lead’s fit against the offer’s ICP and returns the deal it would open; nothing is stored.send: Opens the deal at once and returns it.do: Opens the deal at once and returns it.
- Idempotency
Only with a key: the same
Idempotency-Keyand input return the first Action, and the same key with other input returns409. A lead with an open deal for the same offer returns that deal; it never opens a second.- Saved or shared
The deal is saved with the lead and its Contact, and mirrored to your CRM when one is connected.
- Emits
Lead.qualifiedwith{ lead,deal, offer, fit } - Performed by
- Price
Free on your own account: the platform charges nothing for the call.
On each Venue
| Site | Fields | Formats |
|---|---|---|
interest | 1 | |
interest | 3 | |
| Facebook and Instagram | interest | 5 |
| The CRM you already use | status, fit, owner | None. |
Through Facebook.
| Our field | Facebook’s field |
|---|---|
Lead.interest | leadgen.field_data (Each form question and answer, as you wrote the form) |
- Lead-form entries. Arrive by webhook within seconds; the agent qualifies each and drafts the first reply within 5 minutes.
- Your role on the page. Posting needs a role that can post; a role removed in Meta’s settings ends the connection with
needs-reauth.
Through LinkedIn Ads.
| Our field | LinkedIn Ads’s field |
|---|---|
Lead.interest | leadFormResponse answers |
Facebook and Instagram
Through Meta Ads.
| Our field | Meta Ads’s field |
|---|---|
Lead.interest | leadgen.field_data |
The CRM you already use
Through The CRM you already use.
| Our field | The CRM you already use’s field |
|---|---|
Lead.status | lead status or lifecycle stage (Whichever your CRM keeps) |
Lead.fit | fit (A field the platform adds: strong, partial or none) |
Lead.owner | owner |
- Direction. One per Integration. Your records stay the record in both modes, and the side you declared leads every conflict.
- Stages. Map one to one onto the pipeline you picked; a stage with no match refuses with
venue-rejectedand names it.
What try does
| Account | What try does |
|---|---|
| Returns the post as your page will show it, with the time it goes live; nothing is posted or scheduled. | |
| LinkedIn Ads | Reads your ad account, the matched count of each audience and the targeting facets, and checks the campaign against LinkedIn’s budget minimums; LinkedIn has no validate-only call, so nothing is sent to it and nothing is created. |
| Meta Ads | Sends the whole build with Meta’s validate_only execution option: Meta runs every check and creates nothing, and the response names any field it would reject. |
| The CRM you already use | Reads your CRM and returns what one sync would change on each side, record by record; nothing is written to either. |
Refuses when
This call has no refusals of its own. Every call through an account can also meet the shared account refusals: grant-missing, needs-reauth, account-not-connected, over-mandate, quota-reached, venue-rejected.
When it waits
Returns in one response; nothing waits.
Example
Rosa booked Tuesday’s call: qualify Northgate Rentals for Leaseline and
open the Deal.To retry, send the same Idempotency-Key: the retry returns the first answer for $0. A new key reads again.
Test values
A sk_test_ key answers these the same way every time, at $0 (every test value).
| Test value | Always returns | What it is for |
|---|---|---|
lead_test_strong | {"fit": | A strong-fit test lead opens the same $1,788 deal every time, so your pipeline steps run against a known value. |
maxCost: | Refuses with max-cost | Any priced call with a maxCost of 0.0001 is refused before it spends: the price is above the cap. |
rate-limited.test | Refuses with rate-limited | Any call naming this hostname answers 429 with Retry-After, so your retry logic runs. |
sources-busy.test | Refuses with sources-busy | Any call naming this hostname answers 503 as if every route were busy, and nothing is spent. |
Used by
- Workflows: Inbound routing
- Agent tasks: Answer every inbound
- Services: Booked first calls
- Integrations: Facebook · LinkedIn Ads · Meta Ads · The CRM you already use
Related
None.