Building an integration: from first request to reliable replies
A working integration needs more than a successful send request. Connect your backend to a permitted line, handle inbound events once, observe delivery outcomes, and test the complete reply loop with the plan’s actual access rules.
- Separate API acceptance, delivery state, and a human reply in your metrics.
- Use durable duplicate handling before letting a message trigger an action.
- Match the workflow to the plan’s outbound permissions and rate limits.
Define the smallest useful conversation
Choose one scenario: a user asks a question, your backend routes it to the agent, and the reply returns to the same thread. Decide how that conversation maps to an application user and which actions the agent is allowed to take. This is an integration design guide; use the linked API reference for current endpoint names and payloads.
Start with a permitted test user. Check whether you are on the trial, Shared, or Dedicated plan. Unlimited inbound messaging does not grant unrestricted outbound access. Shared can message users who have joined; Dedicated has different outbound permissions.
Authenticate from your backend
Follow the Messaging quickstart and authentication reference. Keep API credentials in server-side configuration and isolate development from production. The Messaging and FaceTime APIs use distinct contracts; do not assume a key or request pattern works for both.
Make one documented request and retain the identifiers returned by the API. Use them to connect the application action, conversation, and later status observations. Avoid storing raw message text in general-purpose analytics when an event type and identifier will answer the operational question.
Make inbound processing repeatable
Before a webhook can trigger an agent or a business action, validate it according to the documented receiver contract. Persist the event and use a stable identifier from that contract to prevent the same event from starting the same action twice.
receive event
→ validate the documented request contract
→ atomically record the event identifier and pending job
→ acknowledge according to the API contract
→ process the job with retry-safe application logic
→ record the result
This is architecture pseudocode, not an SDK example. Use a durable database uniqueness constraint or equivalent atomic operation, not a process-local set, for duplicate protection. Commit the event and pending work together so a crash cannot acknowledge a message while losing the job.
When an agent invokes a tool, protect that side effect separately. Deduplicating a webhook does not automatically make a payment, booking, or outbound send safe to retry. Use an application action ID and the target service’s supported idempotency mechanism.
Keep conversation state in the right place
Store the relationship between your user, the Chert conversation, and the assigned line. Keep the context needed for the next reply in your application. Do not route solely on whichever phone number happens to appear in the latest payload.
For shared lines, test more than one permitted user and confirm that their application context stays separate. If a user leaves or revokes access, update your own routing and tool permissions as well as any relevant platform access controls.
Test failure paths before increasing volume
- Receive a permitted message and send one useful response.
- Replay the same inbound event in a controlled test and confirm it does not create a second action.
- Interrupt the worker after event persistence, restart it, and confirm pending work resumes.
- Simulate a provider timeout and confirm retries do not produce duplicate side effects.
- Observe the documented delivery outcome separately from request acceptance.
- Check how your application responds to plan rate limits and invalid recipient access.
Measure the first completed exchange
Record setup started, authenticated request, first delivered message where the API confirms it, first inbound reply, and first completed application task as separate steps. This shows whether people are stuck in setup, delivery, or product behavior.
Getcho’s published customer story describes one application of messaging to delivery operations. For your own launch, define a useful outcome and collect evidence from your actual workflow before claiming a conversion or response-rate improvement.
Frequently asked questions
Can the Free trial send unsolicited first messages?
The trial has no agent-initiated outbound messaging. Design a permitted test with your verified or allowed users and check the current plan table.
Is a successful API response a delivery receipt?
Treat request acceptance and delivery outcome as separate observations. Use the documented status and event contract for the API operation you integrate.
Sources and maintenance
This guide is maintained by the Chert team. Follow the linked reference for current commands, API contracts, and line requirements.
Related guides
Build your first conversation.
Choose a plan, connect your agent, and test the complete flow.
Start building