Skip to main content

Kustomer integration

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

  1. Go to Configure > Third-party integrations and select Available.
  2. On the Kustomer card, select Configure integration.
  3. Enter your Kustomer API key.
  4. Select Connect with Kustomer.

The Kustomer connection form listing the required permissions, the API key field, and the Connect with Kustomer button

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.

The Kustomer card on Configure > Third-party integrations showing Connected, Backfilled until 6 years ago, Manage queues, mappings, and exclusions, Authorized 1 year ago, and Outbound webhook Enabled

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.

The New and reopened cases tab on the Staffing timeline showing forecasted and actual cases by channel 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

  1. Go to Manage team > People management.
  2. Select Add people > Import from Kustomer.
  3. 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.

The Add queue rule for Kustomer dialog with the Ticket property list open: Assigned Team, Assistant Name, Assistant Status, Channel, Last Message Meta Queue, Queue ID, Queue Name, and Tag

Kustomer channels map to Assembled channels like this:

Kustomer channel Assembled channel
voice Phone
chat Chat
email, form Email
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.

The Mappings tab on Configure > Agent states filtered to Platform: Kustomer, listing agent states with their matched events and channels

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
Email 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.
Still have questions?