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 whom the user stopped pursuing (a 'skipped' stage)
is reported in removed, not re-enrolled and not sent to — clear the skip with
update_prospect first if the user explicitly wants them back. 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.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | People to add (see ProspectItem). Each carries a `person` with the identifiers you already hold (LinkedIn URL / slug, email, or provider_id) 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. Optional freeform `data` per item. | |
| agent_id | Yes | ID of the agent to add prospects to | |
| on_behalf_of | No | An agency client's email, from list_agency_clients, to run this call in that client's 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. |