Concepts

Inbox

Replies land in conversations; list them, read them, reply in-thread, and tag outcomes.

A reply from a lead always stops their enrollment - the drip never talks over a live conversation. The thread then shows up in the inbox for you (or your agent) to work.

The flow:

  1. list_conversations - filter and paginate threads. needs_attention=true → threads awaiting your reply. Also filters by status (active / archived / closed), tag, person_id, or sender seat.
  2. get_conversation - thread detail with messages.
  3. send_reply - queue a reply in the existing thread. Queued and rate-safe like every other send; template variables ({{first_name}}, {{custom.<key>}}, …) render at queue time, and empty text is never sent (missing_variables).
  4. tag_conversation - record the outcome.

Tags

Canonical tags (interested, meeting_booked, not_interested, …) drive downstream reporting: analyze_outreach's positive_reply outcome is derived from them, so untagged replies read as 0% positive - tag as you go. Free-form labels ride along via add_tags / remove_tags.

Tagging unsubscribe marks the person do-not-contact - the global kill switch that stops active enrollments and blocks all future sends.

Closing the loop

A positive thread that turns into a deal: mark the lead with mark_person (or bulk mark_leads) status=customer. Hostile or opt-out: do_not_contact=true - permanent unless explicitly lifted, and lifting resumes nothing.

On this page