Experience programs
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.
- Details pane
- Details pane menu
- 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 to copy the ID. If you want to associate records created in an importer with this program, then map
e_program_idto 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
- 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:
-
Click New program.
-
Enter the program name and, optionally, a description.
-
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.
-
-
Click Save.
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.
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.
Click 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.
To maintain documentation or analyze your program configuration offline, click Export documentation to download the summary representation of all assets into an XLSX file.
Add assets
To find assets to add to your program:
-
From the Program manager section, click Add assets.
-
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. -
Scroll down or use the search bar at the top of the list to search for a particular asset within the chosen Asset type.
-
Select
the relevant assets that belong to the program.
-
Click Add.
Once you add the assets, they are shown on the Program manager screen.
Remove assets
When some fields are not relevant or you made a mistake, remove the assets:
-
From the Program manager section, click Remove assets.
-
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. -
Scroll down or use the search bar at the top of the list to search for a particular asset within the chosen Asset type.
-
Select
the relevant assets to remove from the program.
-
Click Remove.
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.
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.
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:
-
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:-
Directly on the record using an Importer.
-
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.
-
-
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.
-
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:
-
Set program ID (
e_program_id) — When Experience Cloud ingests data via Importer, fielde_program_idcan 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:-
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.-
When you create a new data importer in the context of a program, then this mapping is automatically set for you.
-
-
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.
-
-
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, thene_program_idis set to the ID of the matching program.-
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.
Program record linking: core concepts and best practices
-
Linking methods — There are three primary ways to link records to a program:
-
Explicit linking via Importer (recommended) — This is the most reliable method for linking new records.
-
How it works — During the import process (e.g., via an Auto Importer or connector), you directly set the Program ID for the records.
-
Result — This creates a hard link, meaning the record is permanently associated with the program from the moment it enters the database.
-
Benefit — This method is immediate, consistent, and avoids potential issues that can arise from rule conflicts or timing.
-
-
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.
-
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.
-
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.
-
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.
-
-
Bulk linking (One-time operation) — This is a powerful, manual tool used to link or re-link existing, historical records.
-
How it works — You run a one-time operation on a set of records, typically based on a query or condition.
-
Use cases:
-
Initial data migration — Link a large set of historical records to a newly created program.
-
Re-linking — Reassign records from one program to another.
-
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.
-
-
-
-
Key fields
-
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. -
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.-
Program (
a_program) — Friendly name for the program. -
program schema ID (
a_program_schema_id) — Numeric UID for the program. -
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.
-
-
-
Recommendations
-
For linking new records — Always use the explicit import method to set the Program ID (
e_program_id) directly. Avoid program rules if possible. -
For historical data — Use bulk linking to permanently and consistently link large sets of records to a program.
-
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
