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.
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.
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:
- Indicating that a conversation has ended.
- 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:
- A conversation has its status updated to 'closed' (while the existing chat interface is still in use).
- 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.
Updated 13 days ago