Developer docs

Send customer messages and identity

Use stable external IDs to create conversations, preserve threads, and update customer profiles.

Updated 2026-07-24For: Backend developers

Send JSON to the channel inbound endpoint:

{
  "messageId": "msg-001",
  "threadId": "thread-001",
  "occurredAt": "2026-07-24T08:00:00Z",
  "customer": {
    "id": "customer-001",
    "name": "Example Customer",
    "email": "[email protected]"
  },
  "message": {
    "type": "text",
    "text": "I need help",
    "attachmentIds": []
  },
  "metadata": {}
}

Identifier rules

  • messageId: idempotency key within the channel. A retry with the same ID returns the original result with duplicate: true.
  • threadId: stable thread in your product. The same ID remains linked to one NavoChat conversation.
  • customer.id: stable customer ID within the channel. The same customer can be reused across threads.
  • A bound threadId cannot switch to another customer.id; NavoChat returns 409.

Customer profile

customer.name is required. Email, phone, and company are optional. NavoChat updates only non-empty fields included in the request; omitted or null fields do not clear existing data. A duplicate messageId does not update the customer again.

Message limits

The request body is limited to 64 KB and text to 20,000 characters. type=text requires text; type=attachment requires at least one completed attachment.

Related guides