Recent searches


No recent searches

Restrict Sending Surveys every 30 days from Last Survey Sent



Posted Dec 17, 2020

I wanted to share the method I use to restrict sending surveys to customers only if they haven't gotten a survey from us in the past 30 days.      I wanted to give Credit to this article from Graeme - https://support.zendesk.com/hc/en-us/community/posts/115007818067-Restricting-Satisfaction-Surveys-by-Date - which got me part way there but there was enough of a difference I felt was worth sharing the setup I came up with to accomplish this.

PREP  

You'll want to start by creating two User Fields (Admin -> Manage -> User Fields) which will be used in the Automations we setup late.

Send Survey - Drop Down List with two values - Yes and No.

And a Second User Field named - Last Satisfaction Date - which will of course be a Date Type.

Next, like in Graeme's setup we'll want to setup an HTTP Target (Admin -> Settings -> Extensions).   Setting are as described in that article:

Title: Survey Date Target

URL: https://YOURURL.zendesk.com/api/v2/users/{{ticket.requester.id}}.json

Method: PUT

Content type: JSON

Automation Setup

Now comes the fun part.     I went through some trial and error with this to find the simplest setup that would achieve what we wanted (sending surveys only every 30 days) and found it required 3 Automations.

Default User Setup Automation

For this to work I found that we needed to put a user who had never received a survey from us into a default state and that this automation had to come before any others.

Here's how that Automation looks:

Pretty straightforward, if a ticket is solved/ closed and the requester on that ticket doesn't already have a setting for "Send Survey" give them the default value of "Yes".   This automation should only be run once, the first time a new end-user comes into the system but it's an important step to make sure the following automations run properly.

Check Survey Date Automation

The second automation handles the important task of checking whether the customer who recently submitted a ticket had a survey in the past 30 days.   We do this by checking if the date in the "Last Satisfaction Date" is either the current date or earlier and the customer currently has the "Send Survey" field set to No.    Both of these fields are set by the 3rd and final Automation which I'll show next.   I set this check to look back 1000000 days just so we were covered if the customer hadn't written in for a long while.    Here's what that automation looks like:

 

Survey Automation

This is the all important survey Automation that of course sends the survey to the end user but also updates the user fields so the preceding Automation works properly.

There's a few things happening here that I'll break down.

1.)   First we check of course if we want to send a Survey (ie.  Is "Send Survey" set to yes.).     This value is set by one of the two previous automations.

Note:   There's a section in there where we add a "survey_sent" tag which was part of an earlier solution we were using so this piece can probably be removed.

2.)   Next we just send the survey or survey link we want the customer to fill out.

3.)   Then we send the JSON request to the target we created earlier.   This JSON request updates the "Last Satisfaction Date" field with a date that is 30 days in the future.    This is how we ensure the "Check Survey Date Automation" only flips the "Send Survey" value back to yes once this date has been reached.

{
"user": {
"user_fields": {
"last_satisfaction_date": "{{ 'now'|date: '%s' | plus: 2592000 |date:'%Y-%m-%d' }}"
}
}
}

4.)   And lastly we set the "Send Survey" user field to "No" so the customer won't receive any more surveys even if they write in every day UNTIL they reach that date 30 days.   At that point the 2nd Automation kicks in and flips this back to "Yes" so we can send a new survey.

And that's it!    Here's how the order of Automations look in our Automation List:

Anyways I hope people find this helpful.  Happy to answer any questions if I can.

-Melissa


1

8

8 comments

Hello Melissa,

This article is really helpful for us. the only issue we still have that if we have receieved e.g. 3-4 tickets in last 30 days. and we want to send only one survey to the customer not for every ticket. 

How it can be achieved?

I have tested the solution you have provided above, it trigger for each ticket . But we want to send only single survey after every 30 day, either customer wrote us 3 or four time.

 

Kind Regards

Charanjeet kaur

0


image avatar

Dane

Zendesk Engineering

Hi Charanjeet,

Based on the conditions presented on this workflow, it should also restrict sending surveys on multiple tickets for it's using the actual last satisfaction date as the condition to send surveys. It's possible that when you have enabled the automation for sending the survey those tickets were already created therefore it fired for all the existing tickets.

0


Hi Charenjeet,

Did you manage the resolve your issue, as I've experiencing the same problem in testing.

It seems the survey is not sent until the satisfaction date changes from future to past over time, but then fires a survey for all tickets created within that period. So if they client has contacted us 3 times that receive 3 surveys at once.

0


Hi,

Hoping some can offer some guidance on this process.

All works great and as expected, except if I solve 2 or more tickets within the same time period from the same requester 2 or more CSATs are sent. 

Any idea how to restrict this so it just gets sent to only 1 ticket?

 

 

 

 

 

0


image avatar

Dainne Kiara Lucena-Laxamana

Zendesk Customer Care

Hi Stephen Keogh,

By design & as stated here: About CSAT (Customer Satisfaction) ratings in Zendesk Support

  • Satisfaction rating is per ticket, not per customer. End users receive a survey request for each of their tickets that are solved.

 

This is due to the survey getting sent out via Triggers. Triggers only check the ticket's data and does not check other ticket data in order for it to run. If you currently have a workflow wherein you would have multiple tickets open for the same end-user, it would be best to create a more manual approach for the survey to get sent out. For example, you can create a Macro wherein it adds the 
"Offer CSAT - is - checked" to a ticket. Then, use that as a Trigger condition for the CSAT Trigger.

0


HI Dainne,

Thank you for the insight.

The process you have advised is at a more basic level than this article has already outlined.  

In the article using APIs we are able to limit the number of CSATs to a requester not just tickets so I was hoping there might be a more granular solution to limit it when multiple tickets are in the automation window but based on your comment this is likely not possible.

Thanks

Stephen

0


image avatar

Dainne Kiara Lucena-Laxamana

Zendesk Customer Care

Hi Stephen Keogh,

At the moment, this would be Zendesk's recommendation which yes, is a bit basic compared to the tip provided by Melissa.  Maybe some members of the community may have other ideas or share their workflow that currently works for them!

0


I used this 3 automation solution, it is working except working with the data,  I no longer have any tickets with ‘offered’ satisfaction.  It looks like the automation will require this: CSAT statistics in Explore reporting are created via the satisfaction offered or satisfaction unoffered field. If a CSAT automation doesn't include the action Ticket: Satisfaction | Offered, it will not count the action as a sent survey. This can skew your reporting and give false 100% response rates by accident. Make sure and check your automations for that condition.    I would really appreciate a modification to the automation to get this to work. 

0


Please sign in to leave a comment.

Didn't find what you're looking for?

New post