Experience programs

Restriction: This document describes some features that are included in the Winter 2025 release. These features will be enabled automatically as part of the deployment process. If you wish to have these features prioritized for enablement, ask your Medallia expert to file a Feature activation request with Medallia Support.

An Experience program is a container for the tools used to collect, analyze, and act on signals about a particular experience your customers or employees are having with your business. They make it easier for you to understand how your existing programs function, navigate your workflows, and provide a safe container for you to build new programs.

Experience programs can also contain the records — all of the signals, such as survey records, social media records, and call recordings, among others — that relate to the particular experience your customer or employee is having with your business. Linking records to your program helps you easily segment the data on your reports, exports, and configurations by program.

Linking records to Experience Programs enables these records to be used for Customer Profiles and simplifies using the Query API to extract data from Experience Cloud.

Total Experience profiles and Experience programs

A Total Experience Profile provides a single view for a specific customer or account. An evolution of customer tracking, it provides an aggregated view of signals, segment information as well as a timeline of comments.

Simple profiles might provide identifying information, such as a person's name, phone number and email address, but you can also create profiles that provide more detailed information, such as verbatim comments and scores from survey responses. Profiles can also show a log of recent activity between the person or account and your company, including activities taken by agents to resolve alerts.

Signal data can be more than just survey and invitation data. It could be call transcripts or purchasing transactions: anything that captures a signal about the customer or employee.

With total experience programs you can connect various signals in a customer or employee journey and tie it back to customer profiles.

If your ongoing signal collection programs are not in Experience programs yet, migrate them into Experience programs. If your instance adopted Experience programs previously, but you have not been maintaining or using them, evaluate their configuration and adjust them to match the programs that you are running today.

Experience programs provide a single source of experience management and hold the holistic view of the complete path required to build and maintain a scalable, enterprise-level program.

To use and access Experience programs, see Access Signal capture.

Experience programs screen

The Experience programs screen lists all the available programs for that particular company instance. Experience programs are sorted by the last modified date. Use the search bar at the top of the list to search for a particular program.

Layer 1 1 2 3

  1. Details pane
  2. Details pane menu
  3. Search bar

Details pane

Click on an Experience program to reveal its details pane, which summarizes the most important information of the program, such as:

Created
The date and user that created the program.
Last modified
The date and user that last made a change in the program.
Program ID
Unique identifier for the program. Click Copy icon Copy to copy the ID. If you want to associate records created in an importer with this program, then map e_program_id to this ID as a constant value in your data importer. When you create a new importer in the context of a program, this mapping is automatically included.
Additional information section
Lists the different assets the Experience program has. Click Manage next to each asset to access it within the Experience program editor.

Details pane menu

Click More vertical icon the details pane menu to:
Edit program details
Edit the program details such as name, description, and their advanced settings such as:
  • Event timestamp — Select the datetime field that represents when the event that this program is collecting feedback about actually occurred. For example, this can be the date of purchase, date of support call, or checkout date, among others. If none are available, select the creation date of the record.

  • Main score — Select the Main Score field for this program. This will be used in certain reporting features, such as profiles to determine what key score field should be shown in a module (such as Likelihood to Recommend or Customer Satisfaction).

View changelog
This lists the changes made in Medallia Experience Cloud, such as created, modified, and deleted entities. For more information, see Change Log.

Create an Experience program

To create an Experience program:

  1. Click New program.

  2. Enter the program name and, optionally, a description.

  3. Optionally, click Show advanced program details to set:

    • Event timestamp — Date when the interaction that the program measures occurred. Select the field (of Date, Date/Time, or Time data type) that stores the event timestamp. For more information about when the timestamps are assigned to fields, see Feedback record events.

    • Main score — Main score measures the interaction as a whole. The main score field comes from a Rating scale element and it is displayed at the top-left in the Responses Feed module in the form of a smiley-face and its expression and color vary based on each survey taker's choice. Select the field (of Choice set (scale) data type) that stores the Main score.

      Tip: Medallia recommends that you set the main score before you map profiles to the Experience program to keep a consistent score across the timeline.
    • Text Analytics — Disables native processing for one or more languages for the program across the languages with Language Processing set to Native in the Global Text Analytics Settings screen in Medallia Setup. Comments in disabled languages are first translated into one target language (based on the Source Languages shuttled on the Comment Translation screen) before Medallia Text Analytics processes them. After rules are localized, you may enable other Native languages or use the Global Text Analytics Settings configuration to process comments accordingly.

      Restriction: This feature is inactive by default. Ask your Medallia expert to file a Feature activation request with Medallia Support.
  4. Click Save.

Retail store program creation.

Manage Experience programs

Click Manage to access the Experience program editor. Click Edit program to modify the program's name, description, and advanced program details.

How to structure your Experience programs

For each experience that you are collecting feedback about, create an Experience program to store all of the assets required to collect, analyze, and act on the signals. Each program should align to a particular experience signals that are collected, such as a call with a support agent, a stay at a hotel, or a transaction.

We do not recommend creating Experience programs for specific segments (such as Region, Language, or Customer segment) if the tools in each program collect feedback about the same underlying experience unless different teams are responsible for ownership. For example, if you send the same post-stay survey to guests in China and France, you should create one program Post-stay instead of Post-stay China and Post-stay France. However, if you send a mid-stay survey to group of customers in China that is not sent to the customers in France, that case qualifies as a separate Experience program.

Generally, each live survey you are sending should only be used in one program. Although there might be exceptions, a single survey is usually aligned to one Experience program rather than multiple since it generally collects feedback about one specific experience.

Consider these notes when structuring your program:

  • If there is a field (for example, Survey Type or Program Type) that already segments current programs for segmenting user access, reports, for example, it might represent the way you already think about segmenting the data/assets into Experience programs.

  • If your grouping is too high level, you might end up with so many different data importers, survey builds, and fields in a single program that the grouping will not be meaningful or useful for you as an administrator.

  • Segment programs by the default level of granularity you would like to have when segmenting your records. Segmenting records by Experience Program should be able to provide meaningful insights when slicing and dicing data, but not necessarily be the lowest level of granularity possible.

  • Consider how developers at your business would like to extract records via Query API. Consider what groupings of records and fields will be meaningful to them as they integrate Medallia data with other systems and structure your programs accordingly.

When you are migrating existing programs originally created in Classic Setup into the Experience programs structure for the first time, consider how you want to structure your Experience programs before creating them.

If you have existing Experience programs, compare your existing configuration to your desired configuration. If our current configuration does not match the desired configuration, then you can modify your existing Experience programs and create new ones to achieve the desired structure. This documentation will walk you through how to do both.

If you are building out new programs for the first time, see Build an Experience program.

To use and access Experience programs, see Access Signal capture.

Experience program editor

The Program editor is the building area to access the different parts required to set up an Experience program. Navigate through the program editor as desired, without the need of following a specific path, by clicking through using the left navigation pane. From there, you can access:

  • Records — Records linked to the program and their methods for linking them.

  • Importers — Manage and create new import templates to bring in the information you need for your program.

  • Connectors — Connectors linked to the program. Manage and create new connectors to bring in the signals you need for your program.

  • Surveys — Edit and create new surveys for the program.
  • Survey designs — Designs used for the program surveys.

  • Distributions — Create and manage templates and its distribution settings. For information, also see Rules.

  • Link distributions — Create and manage links to distribute the program surveys. For more information, see Anonymous surveys.

  • Reports — Create reports to analyze program feedback.

  • Exports — Create and manage the exports for the program.

  • Fields — Create and manage the fields for the program. To set up Customer Profiles, see Use Contact fields in Total Experience Profiles.

  • Alerts — Alerts linked to the program. Create and manage alerts for the program.

  • Feedback responses — Create and manage alerts feedback response templates.

Important: All the assets (surveys, designs, distributions, links, alerts, reports, etc.) displayed within the program editor are tied to a specific program. You can still access program assets outside the selected Experience program. Assets can be tied to multiple programs as well, check the Used In tab for each asset before making changes to understand if this could impact other programs.

Experience program editor lists the different areas to navigate and create different assets.

Program manager

On the Program manager screen, you can add and remove assets to and from the program. By default, four common system fields are included in programs, but they can be removed if they are not relevant for your program.

To migrate an existing program, click Add assets to find the assets that are relevant for the program. Since assets can be used by multiple programs — for example, one Importer can ingest records for two programs — assets can be tied to multiple programs.

Important: Adding or removing existing assets to programs does not change the distribution conditions for those assets and will not impact how your assets behave. The Experience program is a container to group related assets and visualize them together. Be sure that how you group your assets into programs accurately reflects how your programs work.

Click Arrow right icon on the collapsed menu to expand it and see the links for each available asset. Click Edit in ... to navigate into any part of the program to make updates and/or create new assets in the Experience program editor or the asset link to update it directly.

Program manager area in an Experience program.

To maintain documentation or analyze your program configuration offline, click Export documentation to download the summary representation of all assets into an XLSX file.

Worksheet showing representation of all assets in the Experience program

Add assets

To find assets to add to your program:

  1. From the Program manager section, click Add assets.

  2. Select the Asset type.

    Note: When you select the Fields asset type, Experience Cloud shows an additional filter to find the fields used in a particular survey, importer, or export, only selected fields get added to the Experience program. When you select the Reports asset type, Experience Cloud shows an additional filter to find the list of reports by assigned roles.
  3. Scroll down or use the search bar at the top of the list to search for a particular asset within the chosen Asset type.

  4. Select Checkmark icon the relevant assets that belong to the program.

  5. Click Add.

Important: Importers and Surveys also add the fields used in them to the program. If some fields are not relevant, they can be removed later.

Once you add the assets, they are shown on the Program manager screen.

Add Assets shows all Surveys with the name 'retail' to add to the program. Retail Store (Store select) and Retail Store (Receipt) are selected.

Remove assets

When some fields are not relevant or you made a mistake, remove the assets:

  1. From the Program manager section, click Remove assets.

  2. Select the Asset type.

    Note: When you select the Fields asset type, Experience Cloud shows an additional filter to find the fields used in a particular survey, importer, or export, only selected fields get removed from the Experience program. When you select the Reports asset type, Experience Cloud shows an additional filter to find the list of reports by assigned roles.
  3. Scroll down or use the search bar at the top of the list to search for a particular asset within the chosen Asset type.

  4. Select Checkmark icon the relevant assets to remove from the program.

    Screen capture showing the remove assets tool

  5. Click Remove.

Important: Fields added by Importers and/or Surveys remain in the program, unless you select them from the Fields Asset type. Removing the Importers and/or Surveys do not remove the fields from the program.
Restriction: Contact fields are shown but cannot be selected in the Remove Assets modal dialog. Go to Program fields to remove them.

When you select a survey or an importer to remove from the program, you can optionally select to remove the unique fields in the asset. When you select to remove the fields in the asset, then — when the asset is removed — any fields uniquely added to the program by that survey or importer are removed from the program. When you do not remove fields, then no fields used in that asset are removed.

When you remove fields while removing multiple surveys or importers, any fields which are uniquely used in those assets are removed. Consider this scenario: there is a program with only Survey 1 and Survey 2. Survey 1 uses Field 1 and Survey 2 uses Field 1. If you removes only Survey 1 and select to remove fields, then Field 1 stays in the program, because it is still used by Survey 2. If you remove Survey 1 and Survey 2 at the same time, then Field 1 is removed, because it is no longer being used by any assets in the program.

Records

Records are linked to programs via Program (a_program), which stores all the programs on a particular instance.

Records are linked to programs to make it easy for you to segment by program when building surveys, templates, reports, alerts, exports, or any other asset that you want to use specifically for records from a particular program.

While you can navigate the program editor as desired, Medallia recommends that you map Contact fields to Profile fields before you link records to an Experience program: when a Contact field has the same value in multiple records, Experience Cloud identifies those records as being from the same person, and associates the records with the same profile. This increases the speed at which Experience Cloud can process profile data. For information, see Program fields.

For example, when building a dashboard, you can filter data by a particular program so the dashboard only shows records from that specific program.

Screen capture showing dashboard with data filtered by a particular program

When building a condition to determine which survey to send to a customer, you can condition it to only be sent to a particular program.

Screen capture showing program condition to send survey to only one program

Check the Records tab to see how many records are currently linked to the program.

Program field

Program (a_program) field cannot be set directly and is a calculated in this way:

  1. Medallia Experience Cloud checks if Program ID (e_program_id) is set on the record and has a valid value. If so, Program (a_program) returns the same program. Program ID can be set:

    1. Directly on the record using an Importer.

    2. If the record matches a program rule while being ingested or updated.

      Note: For records created in previous Experience programs versions, Experience Cloud also checks Record schema mapping ID (obsoleted) to ensure consistency across versions.
  2. If Program ID is not set on the record, Program checks if the record matches a program rule. If so, Program ID matches that program. If the record matches multiple program rules, the rule with the highest priority is chosen.

  3. If the record does not match any program rules, Program ID has no value (null).

This calculation is performed every time a cache rebuild occurs (such as during a deployment) or a record is ingested or updated.

Link new records to programs

There are two ways to link records that will enter the Medallia Experience Cloud in the future to programs:

  1. Set program ID (e_program_id) — When Experience Cloud ingests data via Importer, field e_program_id can be set on the record. We recommend mapping new records to the program using this method when they enter through an importer or a connector:

    1. To map records from importers using this method, copy the program ID from the Program Details pane. In your data importer, set the ID in as a constant value and map the input to e_program_id.

      1. When you create a new data importer in the context of a program, then this mapping is automatically set for you.

    2. To map records that are created via anonymous survey links, add a new parameter for the program and set the program ID as the default value for that parameter.

      Screen capture showing new parameter with the program ID set as its default value

  2. Use a program rule — When the record ingested does not have a value set in the importer for e_program_id, then Experience Cloud checks if the record matches a program rule, which can be set on the Records tab. When the record does match a program rule, then e_program_id is set to the ID of the matching program.

    1. This method can be used to link records that enter the system through other types of integrations, like records from Digital surveys. To associate digital records from a specific digital survey with the program, you can write a program rule using the Form ID field (e_bp_digital_form_id_txt). Program rules support k-fields, autoindexed, and text fields.

About program rules

When existing records are pumped — such as during a backfill or when a record is updated — they are checked against program rules if they are not already linked to a program via e_program_id. At this time, if these unlinked records match a program rule, Experience Cloud links them to the matching program and e_program_id is set to that program’s ID. We recommend only using program rules when absolutely necessary, as they can cause additional complexity in cases like these.

Note: For records created in previous Experience programs versions, program rules were mandatory and Experience Cloud generated one when one was not provided. This is not the case for the latest Experience program version.

Program record linking: core concepts and best practices

  1. Linking methods — There are three primary ways to link records to a program:

    1. Explicit linking via Importer (recommended) — This is the most reliable method for linking new records.

      1. How it works — During the import process (e.g., via an Auto Importer or connector), you directly set the Program ID for the records.

      2. Result — This creates a hard link, meaning the record is permanently associated with the program from the moment it enters the database.

      3. Benefit — This method is immediate, consistent, and avoids potential issues that can arise from rule conflicts or timing.

    2. Rule-based linking (legacy method) — This method is not recommended for new programs due to potential issues and should only be used to support existing, legacy setups.

      1. How it works — You create a rule with a condition (e.g. K_field equals "ABC"). When a record is processed by the "pump" (the system's record processing engine), it evaluates the rule.

      2. Result — If the rule evaluates to true, the record is assigned an Program ID. If a record already has a program ID, it will not be re-evaluated by a rule.

      3. Downsides — This method is less efficient and can lead to inconsistent linking if records are incomplete when they are first processed. Once a record is linked via a rule, that link is permanent.

    3. Bulk linking (One-time operation) — This is a powerful, manual tool used to link or re-link existing, historical records.

      1. How it works — You run a one-time operation on a set of records, typically based on a query or condition.

      2. Use cases:

        1. Initial data migration — Link a large set of historical records to a newly created program.

        2. Re-linking — Reassign records from one program to another.

        3. Re-processing — Trigger a recalculation of derived data, such as a contact's TXP (Total Experience profile), after the contact field mapping has been changed.

  2. Key fields

    1. Program ID (e_program_id) — This is the primary field used for writing and setting a hard link to a program. It holds the unique identifier of the program and is the recommended field to use for explicit record linking.

    2. Program (a_program) and program schema ID (a_program_schema_id) — These are the fields to use for reading and reporting on program data. The "a_program" fields consolidate data from both Program ID (explicitly set links) and legacy Record schema mapping ID (e_record_schema_mapping_id) links, ensuring you get a complete view of all linked records.

      1. Program (a_program) — Friendly name for the program.

      2. program schema ID (a_program_schema_id) — Numeric UID for the program.

      3. Record schema mapping ID (e_record_schema_mapping_id) — This is an obsoleted, legacy field. Records linked using this field will be treated as fully linked by the system, but you cannot set this field via an Auto Importer. Do not use it for new implementations.

  3. Recommendations

    1. For linking new records — Always use the explicit import method to set the Program ID (e_program_id) directly. Avoid program rules if possible.

    2. For historical data — Use bulk linking to permanently and consistently link large sets of records to a program.

    3. For reporting — Always use the Program (a_program) and program schema ID (a_program_schema_id) fields to ensure your reports capture all linked records, including legacy data.

Link existing records to programs

If you are creating a new Experience program as a container for the assets and records from an existing program, you may have existing records that you need to link to the program.

To link these records to the program, you can use the bulk linking tool. On the Records tab, click Bulk Link Existing Records. This opens up a modal where you can find existing records to link to the program.

Screen capture showing the bulk linking tool

The modal is pre-populated with a condition excluding any records from your search that are already in the program. Add additional conditions to find the subset of records that belong in the program.

Click Search to see how many records match the program. The data permissions for your active role’s primary permission context will be applied to the results that are shown here.

Screen capture showing matching records

To understand more about the records that match the search, add and remove fields as columns in the data table. You can sort the columns, and search for a specific survey id. The purpose of this table is to help you learn more about the matching data so that you can feel confident you have found the correct set of records to link to the program. If you need to do a deeper analysis, or export a subset of the data, try replicating the same search using your Invitations List (sometimes called Health Check) report.

Once you are confident that you have found the correct subset of records, click Link Records. This initiates the process to link records in the background. You can track the status of the linking in the One Time Record Updates module at the bottom of the Records screen.

Click Cancel to stop the record linking at any time. If the record linking has already started, then records that have been linked stay linked, but no new records are linked.

Click Condition to view the condition that was used to find the records for this linkage.

Screen capture of One Time Record Updates module showing the status of the linking

Click the clock icon at the top of the module to review the history of one time record updates (linkages or removals).

As records link to the program, you check the number in the Records Linked to Program module grow.

Remove records from programs

To remove records that are linked to the program click Remove Records.

Screen capture showing the Records Linked to Program pane

The modal will be pre-populated with a condition to narrow your search to records that are in the program. Add additional conditions to find the subset of records that you wish to remove from the program.

Screen capture showing bulk record removal tool

Click Search to see how many records match the program. The data permissions for your active role’s primary permission context will be applied to the results that are shown here.

Screen capture showing bulk record removal tool with list of matching records

To understand more about the records that match the search, add and remove fields as columns in the data table. You can sort the columns, and search for a specific survey id. The purpose of this table is to help you learn more about the matching data so that you can feel confident you have found the correct set of records to remove from the program. If you need to do a deeper analysis, or export a subset of the data, try replicating the same search using your Invitations List — also known as Health Check — report.

Once you are confident that you have found the correct subset of records, click Remove Records. This will initiate the process to remove records in the background. You can track the status of the linking in the One Time Record Updates pane at the bottom of the Records screen.

Click Cancel to stop the record removal at any time. If the record removal has already started, then records that have been removed will stay unlinked, but no new records will be unlinked.

Click Condition to view the condition that was used to find the records for this removal.

Note: When you remove records, the field e_program_id is nullified. The record is then checked against the existing program rules, and if it does match a program rule, e_program_id is set to that program’s ID. Check your program rules, if you have any, to be sure that your program rules are not “catching” any unwanted records that you are trying to unlink.

Segment records by program

If you are writing a condition in Admin Suite and want to segment by program, use the field program schema ID (a_program_schema_id), then select the program(s) that you want to segment by.

Screen capture showing condition used to segment by program

You can use this field anywhere that you need to write a condition to segment by program. We do not recommend that you use field a_program in these scenarios, as that can cause future problems with change sets since a_program is an enumerated field with sequence numbers. For example, if Experience Programs were created on sandbox and production in different orders. So, on the sandbox a_program = 1 refers to a Post-Purchase program, but, on production, a_program = 1 refers to a Contact Center program. If you try to set a survey with the condition a_program=1 from the sandbox to production, the condition will refer to a different Experience program in production. For this reason, we recommend configuring conditions with a_program_schema_id for now.

However, when you configure a control panel or a segmentation field for a module — such as for a Scores by Segment Snapshot module — and want "Program" to be available as a segmentation field, then use the field a_program, as it is easier to parse in reporting than a_program_schema_id (which shows program IDs in reporting instead of names).

Screen capture showing the setup of a control panel or a segmentation field for a module

Tips and best practices

  • For each experience, create an Experience program to store all of the assets required to collect, analyze, and act on the signals about. Each program should align to a particular experience signals that are collected, such as a call with a support agent, a stay at a hotel, a transaction, etc.

  • Do not create Experience programs for specific segments (such as Region, Language, or Customer segment) if the tools in each program collect feedback about the same underlying experience. For example, if you send the same post-stay survey to guests in China and France, you should create one program Post-stay instead of Post-stay China and Post-stay France. However, if you send a mid-stay survey to a group of customers in China that is not sent to the customers in France, that case qualifies as a separate Experience program.

  • Generally, each live survey should only be used in one program. Although there might be exceptions, a survey should be aligned to one Experience program rather than multiple since it collects feedback about one specific experience.

  • Consider these practices when structuring your program:

    • Use the default level of granularity for segmenting records, rather than the lowest level granularity. Think of groups that provide meaningful insights when slices and dicing data.

    • If there is a field (for example, Survey Type or Program Type) that already segments current programs for segmenting user access, reports, etc., it might represent a way to segment the data/assets into Experience programs.

    • Group records together to understand how customers find a particular experience with this company.

    • You should quickly find the assets, records, and fields that are related to each other.

  • On Reports and Exports, the Program filter automatically filters the data by program. On the other assets or areas (such as Control panels, Data access, etc.), use Program (a_program) to segment records by program instead of writing custom conditions.

For step-by-step guidance, see Build an Experience program.