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.
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, and moved, adopted, removed and skipped details
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. Junk like a company URL or 'N/A' is rejected. 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 | |
| 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. |