Data queries

Data queries extract data from Medallia Experience Cloud records. The API has different root nodes depending on the type of data (such as feedback or invitations).

The query has the general structure described in Query API. The power of the query is in the Data section.

Of particular note is the fieldData parent entity which represents the data for a given field. When you combine the fieldData with the GraphQL "… on" Query fragments operator, you can extend the field data and get more specific data. Because Medallia Experience Cloud data type can have their own schemas, use inline fragments to explore the graph on each dataType.

alias: fieldData(fieldId:”field_identifier”){
  … on stringEnumFieldData{
    options{
      id
      name
    }
  }
}

Queries return up to 30 results unless you specify a different limit (page size) with the first parameter. See Pagination for details and examples of retrieving "pages" of results instead of all results. Pagination improves performance and makes the results manageable.

Pulling record-level data

It is of paramount importance that anyone consuming the Query API knows its data. This API provides a mechanism to query metadata of each field, and this feature should be used by developers to know exactly how they should use the fields in the queries.

Use the detailed info about each field to build your queries and extract data from Experience Cloud.

Example of query to fetch record level data with filtering, pagination and sorting.

The API has different root nodes for querying record-level feedback, invitations, and contact information.

Data sources

Data sources are the different sets of records from which we are going to fetch or aggregate record-level data values which have a direct link with the record type survey.

In Experience Cloud, measurements are made by analyzing feedback from various signals (surveys, social media, conversations). Each signal is one interaction, and each interaction is a response.

Internally, each response is stored as a survey record regardless of the source.

When a GraphQL operation exposes record-level fields, the data source is the first node of the query, to declare which is the subset of the data we need to retrieve.

Example of Query API call to fetch feedback records.

These nodes allow you to fetch raw Experience Cloud data to display Medallia scores on TV or intranet, or show reports in BI dashboards (e.g. Power BI, Tableau) with advanced filtering options for aggregate and record-level data.

Invitations

Feedback can be solicited with invitations. Invitations are messages to participate in providing feedback. An invitation is a message inviting the customer to give us feedback about an event (an interaction between the customer and your company).

This data source includes all invitations and it also comprises completed surveys (feedback).

Feedback

This data source only includes completed surveys (the set of surveys with status COMPLETED,  EXCLUDED, and AUTOEXCLUDED). It is a subset of the invitations data source, designed to make it easier to query only for feedback (i.e. completed) records.

To see sample feedback queries, see Pull feedback data.

Feedback and Text Analytics

Text Analytics processes text feedback based on defined topics to derive themes that identify sentiment, and calculate impact scores.

Comment fields can be expanded on to retrieve TA information.

Customer profiles

Customers can be known, or they can be anonymous:

  • Known – Name, email, phone number and other demographics such as company loyalty status.

  • Unknown – No personal information is available, only that they gave feedback.

A profile is the collection of known information about a specific customer, gathered over time. Use Query API to fetch customer information by requesting the customerSchema and customer nodes.

For more detailed information about the use of these nodes to consolidate useful data, see Pull profile information.

Aggregation operations

There are two aggregation operations available in Query API: Aggregate, aggregateTable and they require a definition of the data sources to be used in the query. There are additional data sources for aggregations that are not available for record-level queries.

These options are:

  • FEEDBACK – The data sets for aggregation operations regarding feedback are the same as the previously mentioned feedback data set.

  • INVITATIONS  – The data sets for aggregation operations regarding invitations are the same as the previously mentioned invitations data set.

  • FEED_FILES – A processing report which is generated after a feed file is processed.

  • SSO_EVENT_STATS – A survey record used to store statistics about SSO (single sign-on) events.

  • SURVEY_EXPORT_STATS – A survey record created to store the results and stats of a single execution of a survey export.

  • USER_ACTIVITIES – Records that contain end-user activity information like page views or workflow paths.

    Example of Query API call to fetch aggregate feedback records.

    Note: Most of these definitions are imported from the e_survey_type record field values.
Note: To see more information about the different types of aggregations supported by Query API, see Aggregations.

Translations

Medallia Experience Cloud supports using multiple languages for assets such as questions and choice sets from surveys, emails, reports, and survey takers' comments. You can translate the text into as many languages as your company needs.

Query API can return the translated text strings from these assets. You can pass an Accept-Language header so the API returns the output in the specified language, provided a translation of the text strings in that language exists. When there is no translation available, the text strings in the response will be in the source language, which is English by default.

To specify the desired target language in the header, use the 2- or 3-character ISO-639 code as shown in the following examples:

Example: Accept-Language header set to English (en)

Altair GraphQL Client screen open to show "Headers" tab with Language-Accept header set to English (en) and text strings in the response in English.

Example: Accept-Language header set to German (de)

Altair GraphQL Client screen open to show "Headers" tab with Language-Accept header set to German (de) and text strings in the response in German.

Examples: Interactive

You can explore the repositories and find examples that can inspire you on how to write queries for different use cases.