This directory contains survey configurations that are published to user-feedback.xml for consumption by Devolutions products (RDM, DVLS, Hub).
Surveys are managed through CloudCannon CMS, providing a user-friendly interface for Product Marketing to create, edit, and manage in-app surveys without requiring developer intervention.
/api/user-feedback.xml from all enabled surveysFiles should be named descriptively to indicate their purpose:
{product}-{platform}-{language}.mdrdm-windows-feedback-english.mdrdm-linux-feedback.mddvls-windows-admin-survey-french.md| Field | Description | Format | Example |
|---|---|---|---|
surveyId | Unique identifier (GUID) | UUID | 781bce4c-c31e-4514-b08a-ab70638136d4 |
surveyUrl | Survey URL | URL | https://example.com/survey |
message | Message shown to user | Text | Share your RDM experience |
platform | Target platform | Select | Windows, Mac, Linux, All |
minVersion | Minimal product version | A.B.C.D | 2025.3.14.0 or 0.0.0.0 for all |
endDate | Survey end date | YYYY-MM-DD | 2026-09-30 |
type | Feedback type | Select | Survey (only option for now) |
| Field | Description | Default | Options |
|---|---|---|---|
datasource | Datasource type | All | All, SQLServer, DVLS, Hub, HubBusiness, HubPersonal |
language | Survey language | All | All, English, French, German, Other |
license | License type | All | All, Free, Licensed |
product | Target product | All | All, RDM, DVLS, Hub, HubBusiness, HubPersonal |
userType | User type | All | All, Admin |
| Field | Description | Default |
|---|---|---|
_enabled | Whether survey is active | true |
_draft | Draft status (won't be published) | false |
⚠️ CRITICAL: The surveyId must be identical for all language variants of the same survey.
For example, if you have a survey in English, French, and German targeting the same audience:
rdm-windows-feedback-english.md → surveyId: 781bce4c-c31e-4514-b08a-ab70638136d4rdm-windows-feedback-french.md → surveyId: 781bce4c-c31e-4514-b08a-ab70638136d4 (same!)rdm-windows-feedback-german.md → surveyId: 781bce4c-c31e-4514-b08a-ab70638136d4 (same!)This allows the application to track that a user has already seen the survey, regardless of which language version they saw.
Not all product versions support all fields:
Data, ID, Message, Platform, MinVersion, EndDate, Type)Datasource, Language, License, Product, UserType)The build system will include all fields in the XML, but older application versions will simply ignore fields they don't understand.
CloudCannon will warn you if optional fields are left empty. This is intentional - you can publish surveys without filling all fields if you want to target:
0.0.0.0 for all versions).md file in packages/website-devolutions/content/surveys/.cloudcannon/schemas/survey.mdTo stop showing a survey without deleting it:
_enabled to OFFThe survey will be excluded from the next XML generation.
Note: Deleted surveys are permanently removed. Consider disabling instead if you might want to reuse it later.
When creating surveys in multiple languages:
surveyId for all language variants language field appropriately English, French, German, or Othermessage field surveyUrl the same OR use language-specific survey links English version (rdm-windows-feedback-english.md):
surveyId: '781bce4c-c31e-4514-b08a-ab70638136d4'
surveyUrl: 'https://example.com/survey?lang=en'
message: 'Share your RDM experience'
language: 'English'
platform: 'Windows'
minVersion: '2025.3.14.0'
endDate: '2026-09-30'
# ... other fields
French version (rdm-windows-feedback-french.md):
surveyId: '781bce4c-c31e-4514-b08a-ab70638136d4' # SAME ID!
surveyUrl: 'https://example.com/survey?lang=fr'
message: 'Partagez votre expérience RDM'
language: 'French'
platform: 'Windows'
minVersion: '2025.3.14.0'
endDate: '2026-09-30'
# ... other fields
pnpm run build:11tydist/api/user-feedback.xml in a text editorpnpm run dev:11tyhttp://localhost:8080/api/user-feedback.xmlProduct teams can test surveys by:
minVersion requirementThe generated XML follows this structure:
<?xml version="1.0" encoding="UTF-8"?>
<UserFeedback>
<FeedbackEntities>
<FeedbackEntity>
<Data><![CDATA[survey URL here]]></Data>
<Datasource>All</Datasource>
<EndDate>2026-09-30</EndDate>
<ID>unique-guid-here</ID>
<Language>English</Language>
<License>All</License>
<Message>Survey message here</Message>
<MinVersion>2025.3.14.0</MinVersion>
<Platform>Windows</Platform>
<Product>RDM</Product>
<Type>Survey</Type>
<UserType>All</UserType>
</FeedbackEntity>
<!-- More surveys... -->
</FeedbackEntities>
</UserFeedback>
Check:
_enabled set to true?_draft set to false?Check:
language field set correctly?Check:
minVersion?platform field?endDate passed?Check:
surveyId values? This tool replaces the previous manual process where surveys were added via Pull Request to user-feedback.njk.
Old Process:
user-feedback.njk<FeedbackEntity> blocksNew Process:
For questions or issues:
.cloudcannon/schemas/survey.mdcloudcannon.config.yml (surveys section)packages/website-devolutions/pages/api/user-feedback-dynamic.njkpackages/website-devolutions/pages/api/user-feedback.njk (deprecated, will be removed)Last Updated: November 12, 2025
Maintained By: Web Development Team