Skip to content

Capture Agent Signup Attribution

POST
/agent/onboarding/attribution

Record first-touch attribution - UTM tags, ad click ids, landing page.

FIRST WRITER WINS on every key, so this is safe to call once per session and safe to retry. Nothing already captured is overwritten.

Every field is optional, which means an empty body is legal and does nothing. The response reports each destination separately (organization_persisted, contact_persisted, …) because attribution lands in more than one place and a partial write is worth knowing about - complete is the single field that says all of them took.

Authorizations

Parameters

Header Parameters

X-Target-Org-Id
Any of:
string

Request Body required

Mirror of CaptureAttributionRequest.

Every field is optional and every length cap is the app’s, so a value this contract accepts is one the handler accepts too.

object
entry_point
Any of:
string
<= 50 characters
fbclid
Any of:
string
<= 255 characters
gbraid
Any of:
string
<= 255 characters
gclid
Any of:
string
<= 255 characters
landing_at
Any of:
string format: date-time
landing_page_url
Any of:
string
<= 2048 characters
signup_referrer
Any of:
string
<= 2048 characters
utm_campaign
Any of:
string
<= 255 characters
utm_content
Any of:
string
<= 255 characters
utm_id
Any of:
string
<= 255 characters
utm_medium
Any of:
string
<= 255 characters
utm_source
Any of:
string
<= 255 characters
utm_term
Any of:
string
<= 255 characters
wbraid
Any of:
string
<= 255 characters

Responses

200

Successful Response

object
data
required

An open envelope for an onboarding or discovery result.

Open on purpose. Discovery state carries a per-field coverage matrix whose field set is the product’s own onboarding questionnaire - it changes as the questionnaire does, and a pinned mirror would silently DROP a field the customer had answered. On a surface whose whole job is “what do we still not know about you”, a dropped field reads as an answered question.

object
key
additional properties
any
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
notes
Any of:
Array<string>
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer
total_available
Any of:
integer
total_is_lower_bound
Any of:
boolean

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string