How to create a Crisp conversations externally with the REST API
Learn how to send website form submissions into Crisp as conversations.
Instead of routing contact form messages to a private email inbox, you can centralize them in Crisp so your team can reply, assign, and track them from the shared inbox.
Before you start
This integration is handled from your backend. Do not expose Crisp REST API credentials in frontend JavaScript or public form code.
You will need:
- A Crisp API token with the permissions required for conversation actions
- A backend able to receive and validate your website form submission
- Access to the Crisp website_id for the workspace receiving the conversation
- Basic knowledge of REST API requests
API routes to use
To turn a form submission into a Crisp conversation, your backend usually needs to create the conversation, attach customer metadata, then send the submitted message.
Action | REST API documentation |
|---|---|
Create a conversation | |
Update conversation metas | |
Send a message |
Recommended flow
A safe form-to-Crisp flow usually looks like this:
- Validate the form submission → reject spam, malformed emails, and missing required fields before calling Crisp
- Create the conversation → use the REST API to create a new Crisp conversation for the workspace
- Attach useful metadata → add the visitor email, name, phone number, company, or custom data when available
- Send the form message → post the submitted content as a message in the new conversation
- Handle failures → log API errors and avoid silently losing customer messages
Example implementation
A PHP example is available in the Crisp API repository:
https://github.com/crisp-im/php-crisp-api/blob/master/examples/create_conversation.php
Updated on: 03/05/2026
Thank you!