WhatsApp agentsWhatsApp leads
WhatsApp leads
Every customer chat on your WhatsApp numbers, as a lead you can categorize, hand over and close.
Each chat between a customer and one of your numbers is a conversation, and every conversation is a lead. A lead can carry a category (for example hot, warm, cold) that the AI decides from the chat, and that drives automatic follow-ups.
Conversations are created automatically when a customer messages your number or you message them, so there is no create endpoint. You can read, update and delete them.
Conversations older than your plan's history window are not returned.
Endpoints
The conversation object
idstring (uuid)Conversation id.
tenant_idstring (uuid)The workspace that owns the conversation.
whatsapp_account_idstring (uuid)Your WhatsApp account the conversation is on.
phone_number_idstringMeta phone number id of your number.
customer_numberstringCustomer's number, digits only, e.g.
919876543210.customer_namestringnullableCustomer's WhatsApp profile name.
agent_idstring (uuid)nullableAgent answering this conversation.
last_message_atstring (date-time)nullableTime of the latest message.
last_message_previewstringnullableStart of the latest message.
last_message_directionstringnullableinboundoroutbound.unread_countintegerCustomer messages not yet read in the dashboard.
ai_pausedbooleantruewhen a person has taken over and the AI agent doesn't reply.last_inbound_atstring (date-time)nullableTime of the customer's last message. Free-form replies are only allowed within 24 hours of it.
opted_out_atstring (date-time)nullableSet when the customer replied STOP to campaigns.
categorystringnullableLead category (e.g.
hot,warm,cold), ornullif undecided.followup_stepintegerHow many follow-ups of the category's sequence have been sent.
trigger_delay_minutesintegernullableMinutes a new customer message waits before the lead is re-categorized.
categorized_atstring (date-time)nullableWhen the category was last decided.
statusstringopenorclosed.Allowed:openclosedcreated_atstring (date-time)nullableWhen the conversation started.
updated_atstring (date-time)nullableWhen it last changed. Use as a sync cursor with
updated_since.