Remark types

📘

What's that?

The remark type is the category of the verbatim left by the end customer: Idea, Praise, Problem or Question.

The exchanges between a pro user and the end customer after the first verbatim are typed as "Message".

👍

Going further

Consult the general Metrics API documentation for more.

How do I get my remark type metrics?

With /stats/remarks:

curl --location --request GET 'https://api.goodays.co/v2/stats/remarks' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
    "data": [
        {
            "key": null,
            "description": null,
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        }
    ]
}

By default the calculation of the score is done "since always".
And the return will always contain:

AttributeDescription
keyDistribution key ID.
descriptionDescription of the distribution key.
countNumber of participations in the selection over the requested period.
IdeaParticipations with a verbatim of type "Idea".
PraiseParticipations with a verbatim of type "Praise".
ProblemParticipations with a verbatim of type "Problem".
QuestionParticipations with a verbatim of type "Question".
MessageExchanges between a pro user and the end customer after the first verbatim.
countNumber of participations for the remark type observed over the requested periods for the Idea, Praise, Problem, Question or Message.
percentagePercentage of participations for the remark type observed over the requested periods for the Idea, Praise, Problem, Question or Message.
📘

Zoom on "key" and "description" attribute

This attributes are Only filled in when "by", "by_context" or "by_level_category" is used.
Otherwise they have the value null.

Add some filters

It is possible to add GET parameters to refine the calculation of the score over a defined period, a point of sale...

GET parameters

To calculate remark type metrics it is possible to combine the following GET parameters:

GET parametersDescription
beginStart date of the calculation period.
Format : YYYY-MM-DDThh:mm:ssZ
See this page for the timezone management.
endEnd date of the calculation period.
Format : YYYY-MM-DDThh:mm:ssZ
See this page for the timezone management.
placeFilter on a point of sale.
It is necessary to indicate the Place ID from the endpoint /places.
placesFilter on a list of points of sale.
Format : Place IDs separated by commas.
levelFilter on a level.
It is necessary to indicate the ID of the level from the endpoint /levels.
levelsFilter on a level list.
Format : Level IDs separated by commas.
surveyfilter on a survey.
It is necessary to indicate the ID of the question from the endpoint/surveys.
questionFilter on a question.
It is necessary to indicate the ID of the question from the endpoint/surveys.
npsFilter on nps category : "detractor", "passive", "promoter".
context_

Filter on a value of a custom parameter.
To construct this parameter you need to concatenate the prefixcontext_and one of thekey attribute returned by the endpoint /configuration.

See the ℹ️ block below.

remark_typeFilter on remark type : "Idea", "Message", "Praise", "Problem", "Question".
sourceFilter on source : "email", "facebook", "google", "sms", "tripadvisor", "widget", "wifi".
byGroup calculations by.
See chapter by.
by_contextGroup calculations by custom parameter.
See chapter by Context.
by_level_categoryGroup calculations by level category.
See chapter by Level Category.
📘

Get an updated list of values for the "context_" parameter

A custom parameter is additional data attached to a participation to describe its context (order date, purchase amount, advisor...).

The list of your custom parameters depends on your Goodays configuration and can be retrieved by the endpoint configuration. Only the custom parameters with the field "use_in_stats" = true can be used with this parameter.

See "By context of the purchase amount" use case.

📘

Get an updated list of values for the "source" parameter

The examples listed for the "source" parameter are not exhaustive. To obtain an exhaustive list, the endpoint /stats/remarks must be called by indicating an unexpected value. In return the error message will list all possible values.

Group calculations

The three "by" parameters allow you to retrieve a list of results aggregated according to the value selected in the input.

📘

Combine the "by" or not combine the "by" ?

You can combine several other GET parameters with a "by" but you can not combine the filters "by", "by_context" and "by_level_category" in a single request. Only one aggregation parameter is allowed.

Here are the 3 possibilities :

By

Calculate the remark type metrics by grouping elements and return a list.

The distribution of the calculation can be by : "day", "month", "nps_category", "place", "quarter", "remark_type", "source", "survey", "year".

See "By point of sale over the month of May 2020" or By month for one level and a specific source use cases.

By Context

Calculate the remark type metrics for each value of the custom parameter passed as a parameter and return a list.

A custom parameter is additional data attached to a participation to describe its context (order date, purchase amount, advisor...).

The list of your custom parameters depends on your Goodays configuration and can be retrieved by the endpoint configuration. Only the custom parameters with the field "use_in_stats" = true can be used with this parameter.

See "By context of the purchase amount" use case.

By Level Category

Calculate the remark type metrics by level category and return a list.

The categories represent your hierarchical or geographical organization depending on your Goodays configuration.

From these categories, you can calculate the remark type metrics distributed by region, business unit, brand, etc.

The category ID to be used is returned by the endpoint /levels, in the "category_id" attribute.

See "By level category" use case.

Use cases

Here are some examples to show you the possibilities of this endpoint. This is obviously not exhaustive, it's up to you to have fun to find the right parameter arrangements :)

By point of sale over the month of May 2020

I have to use the following parameters :

  • begin : the first date of the month of May
  • end : the last date of the month of May
  • by : group calculation by "place"
curl --location --request GET 'https://api.goodays.co/v2/stats/remarks? \
   begin=2020-05-01T00:00:00Z \
   &end=2020-05-31T23:59:00Z \
   &by=place' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
    "data": [
        {
            "key": "bwdQ661e4Q",
            "description": "VÉLO Chambéry (Chambéry) - velo-chambery",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        },
        {
            "key": "bQdPLrmwd9",
            "description": "VÉLO Berlin (Berlin) - velo-berlin",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        },
        {
            "key": "My4lvMpK8R",
            "description": "VÉLO London (London) - velo-london",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        }
    ]
}
📘

Zoom on "by" parameter

Here the "by" distributes the calculation by point of sale. The attribute "key" contains the Place ID of the point of sale and the "description" its name.

For one end customer

I have to use the following parameters :

  • email

Tips : you can add the parameter "by" with the value "place" to get a distribution of this end customer's scores by point of sale.

curl --location --request GET 'https://api.goodays.co/v2/stats/remarks? \
[email protected]' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
    "data": [
        {
            "key": null,
            "description": null,
            "count": 6,
            "Idea": {
                "count": 0,
                "percentage": 0
            },
            "Praise": {
                "count": 1,
                "percentage": 20
            },
            "Problem": {
                "count": 2,
                "percentage": 40
            },
            "Question": {
                "count": 0,
                "percentage": 0
            },
            "Message": {
                "count": 3,
                "percentage": 60
            }
        }
    ]
}
📘

Zoom on "by" parameter

Here there is no "by". The attribute "key" and "description" contains "null".

For one custom parameter

I have to use the following parameters :

  • context : "contextservice"

Hypothesis: in our configuration we have a "Service" custom parameter with a service key

curl --location --request GET 'https://api.goodays.co/v2/stats/remarks? /
	context_service=vegetables' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
    "data": [
        {
            "key": null,
            "description": null,
            "count": 8379,
            "Idea": {
                "count": 771,
                "percentage": 9.201575366988902
            },
            "Message": {
                "count": 0,
                "percentage": null
            },
            "Praise": {
                "count": 4725,
                "percentage": 56.390977443609025
            },
            "Problem": {
                "count": 2596,
                "percentage": 30.98221744838286
            },
            "Question": {
                "count": 287,
                "percentage": 3.4252297410192147
            }
        }
    ]
}

If the value is not known an error is returned:

curl --location --request GET 'https://api.goodays.co/v2/stats/remarks? /
	context_service=vegetables' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
    "context value": "Unhandled value vege for parameter context_service"
}

By month for one level and a specific source

I have to use the following parameters :

  • source : "email"
  • level : level ID
  • by : "month"

Hypothesis: in our configuration the level ID "Yqxzp5Ad2J" corresponds to your level "South France"

curl --location --request GET 'https://api.goodays.co/v2/stats/remarks? \
source=email \
&level=Yqxzp5Ad2J \
&by=month' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
    "data": [
        {
            "key": "2020-04",
            "description": "2020-04",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        },
        {
            "key": "2020-05",
            "description": "2020-05",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        },
        {
            "key": "2020-06",
            "description": "2020-06",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        }
    ]
}
📘

Zoom on "by" parameter

The attributes "key" and "description" both contain the relevant year and month.

By context of the purchase amount

I have to use the following parameters :

  • by_context : "price"

Hypothesis: the custom parameter exists in your configuration and is present in every participation.

curl --location --request GET 'https://api.goodays.co/v2/stats/remarks?by_context=price' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
    "data": [
        {
            "key": "3Q54E78yD9",
            "description": "Entre 500 et 1000€",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        },
        {
            "key": "lZmxo9dj6G",
            "description": "Entre 200 et 500€",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        },
        {
            "key": "NEexq5xYzW",
            "description": "Supérieur à 1000€",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        }
    ]
}
📘

Zoom on "by_context" parameter

Here the "by_context" distributes the calculation by custom parameter "price". The attribute "key" contains the ID of the custom parameter value and the "description" its name.

By level category

I have to use the following parameters :

  • by_level_category : "2"

Hypothesis: in our configuration the level category "2" corresponds to your regions.

curl --location --request GET 'https://api.goodays.co/v2/stats/remarks?by_level_category=2' \
--header 'Content-Type: application/json' \
--header 'Authorization: 1234abcd1234abcd1234abcd1234abcd'
{
    "data": [
        {
            "key": "LAEd7rX893",
            "description": "Bretagne",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        },
        {
            "key": "ELxjpqAdKg",
            "description": "Berlin",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        },
        {
            "key": "OKQ4eXAdeW",
            "description": "Provence-Alpes-Côte d'Azur",
            "count": 150397,
            "Idea": {
                "count": 36094,
                "percentage": 23.999148919193868
            },
            "Praise": {
                "count": 80626,
                "percentage": 53.60878209006829
            },
            "Problem": {
                "count": 28532,
                "percentage": 18.971123094210657
            },
            "Question": {
                "count": 4734,
                "percentage": 3.147669168932891
            },
            "Message": {
                "count": 411,
                "percentage": 0.27327672759430044
            }
        }
    ]
}
📘

Zoom on "by_level_category" parameter

Here the "by_level_category" distributes the calculation by level category. The attribute "key" contains the ID of the level and the "description" the level name.


Did this page help you?