Plans and permissions:
- Create the outbound webhook for AI agents: AI agents, billed separately
- Connect Kustomer: Admin role, or a custom role with Configure third-party integrations set to Can configure third-party integrations
- Import team members from Kustomer: Admin or Manager role, or a custom role with Manage team set to Create, edit, or delete any person or Create, edit, or delete certain people
Use the Kustomer integration to bring your Kustomer conversations into Assembled, so you can forecast and schedule for that volume, and to track your team’s Kustomer statuses for real-time adherence. Assembled connects with a Kustomer API key and reads data through the Kustomer API.
To connect it, go to Configure > Third-party integrations, select Available, and find Kustomer.
How the Kustomer integration works
| Sync | What it syncs | How often |
|---|---|---|
| History | Conversations from the last 2 years, loaded when you connect. To load a different range, contact our team. | Once, as fast as Kustomer allows |
| Conversations | New and updated conversations | Every minute |
| Agent states | Team members’ statuses and work sessions | About every 30 seconds |
- Outbound conversations (where the direction is out) are left out automatically, as the Outbound conversation exclusion.
- For a conversation with messages in more than one channel, Assembled uses the channel of the first inbound message, or of the first outbound message if there’s no inbound one.
- Assembled makes at most 500 requests a minute to the Kustomer API. Kustomer shares one rate limit across all its endpoints (1,000 requests a minute, or 2,000 on the Ultimate plan), so this counts toward your usage.
- Assembled stores conversation data by default. To limit the data Kustomer returns to Assembled, contact our team.
Assembled calls these Kustomer endpoints:
| Kustomer endpoint | Data | How often |
|---|---|---|
/v1/customers/search, /v1/conversations, /v1/conversations/<conversationId>/events, /v1/conversations/<conversationId>/messages
|
Conversations, events, and messages | Every minute, and more often while history loads |
/v1/routing/statuses, /v1/routing/work-sessions
|
Agent states | About every 30 seconds |
/v1/routing/queues |
Queues | At most once a day |
/v1/assistants |
Conversations handled by bots | At most once an hour |
/v1/tags, /v1/teams, /v1/users
|
Queue options and users | When needed |
Prepare Kustomer
Work with your Kustomer administrator before you connect.
Every conversation needs a value in Kustomer’s channel field. Assembled can sync these channel values: email, form, chat, voice, sms, facebook, twitter-dm, twitter-tweet, and instagram.
If you plan to split Kustomer conversations into several queues in Assembled, make sure each conversation has one of these conversation properties: Tag, Channel, Last Message Meta Queue, Queue Name, Queue ID, Assistant Name, Assistant Status, or Assigned Team.
Create a Kustomer API key with these permissions:
| To sync | API key permissions |
|---|---|
| Conversations |
org.permission.search.read, org.permission.conversation.read, org.permission.message.read, org.permission.search.create
|
| Agent states |
org.permission.read, org.permission.customer.read, org.permission.routing.read
|
If you use AI agents with Kustomer, the connection form lists more permissions to add.
Important: Assembled doesn’t test the key’s permissions when you connect. A key without the permissions above connects, then its syncs fail. Check the permissions before you connect.
Connect Kustomer
- Go to Configure > Third-party integrations and select Available.
- On the Kustomer card, select Configure integration.
- Enter your Kustomer API key.
- Select Connect with Kustomer.
Assembled works out your Kustomer region from the key, so you don’t choose one.
When it’s connected, the Kustomer card moves to In use, with a Connected tag, when it was authorized, and its backfill status: Backfill in progress while Assembled loads your history, then Backfilled until and how far back it reached. To review how Kustomer conversations are routed, select Manage queues, mappings, and exclusions.
If you use AI agents with Kustomer, select Create webhook next to Outbound webhook on the card. Assembled creates a webhook in Kustomer named [Assembled] Kustomer Events, which sends conversation and message updates as they happen. It needs the outbound webhook permissions listed in the connection form. When it’s set up, Outbound webhook shows Enabled.
To disconnect, open the Edit integration menu on the Kustomer card and select Disable integration. All Kustomer syncs stop.
Check that data is coming in
To check agent states, go to Monitor > Real-time agent analysis and filter to the Kustomer source. Team members should show their current Kustomer status and adherence. See Real-time agent analysis.
To check conversations, go to Schedule > Staffing timeline and open the New and reopened cases tab. The chart shows Kustomer conversations over the day.
If either view shows no data or numbers you don’t expect after an hour, chat with our team.
Add team members from Kustomer
- Go to Manage team > People management.
- Select Add people > Import from Kustomer.
- Choose the people to add, and import them.
Every Kustomer user is added with the Standard role. Users without an email or display name aren’t imported. For other ways to add people, see People management.
Set up queues for Kustomer
To split Kustomer conversations into queues, create queue rules in Configure > Queues and exclusions, using the conversation properties in Prepare Kustomer. For the steps, see Queues and exclusions.
Kustomer channels map to Assembled channels like this:
| Kustomer channel | Assembled channel |
|---|---|
| voice | Phone |
| chat | Chat |
| email, form | |
| sms | SMS |
| facebook, twitter-dm, twitter-tweet, instagram | Social |
Set up agent states for Kustomer
To decide how each Kustomer status counts in Assembled, map it in Configure > Agent states, on the Mappings tab. For the steps, see Agent state mappings.
How Kustomer data maps to Assembled
First response
For email, chat, SMS, and social, the first response is Kustomer’s firstResponse.createdAt. If that’s empty, Assembled uses the time of the earliest response message.
| Channel | First response time |
|---|---|
| First response − the conversation’s external creation time | |
| Chat, SMS, and social | First response − createdAt
|
| Phone |
meta.answeredAt − meta.placedAt. The first response is meta.answeredAt. |
To measure first response time in business hours instead, using Kustomer’s business-time first response, contact our team. This applies to every channel except phone.
Whether a conversation met its SLA comes from Kustomer’s own SLA breach field.
Status
| Kustomer status | Status in Assembled |
|---|---|
| open | Open |
| snoozed | Snoozed |
| done | Closed |
| Blank | Empty |
Common issues
If a sync line on the Kustomer card turns red, hover over it to see the error.
- A sync line shows a 400 or 401 error: This usually means the API key was deleted or its permissions changed, or the person who created it no longer has access. Create a key with the permissions in Prepare Kustomer, then disconnect Kustomer and connect it again with the new key.
- Many conversations are excluded, but you haven’t set up exclusions: The conversations probably use channel values Assembled doesn’t sync, or have no channel. Check the channel values in Kustomer, and chat with our team to add the ones you use.
- A sync line shows any other error: Chat with our team and include the error text.