Webhooks: Deprecating Conversation Status

What is conversation status?

Conversation status has been a core piece of the Drift chat experience for a long time. At any given time, a conversation can have a status of 'Open', 'Pending', or 'Closed'.

Users can toggle this from Drift chat UI, bot playbooks can automatically close conversations when they end, and organizations have the ability to automatically close conversations after a period of inactivity.

1352

Changing a conversation's status from the Drift conversations view.

Users of the Drift Developer Platform often subscribe to the conversation_status_change webhook for their apps to know when a conversation has been considered completed. Often, they look for the conversation to become 'closed' then will take some action on that conversation. The integrations that Drift has built in-house also use 'closed' as a trigger to send conversational data to external systems.

What is being changed?

Conversation status is being phased out of the Drift chat platform

In the past few years, we've seen conversation status become more of a chore for users than an aid; an extra action they had to take while trying to get more leads and book more meetings. We often saw users forgetting to close their conversations which would clog up the views of their teammates or prevent the conversations from being sent to their CRMs or marketing automation platforms.

We have been working on a new chat interface to our users have a simpler, and more delightful chat experience. The new experience does not include conversation status, and so status will be removed from the rest of the Drift ecosystem. The interface is available at https://app.drift.com/conversations or via a desktop app which can be downloaded here. The interface only supports free users now, but will be rapidly supporting high plan tiers.

959

Example of the new Drift chat experience. Available now for free users.

The phase-out process will continue over the coming months as the new interface becomes available to more users.

What does that mean for webhooks and your app?

With conversation status being removed, we are phasing the conversation_status_updated webhook event out of the developer platform.

Users close conversations for two reasons:

  1. Indicating that a conversation has ended.
  2. Indicating that conversation data should be pushed to external systems.

We have introduced new webhooks that will replace conversation_status_updated and handle these use cases.

conversation_manual_push

Within Drift, closing a conversation has always implicitly meant that the conversation will also be pushed to third-party systems. With the conversation_manual_push webhook, we are decoupling these two concepts.

The conversation_manual_push event is your indication that a conversation is ready to by synced. As of right now, it is generated upon two possible actions:

  1. A conversation has its status updated to 'closed' (while the existing chat interface is still in use).
  2. The /sync slash command in the new chat experience is used.

If you have an app that is listening just for conversation close events, you can switch the app to listen to this new webhook right away.

See Webhooks: Subscribing to Drift Events for more details

conversation_inactive

We want to reduce friction in the chat experience as much as possible, and we know that adding extra actions in users' workflows is a pain. Users don't want to worry about if their leads make it to their CRM. We want it all to happen automatically.

The conversation_inactive webhook fires for every conversation after it has been inactive for 10 minutes (soon to be configurable by each organization). Apps can subscribe to this webhook event if they want to know about every conversation that occurs. Once the time period is configurable, organizations that want faster feedback may tune their inactivity period to their liking.

See Webhooks: Subscribing to Drift Events for more details

conversation_push

We want to make the drift developer experience as easy as possible. We know you might not want to subscribe your apps to two event streams for a single use case!

The conversation_push event is a combination of the two events above, converation_manual_push and conversation_inactive. Whenever one of those is fired, a corresponding conversation_push event will also be fired. This way, your app only needs to listen on a single stream of information for understanding when a conversation is ready to be consumed.

See Webhooks: Subscribing to Drift Events for more details

What will happen to conversation_status_updated?

We know that updating is hard. We want to make this transition as smooth as possible.

conversation_status_updated will continue to function until Oct 1, 2020.
As the new chat experience is rolled out to more users, fewer conversations will have their status changed, but we don't want the apps still using the conversation_status_updated to miss any data.

Starting on June 1st, 2020, the events being emitted by conversation_inactive and conversation_manual_push will also be broadcast as conversation_status_updated events that will look like conversation close events.

For example, say the following conversation_inactive event was sent by the Drift system:

{
  "orgId": 1,
  "type": "conversation_inactive",
  "data": {
    "lastUpdated": 1591813767000,
    "conversationId": 123456789
  }
}

A subsequent conversation close event would be broadcast that looks like the following:

{
  "orgId": 1,
  "type": "conversation_status_updated",
  "data": {
    "conversationId": 123456789,
    "status": "closed",
    "changedAt": 1591813767000
  }
}

Note that the status in the payload above is set to closed. In particular case, regardless of if the conversation was actually closed or not, this conversation close event would be broadcast.

Timeline

April 1st, 2020:
Replacement webhook events for conversation_status_updated are available on the Drift Developer Platform. This includes conversation_manual_push, conversation_inactive, and conversation_push

April 15th, 2020:
The conversation_status_updated option will be removed from the app webhook configuration page in the Drift developer platform (aka https://dev.drift.com). All apps currently subscribed to the conversation_status_updated event will still see it in their configuration and will continue to receive events. No further apps will be able to subscribe to the event

June 1st, 2020:
conversation_status_updated will begin sending events indicating a conversation has been 'closed' based traffic from on the conversation_inactive and conversation_manual_push events, even if the conversation has not been closed. This is to allow any apps that remain on the legacy conversation_status_updated event to continue to receive close-related events for conversations that are considered ready for consumption

October 1st, 2020:
conversation_status_updated events will stop sending and the event will be completely removed from the Drift developer platform.

Where to get help?

The Drift Community is a great place to ask questions and get help from the Drift engineering team as well as other Drift developers! Join the community here

Premium and Enterprise accounts can reach out to their CSMs for further assistance in building applications.