Goodays Survey Technology

Everything happens with a simple url

At Goodays, we always aim for simplicity and effectiveness! This may sound obvious but when it comes to transmitting data between systems, it often get more complicated than this!

There is a single method to transmit information to Goodays to collect participation and it is through a simple url!

Goodays solicitation url format

All Goodays solicitation urls have the same format :{token}/
    &cz_answer=<Star rating (from 1 to 5)>
    &cz_extuid=<unique identifier>
    &cz_x_<additional_information_1>=<first additional information>

This may seem complicated but we will go through all those fields in details.


This field has the simple job of receiving the Point of Sale id in order to identify the store and attach the participation to it.


This field is used to transmit data regarding the solicited customer. The information here has to respect the following format :


All information have to be separated by a pipe "|".


What is cus_id ?

This field represents the id of the customer within your system (CRM for instance). At Goodays, we do not use this information but it will appear in the data you will be able to retrieve from Goodays. It is a pivot key to reconcile with your data.


As this parameter are specified via an URL, you must encoded in Base64 this value.


Phone number format

We recommend using the E.164 standard.

E.164 numbers are formatted [+] [country code] [subscriber number including area code] and can have a maximum of fifteen digits.

An example of a French phone number in the E.164 format is : +33612345678

For your information, a Goodays script normalizes the received phone numbers to the E.164 format. This means that formats such as 0033 or 06 (for French phone numbers) will be transformed in +33xxxxxxxxx.

:warning: Be careful though, as normalization is not guaranteed in 100% of cases, especially in border areas. A French number is valid as an Italian or Belgian number, but it's 3 different people behind, impossible to know which one it is without a country code.


With this field, you are able to send the answer to the first question of the survey.
We always recommend to place the global satisfaction question in the first place, so the possible values are 1 to 5.
If this field is absent, the customer will have to answer to this first question.


The information here implements the unique participation feature. Learn more here!


Here is where the real magic occurs!
This type of fields are here to transmit information about the context of the participation.
For example, you can transmit the segmentation code of the current customer, the amount of the purchase or any information you consider relevant for local users to help them answer in the best way possible or to create statistical filters.
All those information will be attached to the participation, as simply as that!


As these parameters are specified via an URL, you must URL-encode their values.

The importance of customer data

When a customer is solicited, it is truly important that its personal information are sent to Goodays using the cz_user field. Having these information in the url allows several things :

  • No anonymous participations. If you know who had an experience with your brand, it makes no sense to not know who gave you a 5-star review or is dissatisfied.
  • Smooth the feedback phase. Asking for a text feedback is asking for a commitment from the customer. It is an effort and we want to facilitate this step by asking as few information as possible. By having the customer information, we will be able to pre-fill these information and not ask them to the customer. This will ensure a high ratio of verbatim!
  • Answer to dissatisfied customers. Goodays offers a feature to trigger an alert to the local users when a customer answers with a low score and so start a discussion. This feature requires to have the information of the customer so the conversation could happen.

Unique participation

Unique participation is a mechanism to prevent customers to answer several times to the same questions
It is based on the combination of several information and requires having a unique identifier in the solicitation url : cz_extuid.
This information could be the ID of the solicitation, a timestamp, the ID of the purchase, ...

  • When a customer replies to every questions of the survey and clicks again on the solicitation link, Goodays doesn't present the questions (as they already have been answered) but the verbatim interface.
  • If a customer starts the survey but doesn't answer to all of the questions and clicks again on the solicitation link, Goodays presents the questions and the previous answers are replaced by the new ones.

The shortlink system that make everything simpler

Why is it useful?

You may have notice that, at the beginning of the solicitation urls, there is a token. This token is used to retrieve the destination url in the Goodays database.
The destination url is a little more complex than the starting one. When the request arrives in the shortlink, we add other information to the url and we also add a layer of security.

Data flow

During the process of solicitation and collect of feedbacks, the data inside the solicitation urls go through several steps:

  1. The data is in your CRM
  2. The data is processed by your routing software
  3. The email arrives in the customer's inbox
  4. The customer clicks on the solicitation link
  5. The customer reaches the shortlink
  6. The customer is redirected to the Goodays widget
  7. The Goodays widget opens and the survey starts


Default security

Given the steps mentioned previously, we discover that all of those steps are secured with the exception of the 6th step, redirection to the Goodays widget!
At this point, the customer data are present in the url and therefore can be "seen" by customers and possibly recovered by a malicious person.

With this in mind, we added an extra layer of security to prevent other parties to access these data.

Before redirecting to the destination url, the shortlink will encrypt the cz_user and all the additional cz_x information to make them unreadable by anyone but Goodays.
The data are encrypted with the AES256-CBC Encryption algorithm.

With this step, the data in the url are secured throughout the entire flow!

End-to-end encryption (option)

If you want to further secure all the steps of the data flow, you can directly push the encrypted data to us!

In this case, you must be able to encrypt the cz_user and additional cz_x information using the AES256-CBC encryption algorithm with the encryption key and Initialization Vector (IV) that we will provide.

:arrow-right: Need more details on how to set up end-to-end encryption?