The main thing that the Survey app's placeholder {{dc.survey_app_snippet}} does is to place some HMTL into your trigger to ask for a score from 0 - 10. Simple right? Well not exactly, there's a little more to it than that...
In order to make sure a customer can only rate their own tickets (ie. the rating is secure), the survey app stores a user token on an invisible user field. The way that it does this is that when a ticket gets created or updated, the survey app will check the user and make sure they have a token. If they don't, then at this point it generates one and adds it to the user.
So when the survey is sent, the magical placeholder pulls in that token and uses it as part of the 0-10 links so that SweetHawk servers know what ticket is being rated and who is rating it.
The thing to note here is around how a user is assigned a token. As mentioned above, this takes place instantly on any ticket update. But, if the first update of the ticket triggers the survey to be sent (eg. you create a ticket and mark it solved at the same time) then the app has not had the single update it needs to grant the user token, and thus the requester will receive an error message if they click an item in the survey.
This is something to consider when you first start using the app, since you'll have a lot of tickets in all different states. For some of them, the very next update will be the trigger or automation that sends the survey. So you might consider running a global automation that updates all existing tickets in some way (eg. adding a tag).
However, to prevent this from ever happening, there are a couple of things you can do depending on if you send the survey using an automation or a trigger.
For automations, in your list of conditions, simply add the rule:
"Requester: Survey App token" - "Present" like this
This means the automation will only send the email for requesters that have their survey app token set.
For triggers, you can add conditionality around the survey placeholder so that it is only included if the requester token exists like this:
Here is a copy-able version of the condition in the picture above:
{% if ticket.requester.custom_fields.survey_app_token %}We'd love to hear what you think of our customer service. Please take a moment to answer one simple question below:
{{dc.survey_app_snippet}}{% endif %}