Select spec version:

Qualtrics Destination Config Reference

Beta
Complete Rudder CLI reference for the Qualtrics destination config keys, page titles, event filtering, and device mode source types.
Available Plans
  • free
  • growth
  • enterprise

Qualtrics is a device mode destination for website and app feedback surveys. RudderStack loads Qualtrics’ intercept code in the browser and passes it the names of page and track events. In Android and iOS apps, it loads Qualtrics’ SDK and sets identify traits on it, so your intercepts can target users by what they do and who they are.

In a Qualtrics destination spec:

  • type: qualtrics
  • definition_version: 1

Sample configuration

yaml
version: rudder/v1
kind: destination
metadata:
  name: qualtrics-prod
spec:
  id: qualtrics-prod
  display_name: Qualtrics Production
  type: qualtrics
  definition_version: 1
  enabled: true
  config:
    project_id: "{{ .QUALTRICS_PROJECT_ID }}"
    brand_id: acmecorp
    enable_generic_page_title:
      web: false

    event_filtering:
      blacklist:
        - Product Viewed

    connection_mode:
      web: device
      android: device
      ios: device
    consent_management:
      web:
        - provider: oneTrust
          consents:
            - analytics

The above example connects web, Android, and iOS sources, all in device mode. enable_generic_page_title and event_filtering affect only the web integration — see Web settings and Event filtering.

Config keys

config accepts only the keys listed below. The shared config key rules cover unknown keys, defaults, and immutability.

Qualtrics runs only in device mode. On web it acts on page and track calls, and passes their names to Qualtrics as events your intercepts can target. On Android and iOS it acts only on identify calls, and sets their string and number traits as Qualtrics properties for intercept targeting.

Connection

project_id

RequiredSecret

Type: string

Description: ID of the Qualtrics Website/App Feedback project whose intercepts RudderStack loads, such as ZN_blw7AbCTWxCGung. It’s listed under the project’s Project IDs settings, next to the brand ID.

Notes:

  • Used on web, Android, and iOS.
  • Rudder CLI checks only that it’s present.

Supply it as a {{ .VAR }} reference rather than a literal — see Secrets.

See How do I get my Qualtrics project ID and brand ID?.

brand_id

Required

Type: string

Description: ID of your organization’s Qualtrics brand, listed with the project ID.

Notes:

  • Used on web, Android, and iOS.
  • Rudder CLI checks only that it’s present.

Web settings

enable_generic_page_title

Type: object

Description: Send every page call to Qualtrics as Viewed a Page, instead of a name built from the call’s category and name.

Notes:

  • web — boolean. The dashboard defaults it to false; Rudder CLI doesn’t fill it in.
  • Applies to web sources in device mode — the Android and iOS integrations ignore page calls. web is the only key the object accepts.

When false or unset, a page call is sent as Viewed <category> <name> Page, or Viewed <name> Page when it has no category, so give your page calls a name. The category comes from the call’s category, or from properties.category. A call with neither a name nor a category isn’t sent.

yaml
enable_generic_page_title:
  web: true

See Page.

Event filtering

Client-side event filtering is applied by the SDK, and every source connects to Qualtrics in device mode. It changes nothing for Android and iOS sources, though: their Qualtrics integrations act only on identify calls, which aren’t filtered.

event_filtering

Type: object

Description: Restricts which track events the SDK passes to Qualtrics, by event name. page calls aren’t filtered.

Notes:

  • whitelist — array of event names to allow; every other track event is dropped.
  • blacklist — array of event names to drop; every other track event is allowed.
  • The two are mutually exclusive, and Rudder CLI enforces it — setting both fails validation.
  • Each name is at most 100 characters, or a {{ path || fallback }} template.
  • Omit the block entirely to filter nothing.

Per-source keys

Both keys are objects keyed by the local source type — the tokens listed under Source types. A key naming a source type this destination doesn’t support fails validation.

connection_mode

Type: object

Description: Maps each source type you connect to the mode its events reach Qualtrics in. Qualtrics accepts only device, for web, android, and ios.

Notes:

  • An entry is required for each source type you connect — see Connect a source.
  • Any other mode fails validation — for example cloud for web.
yaml
connection_mode:
  web: device
  android: device
  ios: device

Source types

Qualtrics accepts events from these source types in the mentioned connection modes:

Source typeConnection mode
webdevice
androiddevice
iosdevice

Every source type is device only — RudderStack loads Qualtrics’ own code in the browser or app, and no events pass through RudderStack’s servers. The Kotlin and Swift SDKs — android_kotlin and ios_swift — aren’t supported. See Adding device mode integration.

Connect a source

An event stream connection to this destination is checked against two rules at validate time.

The source’s type must be supported. Qualtrics accepts web, android, and ios — the types JavaScript, Android, and iOS SDK sources resolve to. Every other source resolves to a type it doesn’t accept — an iOS Swift source to ios_swift, an Android Kotlin source to android_kotlin, and webhook and server-side SDK sources to cloud — and reports, for example:

destination 'qualtrics-prod' (type 'qualtrics') does not support source 'my-swift-app':
source type 'ios_swift' is not among supported source types: web, android, ios

The destination config must carry a connection_mode entry for that source type. This lives on the destination spec, not on the connection spec. Without it:

destination 'qualtrics-prod' config has no 'connection_mode' entry for source type 'web'

Qualtrics needs no additional config keys to connect a source of any supported type.

Secrets

project_id is the only secret key. Write it as a {{ .VAR }} reference and supply the value at apply time:

yaml
config:
  project_id: "{{ .QUALTRICS_PROJECT_ID }}"
bash
export RUDDER_QUALTRICS_PROJECT_ID="..."
rudder-cli apply

# or
rudder-cli apply --var-file secrets.vars.yaml

Note that:

  • rudder-cli import writes only the secrets the API returns, as {{ .VAR }} references, and leaves the others out. Add any secret key it leaves out, then supply the variables before you apply — see Secrets.
  • On web, the project ID is part of the intercept code’s URL in the page, so masking it protects your YAML, not the value itself.

See How to Use Variable Substitution in Rudder CLI.

Changes by release

No changes since this type became available.

For changes across every destination type, see Destination Type Changes by Release.

See more

Questions? Let's figure it out together.

Join the RudderStack Slack community to connect with other users, customers, and the RudderStack team — or reach out for direct support.