Goals and Thresholds
Goal setting is a powerful exercise for reaching desired milestones, both long-term and day-to-day. They might be linked to real-world incentives, such as bonuses or awards for positive performance, or termination for negative performance. By knowing precisely what needs to be done and when it needs to be completed, the company can better determine where to concentrate resources and efforts. To assist you, Medallia offers capabilities that help you set goals for business units, and allows users to assess their performance through targeted dashboard reporting.
Begin by working with the company to understand what goals they want to set, and how they want to use survey data to measure progress. Help the company format their goals in a file you can import using Auto Importer. Lastly, build or modify custom reports to overlay goal data on charts, graphs, and other data visualizations.
Importing goals
You must import the company's goals using Auto Importer. For detailed information about importing data, see Importing.
Like all Auto Importer specifications, the XML specification you define for importing goals needs the following structure:
Begin with a declaration and input definitions that describe the structure of the source file. At minimum, ensure that your input includes columns for reporting_field, unit, calculation_dropdown, goal, and goal_time_period, For example:
<import-spec inputType="CSV" columnsCheck="ALLOW_EXTRA_OR_MISSING_COLUMNS" name="[UTILITY] Goal Import AI">
<input-column heading="reporting_field" />
<input-column heading="unit" />
<input-column heading="unit_group" />
<input-column heading="benchmark_unit_group" />
<input-column heading="calculation_dropdown" />
<input-column heading="goal" />
<input-column heading="thresholds" />
<input-column heading="goal_time_period" />
<input-column heading="thresholds_time_period" />
<input-column heading="min" />
<input-column heading="max" />
<input-column heading="start_date" />
<input-column heading="end_date" />
In the output-column-group element, include the Goal plugin. Also specify the import mode. For example:
<output-column-group pluginName="Goal" recordUpdateMode="CREATE_AND_UPDATE" multiUpdateMode="UPDATE_ALL">
Add output-column elements to map the input fields to Goal fields in Experience Cloud. Note that values for the fieldName attribute do not specify field names used in surveys. Experience Cloud creates a database table specifically for goal data, with columns named according to the fieldName values you define in the XML specification. For example:
<output-column>
<input-column heading="unit" />
<target-field fieldId="unit" fieldName="Unit" requiredness="OPTIONAL_USED_FOR_DUPLICATE_CHECK" type="UNIT">
<enumerated-field-parse-options mappingKey="IDENTIFIER" />
</target-field>
</output-column>
...
</import-spec>
The following example shows a properly formatted XML specification for importing goals:
<import-spec inputType="CSV" columnsCheck="ALLOW_EXTRA_OR_MISSING_COLUMNS" name="[UTILITY] Goal Import AI">
<input-column heading="reporting_field" />
<input-column heading="unit" />
<input-column heading="unit_group" />
<input-column heading="benchmark_unit_group" />
<input-column heading="apply_to_individual_units" />
<input-column heading="calculation_dropdown" />
<input-column heading="goal" />
<input-column heading="thresholds" />
<input-column heading="goal_time_period" />
<input-column heading="thresholds_time_period" />
<input-column heading="min" />
<input-column heading="max" />
<input-column heading="start_date" />
<input-column heading="end_date" />
<output-column-group pluginName="Goal" recordUpdateMode="CREATE_AND_UPDATE" multiUpdateMode="UPDATE_ALL">
<output-column>
<input-column heading="reporting_field" />
<target-field fieldId="reporting_field" fieldName="Reporting Field" requiredness="REQUIRED_USED_FOR_DUPLICATE_CHECK" type="ENUMERATED">
<enumerated-field-parse-options mappingKey="IDENTIFIER" />
</target-field>
</output-column>
<output-column>
<input-column heading="unit" />
<target-field fieldId="unit" fieldName="Unit" requiredness="OPTIONAL_USED_FOR_DUPLICATE_CHECK" type="UNIT">
<enumerated-field-parse-options mappingKey="IDENTIFIER" />
</target-field>
</output-column>
<output-column>
<input-column heading="unit_group" />
<target-field fieldId="unit_group" fieldName="Unit Group" requiredness="OPTIONAL_USED_FOR_DUPLICATE_CHECK" type="UNIT_GROUP">
<enumerated-field-parse-options mappingKey="IDENTIFIER" />
</target-field>
</output-column>
<output-column>
<input-column heading="benchmark_unit_group" />
<target-field fieldId="benchmark_unit_group" fieldName="Benchmark Unit Group" requiredness="OPTIONAL" type="UNIT_GROUP">
<enumerated-field-parse-options mappingKey="IDENTIFIER" />
</target-field>
</output-column>
<output-column>
<input-column heading="apply_to_individual_units" />
<target-field fieldId="apply_to_individual_units" fieldName="Apply To Individual Units" requiredness="REQUIRED_USED_FOR_DUPLICATE_CHECK" type="ENUMERATED">
<enumerated-field-parse-options mappingKey="NAME" />
</target-field>
</output-column>
<output-column>
<input-column heading="calculation_dropdown" />
<target-field fieldId="calculation_dropdown" fieldName="Calculation" requiredness="REQUIRED_USED_FOR_DUPLICATE_CHECK" type="ENUMERATED">
<enumerated-field-parse-options mappingKey="LABEL" />
</target-field>
</output-column>
<output-column>
<input-column heading="goal" />
<target-field fieldId="goal" fieldName="Goal" requiredness="OPTIONAL" type="GOAL_VALUE" />
</output-column>
<output-column>
<input-column heading="thresholds" />
<target-field fieldId="thresholds" fieldName="Thresholds" requiredness="OPTIONAL" type="THRESHOLDS">
<thresholds-field-parse-options delimiter="|" />
</target-field>
</output-column>
<output-column>
<input-column heading="goal_time_period" />
<target-field fieldId="goal_time_period" fieldName="Goal Time Period" requiredness="OPTIONAL" type="ENUMERATED">
<enumerated-field-parse-options mappingKey="LABEL" />
</target-field>
</output-column>
<output-column>
<input-column heading="thresholds_time_period" />
<target-field fieldId="thresholds_time_period" fieldName="Thresholds Time Period" requiredness="OPTIONAL" type="ENUMERATED">
<enumerated-field-parse-options mappingKey="LABEL" />
</target-field>
</output-column>
<output-column>
<input-column heading="min" />
<target-field fieldId="min" fieldName="Min" requiredness="OPTIONAL" type="FRACTIONAL" />
</output-column>
<output-column>
<input-column heading="max" />
<target-field fieldId="max" fieldName="Max" requiredness="OPTIONAL" type="FRACTIONAL" />
</output-column>
<output-column>
<input-column heading="start_date" />
<target-field fieldId="start_date" fieldName="Start Date" requiredness="REQUIRED_USED_FOR_DUPLICATE_CHECK" type="DATE">
<date-field-parse-options format="yyyy/MM/dd" />
</target-field>
</output-column>
<output-column>
<input-column heading="end_date" />
<target-field fieldId="end_date" fieldName="End Date" requiredness="REQUIRED_USED_FOR_DUPLICATE_CHECK" type="DATE">
<date-field-parse-options format="MM/dd/yyyy" />
</target-field>
</output-column>
</output-column-group>
</import-spec>
Goal table
You can view (but not edit) imported goal data on the Reporting > Report Helpers > Goals screen. For example:
Key values
The Goals Table acts a lookup, allowing Experience Cloud to match goal entries to reporting as reports are rendered. If no goal is found, no value is returned in reports. The lookup (and therefore the uniqueness of goals entries) is based on the following key attributes:
- Unit — Set goals individually for each unit (
Unit ID), or to all units within a unit-group (UG ID). If you are setting a goal for all units within a unit-groupApply to Unitsmust betrue. Otherwise, Experience Cloud assumes the goal applies to the unit-group itself, which is not supported. - Fields — Set goals on individual fields, from any of the major field types (Q, E, K, and R).
- Calculation Dropdown — Set goals independently for each calculation type. This is required, even for R-fields.
- Date Range — Goals may span any date range, but are never combined across time periods.
Each goal entry in the goal table can have multiple values, composed of a goal and/or one or more thresholds. When you build your reports you can choose to show the goal, specific thresholds, all thresholds, or any combination of the goal and thresholds. A goal is a single value to be displayed in reporting, used when there is one clear goal. Thresholds are multiple values that you can use to create performance bands.
Goal and threshold types
Goals and thresholds can be of the following types:
- Fixed — The goal or threshold value is a specific number, such as 7.8 or 95.
- Relative - Percentile — The value is based on the unit's performance relative to its peers. The specific value at any point in time is the score required to move the unit into a certain performance percentile within the reference unit group.
- Relative - Average — For goals, this returns the score for the individual unit. This is useful if a unit's goal is relative to itself in another time period (such as "Exceed your score for the previous year"). In this case, set the Goal Timeperiod to a previous-year time period. For thresholds, this returns the score for the reference unit group. This is useful if a unit's goal is relative to its peer group (such as "Above average performance in your region").
Relative goals and thresholds are relative to a reference unit-group. If you are setting a goal for all units within a unit-group, the unit-group in question (identified in the UG ID column) acts as the reference unit-group. Otherwise, you must specify a reference unit group by populating the Benchmark UG column.
Time periods
The Goal Timeperiod and Threshold Timeperiod columns define the time period over which relative targets are calculated. For example, a Threshold Timeperiod of Last 12 Months instructs Experience Cloud to look at the last twelve months of data when calculating an average or percentile threshold. These columns have no impact on fixed goals.
If there is no Goal Timeperiod or Threshold Timeperiod specified for a relative target, Experience Cloud uses the time period shown in the report.
To be used as a Goal Timeperiod or Threshold Timeperiod, the time period must have the Goals and Thresholds and Advanced Analytics kinds. For more information about creating time periods, see Timeperiods.
Start and End columns, which control when the goal entry applies (as opposed to how it is calculated).Min and Max
The Min and Max columns set lower and upper bounds on the calculation of the target.
Displaying goals in custom report modules
To make progress toward goals evident to users, overlay goal information in a custom report. To do this, add one or more goal elements to the XML of a Custom Module
You can use a single goal element to display some or all of the goals or thresholds for a particular field. However, if the reporting application cannot find a specific goal for the unique combination of time period, unit, calculation, and field in the survey data, the goal element does not appear in the report. This is not the same as displaying a null value in an empty row or column. Rather, the report acts as though the goal element does not exist.
You can define the following attributes in each goal element:
| Attribute | Description |
|---|---|
goal-text
| Specifies the label for the goal in the legend. If you do not specify a value, the report displays "GOAL" in the legend. |
field
| Specifies a field from which to do the calculations. If you do not specify a field, the field selected in the question-dropdown element or split is used. |
thresholds-text
| Specifies the labels (separated by commas) for the threshold rows in the legend. If you specify nothing, the report displays the actual threshold values. |
display-thresholds
| Specifies which thresholds to display (if not all). Indexing starts with 1, and proceeds numerically. For example, "1,5,6" displays the first, fifth and sixth defined thresholds. Use this attribute in with thresholds-text. |
flags
|
Defines the splits (one or many) of the goal and/or thresholds. You can specify multiple flags for this attribute, with values separated by commas:
If you add neither EXCLUDE_THRESHOLDS nor INCLUDE_BOUNDS, another blank column or row is added. This functionality is specifically for speed dial custom reports, which is the only use case where the default behavior is beneficial. |
css-class
| One or more CSS classes (separated by spaces) to apply to the rows or columns produced by this split. |
min-sample-size
| Hides any rows or columns where the sample size is less than this value. |
max-sample-size
| Hides any rows or columns where the sample size is greater than this value. |
tag
| A hidden tag added to generated rows or columns. This is useful only for traceability when generating JSON data. |
Basic table example
If you need only a basic table report to show goals and any thresholds, you can use the goal element with minimal attributes. For example, the following table shows a goal of 7.5 with thresholds of 3|AVG|80%:
The following XML defines this report. Note that this report includes an extra null row because none of the EXCLUDE_THRESHOLDS, EXCLUDE_NULL_BAND, or INCLUDE_BOUNDS flags was set.
<analytics-report>
<axis axis="Time">
<optionbox-filter plugins="UNIT,TIMEPERIOD,RATEBY,RATEBY2,CALCULATION" />
<timeperiod-dropdown-split/>
</axis>
<axis axis="Fields">
<field-split fields="q_company_branch_ltr_5pt_na"/>
<heading-blank />
<goal field="q_company_branch_ltr_5pt_na" goal-text="My Goal" flags="EXCLUDE_THRESHOLDS" />
<heading-blank />
<goal field="q_company_branch_ltr_5pt_na" thresholds-text="Lower Bound,Upper Bound" display-thresholds="1,3" flags="MERGE_THRESHOLDS" />
</axis>
</analytics-report>
Enhanced table example
The following table report includes more information than the basic table example, with additional attributes specified for the goal element:
The following XML defines this report:
<analytics-report>
<axis axis="Time">
<optionbox-filter plugins="UNIT,TIMEPERIOD,RATEBY,RATEBY2,CALCULATION" />
<timeperiod-dropdown-split/>
</axis>
<axis axis="Fields">
<field-split fields="q_company_branch_ltr_5pt_na"/>
<heading-blank />
<goal field="q_company_branch_ltr_5pt_na" goal-text="My Goal"
flags="EXCLUDE_THRESHOLDS"
css-class="background-green"/>
<heading-blank />
<goal field="q_company_branch_ltr_5pt_na"
thresholds-text="Lower Bound,Upper Bound"
display-thresholds="1,3"
flags="MERGE_THRESHOLDS,EXCLUDE_GOAL,EXCLUDE_NULL_BAND"
css-class="background-gray" />
</axis>
</analytics-report>
Bar chart example
The following bar chart includes overlaid threshold lines:
The following XML defines this report:
<analytics-report>
<chart type="COLUMN">
<secondary type="SPLINE" data-labels-enabled="true" />
</chart>
<axis axis="Time">
<optionbox-filter plugins="UNIT,TIMEPERIOD,RATEBY,RATEBY2,CALCULATION" />
<timeperiod-dropdown-split/>
</axis>
<axis axis="Fields">
<field-split fields="q_company_branch_ltr_5pt_na"/>
<chart-axis-separator />
<goal field="q_company_branch_ltr_5pt_na" goal-text="My Goal"
flags="EXCLUDE_THRESHOLDS"
css-class="background-green"/>
<goal field="q_company_branch_ltr_5pt_na"
thresholds-text="Lower Bound,Upper Bound"
display-thresholds="1,3"
flags="MERGE_THRESHOLDS,EXCLUDE_GOAL,EXCLUDE_NULL_BAND"
css-class="background-gray" />
</axis>
</analytics-report>
Troubleshooting
If a goal does not appear on a report, check that all four of the lookup attributes are set for the report, and have a matching goal entry. If the problem persists, check the following:
- Do you want the report to show an individual unit only? You can accomplish this by using a filter attribute or a
unit-splitelement in your report. If you use aunit-splitelement, make sure it appears before thegoalelement. This generally means theunit-splitmust be in the first axis. Remember to set a goal for the field referenced in thegoalnode. - Is there a goal set for that specific unit, or for a parent unit group with
Apply to Unitsset totrue? - Is there a calculation dropdown selected? The goals feature performs its lookup on whatever calculation is selected, even for r-fields. If you have the goal set for a particular calculation, be sure to define your report to use that calculation.
- Is there a goal in the date range of every data point? The goal applied for each data point is based on the last day that data point covers. For example, a set of annual columns shows the goals set as of December 31st each year.
Displaying goals in Medallia Alchemy Experience report modules
If your company is using Medallia Alchemy Experience Reporting, you can display configure the following modules in Admin Suite to display goals:
