Response metadata

Attach optional metadata to hosted, embedded, and SDK-opened survey responses.

Last reviewed

Response metadata

Use response metadata when you want to preserve lightweight context with a survey submission, without showing it in the survey itself.

Response metadata works best for short, descriptive context that helps explain the response later when you review it or export it.

Add metadata to a survey URL

Add query parameters that start with gxrm_. The rest of the parameter name becomes the metadata key.

https://getuserfeedback.com/s/SURVEY_ID?gxrm_journey_stage=onboarding

For embedded surveys, use the same parameters on the embed URL:

https://getuserfeedback.com/embed/YOUR_API_KEY/SURVEY_ID?gxrm_journey_stage=onboarding&gxrm_task_type=report-export&gxrm_survey_moment=post-action

The examples above save:

{"journey_stage": "onboarding","task_type": "report-export","survey_moment": "post-action"}

Attach metadata when opening from code

When you open a survey from the JavaScript or React SDK, pass metadata on the open() call.

JavaScript SDK

TypeScriptfeedback-button.ts
const flow = client.flow("YOUR_FLOW_ID");await flow.open({metadata: {tags: {journey_stage: "onboarding",task_type: "report-export",survey_moment: "post-action",},},});

React SDK

TypeScriptfeedback-button.tsx
const { open } = useFlow({ flowId: "YOUR_FLOW_ID" });await open({metadata: {tags: {journey_stage: "onboarding",task_type: "report-export",survey_moment: "post-action",},},});

This saves the same metadata shape as the URL examples.

Example use cases

Workflow context

Use metadata to preserve the workflow or moment around the response.

https://getuserfeedback.com/embed/YOUR_API_KEY/SURVEY_ID?gxrm_journey_stage=onboarding&gxrm_task_type=report-export&gxrm_survey_moment=post-action

This saves:

{"journey_stage": "onboarding","task_type": "report-export","survey_moment": "post-action"}

Configuration context

Use metadata to preserve the environment or setup around the response.

https://getuserfeedback.com/s/SURVEY_ID?gxrm_deployment_model=self-hosted&gxrm_workspace_size=1-10&gxrm_team_function=support

This saves:

{"deployment_model": "self-hosted","workspace_size": "1-10","team_function": "support"}

Error context

Use metadata to preserve short error context when feedback is collected after a failed step or interrupted flow.

https://getuserfeedback.com/s/SURVEY_ID?gxrm_error_type=validation&gxrm_error_surface=checkout&gxrm_error_step=payment-details

This saves:

{"error_type": "validation","error_surface": "checkout","error_step": "payment-details"}

Send multiple values

Repeat the same parameter to save an array:

https://getuserfeedback.com/embed/YOUR_API_KEY/SURVEY_ID?gxrm_selected_modules=billing&gxrm_selected_modules=reporting

This saves:

{"selected_modules": ["billing", "reporting"]}

Supported data types

Each metadata key stores one of these shapes:

  • string when you send one gxrm_<key>=value
  • string[] when you repeat the same gxrm_<key> parameter

Single value:

https://getuserfeedback.com/s/SURVEY_ID?gxrm_team_function=support

Saves as:

{"team_function": "support"}

Repeated key:

https://getuserfeedback.com/s/SURVEY_ID?gxrm_selected_modules=billing&gxrm_selected_modules=reporting

Saves as:

{"selected_modules": ["billing", "reporting"]}

The same shapes apply when you pass metadata.tags through the JavaScript or React SDK.

Normalization and sanitization

Metadata keys are normalized before storage so small differences in casing or spacing don't create separate fields. For example, gxrm_Team Function is stored as team_function.

Sensitive-looking values are sanitized automatically before they are saved. If a value looks like an email address, URL, phone number, token, or similar sensitive string, it is replaced with a safe placeholder such as [EMAIL].

Where metadata appears

Metadata is saved with the response when the survey is submitted. You can see it on the response detail page, and CSV exports include metadata columns named Metadata: <key>.

Metadata is optional. Empty keys and empty values are ignored.

For practical limits and guardrails, see Limits.