Track prospects
track_prospectsA person belongs to exactly one campaign, so someone already tracked in another
campaign is reported in skipped rather than added twice; pass move_existing=True
to move them into this agent instead. A durable contact left without a campaign (its
campaign was deleted) is instead adopted straight in and reported in adopted.
Someone already on THIS campaign who was removed from it is reported in removed,
not re-enrolled and not sent to. If the user explicitly wants them back, restore them with
update_prospect(agent_id=<this agent>, prospect_id=<their id from query_prospects>, channel=<'email' or 'linkedin', one they have a contact on>, stage='pending'). Someone
with no usable identifier (no LinkedIn profile URL, username slug, provider ID or email —
say, only a company page URL) is reported in unrecognized and not added; the rest of the
batch is.
On an agent with a define_sequence flow, tracking IS enrollment — the flow fires
each prospect's first touch itself (see the returned flow field); never queue a
first send for prospects you just tracked.
Dict with created and updated counts; moved, adopted, removed, skipped and
unrecognized details, plus unrecognized_note naming anyone not added; and
total, the number of items.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"agent_id": "<agent_id>",
"items": "<items>"
},
"name": "track_prospects"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | People to add (see ProspectItem). Each carries a `person` with the identifiers you already hold (`linkedin_slug`, `linkedin_provider_id`, or `email`) copied verbatim from the tool result that surfaced them — never a slug rebuilt from a display name, which resolves to the wrong person. The display name goes on `person.display_name`, taken from the same row as the identifier — a name that shares no token with the LinkedIn name already on file for its ID rejects the whole call. | |
| agent_id | Yes | ID of the agent to add prospects to | |
| on_behalf_of | No | A teammate's email, or an agency client's from list_agency_clients, to run this call in that account: their agents, settings, connected accounts, and credits. Omit it to act on your own account. | |
| move_existing | No | Move people tracked in another campaign into this one instead of skipping them. Destructive — it cancels whatever was still queued for them, so only pass it on an explicit user request. |