Assembled integrates with the Kustomer contact platform allowing your ticket data to be forecasted and tracked in our system. This article will walk through how to setup the integration and verify the data Assembled pulls in is correct.
Preparing your Kustomer data for Assembled
Before you connect your Kustomer instance to Assembled, we recommend working with your team’s Kustomer administrator to prepare your Kustomer data as follows:
-
Channel: Assembled’s Kustomer integration requires that all Kustomer conversations have an assigned value in the channel field. Assembled can ingest Kustomer conversations that have one of the following values in the Kustomer channel field:
email,chat,voice,sms,facebook,twitter-dm,twitter-tweet,instagram. -
Conversation properties: Assembled can create queues based on one of the following conversation properties. If you plan to separate your Kustomer data into multiple queues within Assembled, you should ensure that each Kustomer conversation has one of the following properties:
- Tag
- Channel
- Last Message Meta Queue
- Queue Name
- Queue ID
- Assistant Name
- Assistant Status
- Assigned Team
-
API Key: Below is a list of the necessary API key permissions and the use case for each permission:
For ticket data, you will need to enable:
org.permission.search.readorg.permission.conversation.readorg.permission.message.readorg.permission.search.create
For agent state data, you will need to enable:
org.permission.readorg.permission.customer.readorg.permission.routing.read
Connecting to Kustomer
Connecting Kustomer to Assembled allows Assembled to make API requests to the Kustomer API on behalf of your Kustomer account. As a result, this will cause an overall increase in your Kustomer API usage. We pull data from Kustomer at a maximum rate of 500 requests per minute.
- To connect your Kustomer instance to your Assembled instance, you will first need to create a Kustomer API key within Kustomer with all the necessary API key permissions.
-
Once you have created this API key, select Kustomer from the Assembled Third-party integrations page (Available tab). You will be prompted to enter the Kustomer API key. You should then click Connect with Kustomer.
- If you have successfully connected to Kustomer, you will see a Synced, Sync in progress, or Connected field on the Kustomer-specific card in Assembled’s Configure > Third-party integrations page.
If you run into any issues during this step, please reach out to our Support team.
Verifying the connection
There are two places in Assembled for you to verify if the Kustomer integration has been correctly added: the Real-time agent analysis (Monitor > Real-time agent analysis) and the Staffing timeline.
The Real-time agent analysis (shown below) will display agent states and current adherence. Use these dashboards to make sure agent states from Kustomer are being synced to Assembled correctly.
The Staffing timeline displays the contacts of Kustomer. Select New and Reopened Cases to see a line graph displaying how many tickets over time. This graph will show if the sync for tickets is working.
If either of these display zero or abnormal numbers, please reach out to our Support team.
Adding agents from Kustomer
To add agents into Assembled directly from Kustomer, you can follow the steps in our People management page guide (Manage team > People management). In addition, please note that Assembled will map Kustomer’s users with the following permission levels:
| Kustomer | Assembled |
|---|---|
| Agent | Standard |
Setting up Assembled queues for Kustomer conversations
To set up your Assembled queues for your new Kustomer integration, we recommend following the steps in our queue configuration guide.
In addition, please note the following Kustomer-specific details:
-
Assembled will map Kustomer channels to Assembled channels as follows:
Kustomer Assembled voice Phone chat Chat email Email sms SMS facebook, twitter-dm, twitter-tweet, instagram Social - Assembled automatically excludes outbound Kustomer conversations (direction field = out).
- For multi-channel tickets, Assembled uses the channel of the first message.
- Any conversations for which the channel field is blank will be automatically excluded from Assembled.
- Within Assembled, you can create queues based on the following Kustomer attributes:
Setting up Assembled agent states for Kustomer
To set up your Assembled agent states for your new Kustomer integration, we recommend following the steps in our agent states setup guide.
Understanding how Kustomer data maps to data attributes in Assembled
We track the SLA for calls via the meta.answeredAt - meta.placedAt metrics from Kustomer.
We track the SLA for chats, social and SMS via the first_responded_at - external_created_at metrics. We track the SLA for e-mails via the first_responded_at - external_created_at metric. If you would like us to calculate first response times based on business hours, please reach out to our Support team.
Conversation data (Email)
| Kustomer | Assembled |
|---|---|
| firstResponse.createdAt (if present) OR externalTimestamp (if firstResponse is empty but earliestResponseMessage is not) | first_responded_at |
| first_responded_at - external_created_at OR firstResponse.businessTime/1000 (if kustomer.use_business_time is turned on) (SLA) | first_response_duration |
Conversation data (Chat, SMS, Social)
| Kustomer | Assembled |
|---|---|
| firstResponse.createdAt (if present) OR externalTimestamp (if firstResponse is empty but earliestResponseMessage is not) | first_responded_at |
| first_responded_at - createdAt OR firstResponse.businessTime/1000 (if kustomer.use_business_time is turned on) (SLA) | first_response_duration |
Conversation data (Phone)
| Kustomer | Assembled |
|---|---|
| meta.answeredAt | first_responded_at |
| meta.answeredAt - meta.placedAt (SLA) | first_response_duration |
Conversation status
| Kustomer | Assembled |
|---|---|
| open | open |
| snoozed | snoozed |
| done | closed |
| empty |
What Assembled syncs from Kustomer
Once connected, Assembled runs these sync jobs:
| Sync job | What it syncs | How often |
|---|---|---|
| backfill | Historical data, up to 5 years back from when the sync job was created | As fast as possible |
| default | New and updated conversations | Every minute |
| agent_states | Agent states | Every 15 seconds |
Assembled calls these Kustomer endpoints:
| Kustomer endpoint | Data | How often Assembled calls it |
|---|---|---|
/v1/customers/search |
Ticket data | Every minute (higher during the initial backfill) |
/v1/conversations |
Ticket data | Every minute (higher during the initial backfill) |
/v1/conversations/<conversationId>/events |
Ticket event data | Every minute (higher during the initial backfill) |
/v1/conversations/<conversationId>/messages |
Ticket data | Every minute (higher during the initial backfill) |
/v1/routing/queues |
Queue data | Every 15 seconds |
/v1/routing/statuses |
Agent states | Every 15 seconds |
/v1/routing/work-sessions |
Ticket event data | Every 15 seconds |
/v1/assistants |
Ticket data (mainly chatbots) | Every 15 seconds |
/v1/tags |
Queue data | On demand |
/v1/teams |
Queue data | On demand |
/v1/users |
User data | On demand |
Kustomer shares one API rate limit across all endpoints: 1,000 requests per minute, or 2,000 on the Ultimate plan. Assembled pulls at most 500 requests per minute.
Assembled stores conversation data by default. You can limit the data the Kustomer API returns to Assembled.
FAQs
- Q: What should I do if I see a sync invalid from the Kustomer integration in Configure > Third-party integrations ?
- A: This could mean a few things so we recommend hovering over the message :
- If you see any 400 errors those usually are permissions-related. This sometimes happens when the person who originally authorized does not have proper permissions, the person who originally authorized leaves the company, or if someone changed the permissions settings. In order to continue to have data flowing into Assembled and receive accurate reporting, you will need someone with admin permissions to reauthorize the sync.
- If you see a generic error please reach out to our Support Team and we can help diagnose the root cause.
- If you see any 400 errors those usually are permissions-related. This sometimes happens when the person who originally authorized does not have proper permissions, the person who originally authorized leaves the company, or if someone changed the permissions settings. In order to continue to have data flowing into Assembled and receive accurate reporting, you will need someone with admin permissions to reauthorize the sync.
- A: This could mean a few things so we recommend hovering over the message :
- Q: What do I do if all my tickets are getting excluded but I do not have any exclusions set up ?
- A: The most common reason is that you are using Kustomer channel values that are not listed on this page. If that's the case, please reach out to the Support Team and we can help set up these values for you.