Skip to content

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

NameTypeDefaultMeaning
leadLeadRequiredThe lead to qualify.
offerOfferRequiredThe offer whose ICP the lead matches.

Outputs

FieldTypeWhat null means
dealDealNever null.
leadLeadNever null.
deal.statusstringNever null: Open when the deal starts.
deal.valuemoney, in USDNever null: the offer’s first-year price, from its price and interval.
deal.nextSteptextNull when no dated step is agreed yet; a booked Meeting sets it.
lead.statusstringNever null: working once qualified.
lead.fitstringNever 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-Key and input return the first Action, and the same key with other input returns 409. 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.qualified with { lead, deal, offer, fit }

Performed by

Sales Engineer

Price

Free on your own account: the platform charges nothing for the call.

On each Venue

SiteFieldsFormats
Facebookinterest1
LinkedIninterest3
Facebook and Instagraminterest5
The CRM you already usestatus, fit, ownerNone.

Facebook

Through Facebook.

Our fieldFacebook’s field
Lead.interestleadgen.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.
Feed image ad, 1440 × 1800, 4:5

LinkedIn

Through LinkedIn Ads.

Our fieldLinkedIn Ads’s field
Lead.interestleadFormResponse answers
Feed post Single image ad, 1200 × 628, 1200 × 1200 or 720 × 900 Document ad

Facebook and Instagram

Through Meta Ads.

Our fieldMeta Ads’s field
Lead.interestleadgen.field_data
Facebook: Feed image ad, 1440 × 1800, 4:5 Instagram: Feed image, 320 to 1,440 pixels wide, 4:5 to 1.91:1 Instagram: Carousel Instagram: Reel, 9:16 Instagram: Story, 9:16

The CRM you already use

Through The CRM you already use.

Our fieldThe CRM you already use’s field
Lead.statuslead status or lifecycle stage (Whichever your CRM keeps)
Lead.fitfit (A field the platform adds: strong, partial or none)
Lead.ownerowner
  • 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-rejected and names it.

What try does

AccountWhat try does
FacebookReturns the post as your page will show it, with the time it goes live; nothing is posted or scheduled.
LinkedIn AdsReads 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 AdsSends 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 useReads 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

Text
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 valueAlways returnsWhat it is for
lead_test_strong{"fit":"strong","deal":{"status":"Open","value":{"amount":1788,"currency":"USD"}}}A strong-fit test lead opens the same $1,788 deal every time, so your pipeline steps run against a known value.
maxCost: 0.0001Refuses with max-costAny priced call with a maxCost of 0.0001 is refused before it spends: the price is above the cap.
rate-limited.testRefuses with rate-limitedAny call naming this hostname answers 429 with Retry-After, so your retry logic runs.
sources-busy.testRefuses with sources-busyAny call naming this hostname answers 503 as if every route were busy, and nothing is spent.

Used by

None.