ToolsSearch & Enrichment

Mark leads

Bulk qualify/disqualify lead-group members in ONE call - writes the same global qualification_status as mark_person, plus the reason.

Tool: mark_leads

Status changes never stop running sequences (only do_not_contact does); overriding an earlier verdict is allowed and flagged in signals. NOT for: one ad-hoc lead outside a group → mark_person / mark_company.

Parameters

ParamTypeRequiredDescription
lead_group_idstring (slug or UUID)yesTargeting scope - ids must be members of this group.
person_idsarray of stringsnoPerson slugs from get_lead_group rows.
company_idsarray of stringsnoCompany slugs - pass either or both lists (at least one id total).
statusstringnonew | qualified | disqualified | customer - the lead's one global qualification_status (same field mark_person writes); new resets a prior verdict.
reasonstringnoRequired when disqualifying - one short phrase (e.g. 'too small'); stored on the lead as qualification_reason, cleared on the next status change.
do_not_contactbooleannoGlobal compliance flag: stops active enrollments and blocks all sends (companies cascade to their people).

Bulk by design - one call for N members; non-members land in skipped_not_member instead of failing the batch.

Status changes never stop running sequences - only do_not_contact does; a signal warns when marked leads are mid-sequence.

Overriding an earlier verdict (e.g. disqualified → qualified) is allowed and reported in signals with the previous status and reason.

Disqualified leads leave every group's remaining (enrollable) pool; the verdict is appended to the group's steps as a mark entry (counts + reason, no id lists).

Sample request — qualify

{
  "lead_group_id": "ceo-prospects-0010",
  "person_ids": [
    "dana-white-0015"
  ],
  "status": "qualified"
}

Sample request — disqualify with reason

{
  "lead_group_id": "ceo-prospects-0010",
  "person_ids": [
    "dana-white-0015"
  ],
  "status": "disqualified",
  "reason": "too small"
}

On this page