Survey Management Tool

This directory contains survey configurations that are published to user-feedback.xml for consumption by Devolutions products (RDM, DVLS, Hub).

Overview

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.

How It Works

  1. Survey Files: Each survey is stored as a Markdown file in this directory
  2. CloudCannon: Provides a visual editor with proper field validation
  3. Build Process: Eleventy generates /api/user-feedback.xml from all enabled surveys
  4. Applications: RDM, DVLS, and Hub fetch and display surveys based on criteria

File Naming Convention

Files should be named descriptively to indicate their purpose:

Survey Fields

Required Fields

FieldDescriptionFormatExample
surveyIdUnique identifier (GUID)UUID781bce4c-c31e-4514-b08a-ab70638136d4
surveyUrlSurvey URLURLhttps://example.com/survey
messageMessage shown to userTextShare your RDM experience
platformTarget platformSelectWindows, Mac, Linux, All
minVersionMinimal product versionA.B.C.D2025.3.14.0 or 0.0.0.0 for all
endDateSurvey end dateYYYY-MM-DD2026-09-30
typeFeedback typeSelectSurvey (only option for now)

Optional Fields (Supported since 2025.3)

FieldDescriptionDefaultOptions
datasourceDatasource typeAllAll, SQLServer, DVLS, Hub, HubBusiness, HubPersonal
languageSurvey languageAllAll, English, French, German, Other
licenseLicense typeAllAll, Free, Licensed
productTarget productAllAll, RDM, DVLS, Hub, HubBusiness, HubPersonal
userTypeUser typeAllAll, Admin

Metadata Fields

FieldDescriptionDefault
_enabledWhether survey is activetrue
_draftDraft status (won't be published)false

Important Notes

Survey ID Management

⚠️ 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:

This allows the application to track that a user has already seen the survey, regardless of which language version they saw.

Version Support

Not all product versions support all fields:

The build system will include all fields in the XML, but older application versions will simply ignore fields they don't understand.

Empty Fields Warning

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:

Creating a New Survey

  1. Log in to CloudCannon
  2. Navigate to the "Surveys" collection
  3. Click "+ Add Survey"
  4. Fill in the required fields:
  5. (Optional) Fill in targeting fields to narrow audience
  6. Click Save
  7. Wait for the site to rebuild (automatic)

Via Git/Manual (Advanced)

  1. Create a new .md file in packages/website-devolutions/content/surveys/
  2. Copy the structure from .cloudcannon/schemas/survey.md
  3. Fill in all required fields
  4. Commit and push to trigger build

Editing Existing Surveys

  1. Open the survey file in CloudCannon
  2. Make your changes
  3. Save
  4. Rebuild occurs automatically

Disabling a Survey

To stop showing a survey without deleting it:

  1. Open the survey in CloudCannon
  2. Toggle _enabled to OFF
  3. Save

The survey will be excluded from the next XML generation.

Deleting a Survey

  1. In CloudCannon, open the survey
  2. Click the delete icon (⋮ menu → Delete)
  3. Confirm deletion

Note: Deleted surveys are permanently removed. Consider disabling instead if you might want to reuse it later.

Multi-Language Surveys

When creating surveys in multiple languages:

  1. Create one survey per language
  2. Use the SAME surveyId for all language variants
  3. Set the language field appropriately
  4. Translate the message field
  5. Keep the surveyUrl the same OR use language-specific survey links

Example: Multi-Language Survey

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

Testing

Viewing Generated XML

  1. Build the site locally: pnpm run build:11ty
  2. Open dist/api/user-feedback.xml in a text editor
  3. Verify your survey appears with correct data

Testing in Development

  1. Start dev server: pnpm run dev:11ty
  2. Navigate to http://localhost:8080/api/user-feedback.xml
  3. Check that only enabled, non-draft surveys appear

Testing in Applications

Product teams can test surveys by:

  1. Pointing their app to the staging/production XML URL
  2. Ensuring their version meets minVersion requirement
  3. Verifying survey appears based on filters (platform, language, etc.)

XML Output Format

The 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>

Troubleshooting

Survey Not Appearing in XML

Check:

Survey Showing in Wrong Language

Check:

Survey Not Showing in Application

Check:

Duplicate Surveys Appearing

Check:

Migration from Manual PR Process

This tool replaces the previous manual process where surveys were added via Pull Request to user-feedback.njk.

Old Process:

  1. Developer manually edited user-feedback.njk
  2. Added XML <FeedbackEntity> blocks
  3. Created PR, reviewed, merged
  4. Deployed

New Process:

  1. Product Marketing logs into CloudCannon
  2. Fills in form with survey details
  3. Clicks Save
  4. Automatic rebuild and deployment

Security & Access

Support

For questions or issues:


Last Updated: November 12, 2025
Maintained By: Web Development Team