WhatsApp leads,
delivered to your LMS

Agents spot an opportunity mid-conversation, tap once, pick a lead type, tick the relevant messages — and a structured lead lands in your system with full context.

How it works

1
You register your LMS
Two URLs + an auth header, once
→
2
Agent taps the lead icon in chat
Your lead types load live from your API
→
3
Agent picks messages for context
Only the relevant parts of the chat — nothing more
→
4
We POST the lead to you
Structured JSON with your system ID echoed

Leads are outbound only — ChatReach delivers to your system; it never becomes a second lead database you have to reconcile.

Two-way, not one-way

Leads flow out to your system, and your system's own events flow back the other way:

  • Your records start journeys. A lead created, sold, lost or gone quiet — or a service due, a price drop or a birthday — can start the right WhatsApp follow-up automatically. Events are safe to repeat: the same one never runs twice.
  • WhatsApp on your lead screen. Drop our snippet on the record and your staff see the last 10 messages, the customer's consent, whether the 24-hour window is open and who owns the chat — with Load older messages and a link into the full conversation.
  • Everything is written back. Messages sent from the lead screen, consent recorded, and outcomes like sold or lost all land on the record as notes, so the history lives where your team already looks.

Step 1 — Register the integration

Dashboard → Lead Settings → Add LMS. You provide:

FieldPurpose
Create Lead URLWe POST completed leads here (required)
Lead Types URLGET endpoint we call live when an agent opens the lead form (optional but recommended)
System / Integration IDYour identifier for this tenant — echoed in every payload so one endpoint can serve many clients
Auth headerName + value (e.g. Authorization: Bearer …) attached to every call we make to you

Step 2 — Expose lead types (optional)

Your Lead Types URL should return either shape:

GET your-lms.co.za/lead-types → 200
[
  { "id": "lt_new_vehicle", "name": "New Vehicle Enquiry" },
  { "id": "lt_used", "name": "Used Vehicle Enquiry" },
  { "id": "lt_service", "name": "Service Booking" },
  { "id": "lt_parts", "name": "Parts" }
]

// or simply:
["Sales", "Support", "Partnerships"]

No Lead Types URL? Tenants define internal lead types in ChatReach instead — those leads fire the lead.created webhook and email the configured recipients.

Step 3 — Receive the lead

POST your-lms.co.za/leads ← ChatReach
{
  "integrationId": "your-system-id-for-this-client",
  "lead": {
    "leadId": "3c9d…",
    "leadType": "New Vehicle Enquiry",
    "leadTypeExternalId": "lt_new_vehicle",
    "contact": {
      "id": "…",
      "phone": "27821234567",
      "name": "John Smith"
    },
    "notes": "Interested in the 2026 model, needs finance, trade-in available",
    "conversationContext": [
      { "direction": "in",  "body": "Hi, do you have the 2026 model in stock?" },
      { "direction": "out", "body": "We do! Blue and silver available this week." },
      { "direction": "in",  "body": "Great — can I trade in my 2019?" }
    ],
    "createdAt": "2026-07-11T11:20:00Z"
  }
}

Respond with your lead's ID and we store the reference against the conversation:

Your 200 response
{ "id": "LMS-88412" }

Non-2xx responses mark the lead failed with your response body captured — visible to the tenant on their Lead Settings page, so delivery issues surface immediately.

Privacy by design

Agents explicitly tick which messages to include — the whole conversation is never shipped by default. That keeps unrelated customer chatter out of your CRM and keeps POPIA reviewers happy.

Ten minutes to your first WhatsApp lead

Two URLs and an auth header. That's the whole integration.

Start Free Trial