> ## Content Index
> Fetch the complete content index at: https://internalnote.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# An in-depth overview of Proactive Messages for Zendesk
- URL: https://internalnote.com/proactive-ticketing-for-messaging/
- Published: 2023-05-09T06:45:54.000Z
- Updated: 2024-08-19T20:36:26.000Z
- Description: Discover the new Zendesk proactive messaging. Learn about the main features and advanced flows, including the ability to show proactive messages based on specific marketing campaigns. Target customers based on their locale, or offer a premier experience to VIP users.
- Author: Thomas Verschoren
- Tags: Messaging

Last month Zendesk [launched](https://internalnote.com/monthly-note-for-april-2023/) their Proactive messages for Zendesk Messaging. This new feature allows you to reach out to customers by showing a small popup on top of your Zendesk widget. If the customer clicks on the message or widget, you can then immediately route them to the right [intent](https://internalnote.com/flow-builder-dinosaurs/) and try to proactively offer them solutions to any questions they might have.

[Announcing Proactive Messages in MessagingRollout start Rollout end March 27, 2023 March 30, 2023 What’s changing and why? We are thrilled to announce, launch of Proactive messages for our messaging customers. It’s our latest additi…![](https://theme.zdassets.com/theme_assets/10557657/4b4b2fe0860351e0e1e6bcf9060550f5c7f163ea.ico)Zendesk helpArpan Nagdeve![](https://theme.zdassets.com/theme_assets/10557657/3cc7e6328cd4f823ed1332d774490412f0531606.svg)](https://support.zendesk.com/hc/en-us/articles/5540317327770-Announcing-Proactive-Messages-in-Messaging-?ref=internalnote.com)

Proactive messages basically offers the same functionality as the old Zendesk Chat [triggers](https://support.zendesk.com/hc/en-us/articles/4408842880282-Zendesk-Chat-triggers-conditions-and-actions-reference?ref=internalnote.com), albeit with a lot less options. The new feature misses visitor location, time stamps, page view count, tags or reacting to a customer initiating the chat.  
What we lose in functionality, we win in ease of use. The new Admin UI is a breeze to use with a modern UI, a better flow to setup the messages and build-in reporting.

Proactive messages are currently available for the [Web Widget](https://support.zendesk.com/hc/en-us/articles/5511266103834?ref=internalnote.com) and [Mobile SDKs](https://support.zendesk.com/hc/en-us/articles/5511216991898?ref=internalnote.com).

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/preview.png)

In this article we'll dive into the main feature set, and then go into more advanced flows. One more advanced flow allows you to show proactive messages to customers that match a specific marketing campaign, based on UTM Campaigns tags.  
We build a specific flow based on a customers' locale, and combine Messaging authentication and tags to offer a premier experience you your VIP users.

Let's dive in.

# Feature Preview

You can test out the flows described below on this page.

[https://demo.internalnote.com/proactive](https://demo.internalnote.com/proactive?ref=internalnote.com)

Some flows use specific code to make them work, especially the logged in user scenario. Take a look at the repository to see how it works:

[GitHub - verschoren/zendesk\_widget: Zendesk has a nice Web Widget to embed your contact channels and FAQ on any page of your website creating a consistent experience that aligns with your brand.Zendesk has a nice Web Widget to embed your contact channels and FAQ on any page of your website creating a consistent experience that aligns with your brand. - GitHub - verschoren/zendesk\_widget:…![](https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg)GitHubverschoren![](https://repository-images.githubusercontent.com/647671522/79e4a3b1-3853-4473-983f-c8bcf28c922f)](https://github.com/verschoren/zendesk%5Fwidget?ref=internalnote.com)

# Let's start with a basic Setup

We'll start with a pretty straightforward example. A customer visits our sample page and looks at the homepage for 30 seconds.

They're greeting with a welcome message that then shows info about this website.

The way it's setup is as follows:

## Compose the message

1. We first create a new proactive trigger and assign it to the right brand and channel.
2. We then Set a proactive greeting and select the `Bot` option.
3. We already build an Intent "About Internal Note" which we can use for this trigger.

## Triggers

Next up we select a trigger. Triggers are basically the rules that define when a trigger will fire. We can select both Visitor based options (title, url, repeat visitor), or Device based rules (Language).

For this basic example we'll set a rule as follows: `Visitor.Page URL is https://proactive.internalnote.com` . This will match our homepage exactly, and will make sure it won't fire on subpages. If you change the trigger to `contains at least one of` the trigger will fire on any page.

## Frequency and Timing

Once we setup that trigger we can then choose when we want the message to appear. 

- We can choose to show the message upon payload or after a delay
- We can choose between always and outside or inside business hours
- We can choose to show the message once per user, once per session or each time.

For this basic demo I chose to show the widget after 30 seconds, ignore business hours and show it once per session. You can test it out on [https://demo.internalnote.com/proactive](https://demo.internalnote.com/proactive?ref=internalnote.com)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/welcome_01.png)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/welcome_02.png)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/welcome_03.png)

# Advanced Flows

In this next section we'll build three advanced flows:

1. A way to target customers based on marketing campaigns.
2. A premier experience for your VIP customers build on top of Authentication.
3. Handle customer locale for better assignment and routing.

# Target based on URL Parameters

Sometimes just targeting based on the page path is a bit to generic. Luckily the `Visitor.Page URL` rule is flexible enough to even target specific tags and parameters in the URL. Which opens a world of possibilities:

- You can a marketing campaign and want to target users with a specific `?utm_source` or `?utm_campaign` tag.
- You run a webshop and want to target visitors that are looking at a very specific variant `?variant_sku=1977`

## Example

I have two example product pages on my demo environment:

- A regular Product page that most customers visit - [link](https://demo.internalnote.com/proactive-product.html?ref=internalnote.com)
- The same product page but tagged with an `utm_campaign=trex` tag. This tag is for example added when customers arrive at the page from a specific ad. - [link](https://demo.internalnote.com/proactive-product.html?utm%5Fcampaign=trex&ref=internalnote.com)

The regular page shows the proactive message on the left, whereas the customers matching my campaign get a specific promo message.

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/compare.png)

## Setup

If you only wish to target the `campaign` users, you can create a proactive flow that has the following rules:

- A rule to match the campaign tag: `Visitor.Page URL contains at least one of utm_campaign`
- A rule to restrict only to product pages: `Visitor.Page URL contains at least one of product`

If you want to create proactive message per campaign you can create multiple proactive messages which each exactly mapping to one campaign tag:

- Proactive Message #1: `Visitor.Page URL contains none of utm_campaign=trex`
- Proactive Message #2: `Visitor.Page URL contains none of utm_campaign=raptor`

In my demo I created a generic trigger for product pages that don't contain a campaign tag, and a custom one for the T-Rex campaign.

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/tagged_03-1.png)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/tagged_not_02-1.png)

# Flow 3: Offer a premier experience to VIP Users 

The next flow expands on the custom URLs flow but combines it with [Messaging authentication](https://internalnote.com/jwt-messaging/).

## Example

We have a website where customers can login with their account.  
Once logged in we have two types of users:

1. Our VIP users - [link](https://demo.internalnote.com/proactive-contact?ref=internalnote.com#vip)
2. Our regular users - [link](https://demo.internalnote.com/proactive-contact?ref=internalnote.com)

Our webmaster made it so that whenever a VIP user logs in we get a unique hash added to the URL `#vip`. We can now setup a rule that checks for the `hash` in the URL and immediately shows a proactive message that will contact the VIP Customer to an Agent, instead of the Chatbot.

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/vip.png)

## Setup

This flow is a bit more complex though than just another URL rule.

The page also makes use of the [Authentication Flow](https://internalnote.com/jwt-messaging/) of Messaging. This makes it so that the logged in VIP users not only get a notification we're there to help them, we also:

- Add a tag to those tickets `VIP` so we recognise them in Support
- We authenticate so the user is not asked for a name or email
- If any conversation was already active, they can just resume their session.

⁉️

There's currently a bug where, if you select the `Agent` flow for a Proactive message, and have an authenticated user, the message will still asks for details but not show the fields for the user to fill in

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/tagged_02-1.png)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/tagged_03-2.png)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/proactive_tagged_05.png)

Regular users have the benefit of being logged in too on this page, but aren't prompted for support and will have to pass the Chatbot first.

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/tagged_not_01-2.png)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/tagged_not_02-3.png)

⁉️

It would be awesome if we could somehow have "Logged In" as a rule condition for Proactive Messages, this would remove the need for the `#VIP` tag.

# Flow 4: Assignment based on locale

This final flow will trigger a specific pro-active message for french speaking customers and will use a `Device.Language` trigger condition.

See [this page](https://demo.internalnote.com/fr?ref=internalnote.com) to test out this flow

## Landing Page

When you have a webpage that serves multiple countries you probably also have a language switcher somewhere on your website that sets the locale of your website. Most often this happens with a `https://domain.com/fr/` path.

Whenever you setup such a flow, it's also useful to force the Zendesk Widget to follow that locale too by adding to your website just below the widget embed code.

```javascript
 zE('messenger:set', 'locale','fr')
```

## Setup the Proactive message

Once we have a website that is localised, and (optionally but advices) a widget that follows that translation, we can create a rule set that uses the `Device` conditions instead of the `Visitor` conditions to trigger a proactive message.

In this scenario we filter on `Device.Language is fr` to react to pages for the french market. Note that we also add a tag `Messaging_French` to these conversations.

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/locale_00-1.png)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/locale_01-1.png)

## Setup an assignment Trigger

Thanks to the trigger, all conversations that start in french will now be tagged with a specific tag, and we can use a trigger to route them to a dedicated team.

🇫🇷

You could also ignore the proactive message tag and just route based on the requester language.

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/locale_02-1.png)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/locale_03-1.png)

# Reporting and impact

The Proactive messaging feature in Zendesk has a nice overview in the Admin Panel to monitor the effectiveness of your campaigns. For each proactive message you can measure the sends, opened and replies in a nice overview.

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/reporting_02.png)

Personally I find it a bit weird that this data is not (yet) a part of Explore, but thanks to the tags used on the tickets created, you can still pull in data into Explore and get some insights in your campaigns there:

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/Screenshot-2023-05-05-at-22.13.28.png)

![](https://storage.ghost.io/c/ca/c0/cac0c82b-bc4d-4404-9eb4-9cc75e8d045e/content/images/2023/05/Screenshot-2023-05-05-at-22.13.39.png)

# Limitations

The examples above show that there's quite a lot of complex flows that can already be build with Proactive messages.   
However, while playing with the tool, some [limitations](https://internalnote.com/zendesk-messaging-feedback/) did come up.

⁉️

When using the [Custom Launcher for Messaging](https://internalnote.com/custom-launcher-for-zendesk-messaging-and-unread-counts/), proactive messages are ****not supported!** See [this](https://support.zendesk.com/hc/en-us/articles/5381304334234/comments/5575083752986?ref=internalnote.com) comment.

## Rules and Conditions

One item I would love is to get access to a users' logged-in state to trigger different messages. This would make the VIP flow above a lot nicer, or would prevent us from annoying logged in customers, while still targeting visitors. similarly, being able to reference the name of the logged in user would be nice too.

Alternatively, rules would benefit nicely from allowing regex matches for more complex parsing and the ability to read localStorage cookies to have more nuanced triggers.

## API

Another omission I find curious is the complete lack of any API or developer toolkits for this.

I would love to be able to trigger a proactive message or intent client side via e.g. `zE('messenger:proactive', 'message', 'type:intent','tag')` 

Similarly, a way to create, update, (dis)able or delete proactive messages via API would make it possible for tools like Hubspot to schedule and deploy campaigns automatically.

Similarly, I'd love to be able to schedule messages. E.g. launch our proactive campaign next Monday.

## Tags

While exploring flows for this article one of the ideas I had was to create a few Proactive Messages tagged with distinct tags (e.g. apple, pear, orange).

My idea was to combine those tags with the new Conditional Step in Flow Builder to automatically select the right path based on the assigned tag.

Sadly, Tags are only applied once a conversation starts, so there is no way for pro-active messages to filter intents.

🥳

Thanks for reading this article and the blog. If you liked this content, please consider ****subscribing** and ****share** this article to your colleagues.