Reporting
The Reporting module provides the foundation for rendering survey results as structured tables and Excel exports. Survey reports are driven by the controls defined in each survey — every control becomes a column, and every completed interview becomes a row.
Enabling reporting
- Go to Configuration → Features and enable
Reporting Foundation. - Ensure
CloudSolutions.Surveysis also enabled (survey reports depend on it). - For team-scoped reports, also enable
CloudSolutions.Surveys.Teams.
Interview Data Report
The Interview Data report (Admin → Surveys → Interview Reports → Interview Data) shows one row per completed interview, with columns for:
- Completed By — the display name of the respondent (blank for anonymous interviews).
- Completed At — the local timestamp when the interview was finished.
- One column per control — the answer the respondent gave for each question control in the survey.
Rows are ordered alphabetically by respondent name, then by completion time for the same respondent.
Columns and control answers
Each control in the survey maps to one or more report columns:
| Control type | What appears in the column |
|---|---|
| Predefined List | The selected option label(s); or the Liquid override result if enabled |
| Text Value | The typed text |
| Numeric Value | The numeric value formatted according to the control's configured format |
| Typing Test | Speed/accuracy metrics |
| Desktop Simulator | Outcome and score data |
When a control was on a page the respondent never visited (because visibility rules skipped that page), the column is left empty to preserve column alignment.
Users With No Interviews Report
The Users With No Interviews report lists every enabled user who has not completed any interview matching the current filter criteria. This is useful for tracking completion compliance when surveys are required.
Survey Control Groups in reports
Survey Control Groups add automatic summary columns to the right of the controls that belong to the group. These columns are computed per-row.
Total column
When Show Total is enabled on a group, the report adds a column that sums the numeric values (or weights, for Predefined List controls) of all controls in the group for each row.
Example: a group contains three numeric controls with values 4, 3, and 5 → the Total column shows 12.
Average column
When Show Average is enabled on a group, the report adds a column that averages the numeric values across all controls in the group for each row, rounded to two decimal places.
Example: same three controls → the Average column shows 4.00.
Liquid column
When Show Liquid is enabled on a group, the report evaluates the group's Liquid expression once per row and places the result in the column.
The Liquid expression has access to one variable:
| Variable | Type | Description |
|---|---|---|
Inputs | Array of content items | Every control answer from the completed interview — not just controls in this group. Each element is an Orchard Core content item you can filter by ContentItemId or read properties from. |
Example expression — label a score range:
{% assign total = 0 %}
{% for input in Inputs %}
{% assign val = input.NumericValueSurveyControlPart.Value | default: 0 %}
{% assign total = total | plus: val %}
{% endfor %}
{% if total >= 15 %}High Performer{% elsif total >= 8 %}On Track{% else %}Needs Support{% endif %}
The Liquid column result is always stored as text in the Excel cell. If you need it to be a number, output only the numeric value from the template.
Column ordering and titles
Groups appear in the report in Sort Order sequence (lowest number first). Within a group, the individual control columns come first, followed by Total (if enabled), Average (if enabled), then Liquid (if enabled). Each summary column's heading uses the Total Column Title, Average Column Title, or Liquid Column Title you configured — or a sensible default if left blank.
Colors in reports
How colors are applied
When a respondent selects an option from a Predefined List control that has a Background Color or Font Color configured, those colors are written directly to the corresponding Excel cell:
- Background color — sets the cell's fill color (solid pattern).
- Font color — sets the cell's text color.
Colors are resolved at report generation time by reading the selected option from the control's metadata and looking up its color configuration. No color is applied if the selected option has no color set, or if the respondent did not answer that control.
Setting up colors
Colors are configured per option in the Predefined List control editor (see Per-option colors). Use standard hex color values (e.g., #28a745 for green, #dc3545 for red).
Color in the Interview Report vs. Team Report
Colors are applied identically in both the standard Interview Data report and the Team Interview Data report. They affect only individual answer cells — the summary columns (Total, Average, Liquid) generated by control groups do not inherit colors.
Design recommendations
| Scenario | Recommendation |
|---|---|
| Scoring qualitative options | Use a traffic-light palette: green ≥ threshold, amber = borderline, red < threshold |
| Multi-select controls | Color is driven by the first selected option ordered by weight (lowest weight = first) |
| Dense reports | Limit colors to 3–4 distinct values; too many colors make reports hard to read |
| Printing / accessibility | Choose colors that remain distinguishable in greyscale and high-contrast modes |
Liquid value overrides in report cells
A Predefined List control can use a Liquid value override to replace the selected option label with a computed value in the report. This override affects:
- The text shown in the individual control's report cell.
- The value used in the control group's Total and Average calculations (the override result is used instead of the option label).
Available Liquid variables inside a value override:
| Variable | Description |
|---|---|
total | Numeric sum of the weights of all selected options for this control |
average | Numeric average of the weights of all selected options for this control |
Example — show a readable tier instead of a raw score:
{% if total >= 4.5 %}Outstanding{% elsif total >= 3 %}Meets Expectations{% else %}Below Expectations{% endif %}
When the override is active, the report cell displays Outstanding, Meets Expectations, or Below Expectations instead of the raw option text.
Note: The override result is always a string. If a control group is computing a Total or Average over controls that have Liquid overrides, the system attempts to parse the override result as a number. If it cannot be parsed (e.g., the result is "Outstanding"), the control's numeric contribution to the group total/average is zero.
Excel export
All survey reports generate an Excel file using EPPlus. The workbook contains a single sheet called Interview Data with:
- A header row with column names and optional cell comments showing the Control ID for each column.
- One data row per completed interview.
- Cell formatting, colors, and alignment applied automatically.
- Default workbook styling (fonts, borders, header formatting) driven by the site's
ReportingColorOptionsconfiguration.
Team reports
When CloudSolutions.Surveys.Teams is enabled, an additional Interview Data by Team report is available. It behaves identically to the standard Interview Data report but scopes results to the teams the current user manages. Control groups, colors, and Liquid columns work in the same way.