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 withduplicate: 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
threadIdcannot switch to anothercustomer.id; NavoChat returns409.
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.