LogoLogo
  • Contributing to RudderStack
  • Destination_Name
  • LICENSE
  • RudderStack Docs
  • docs
    • FAQ
    • Identity Resolution
    • Home
    • cloud-extract-sources
      • ActiveCampaign Source
      • Bing Ads
      • Chargebee
      • Common Settings
      • Facebook Ads
      • Freshdesk
      • Google Ads Source
      • Google Analytics
      • Google Search Console
      • Google Sheets
      • Cloud Extract Sources
      • Intercom v2
      • Intercom
      • Mailchimp
      • Marketo
      • Mixpanel
      • NetSuite
      • Pipedrive
      • QuickBooks
      • Salesforce Pardot
      • Sendgrid Source
      • Stripe Source
      • Xero
      • Zendesk Chat
      • Zendesk
      • hubspot
        • HubSpot Data Model and Schema Information
        • HubSpot
      • salesforce
        • Salesforce
        • Schema Comparison: RudderStack vs. Segment
    • connections
      • Connection Modes: Cloud Mode vs. Device Mode
    • data-governance
      • Data Governance
      • RudderTyper
      • Data Governance API
      • RudderTyper
      • tracking-plans
        • Tracking Plans
        • Tracking Plan Spreadsheet
    • data-warehouse-integrations
      • Amazon Redshift
      • Azure Data Lake
      • Azure Synapse
      • ClickHouse
      • Databricks Delta Lake
      • Google Cloud Storage Data Lake
      • Google BigQuery
      • Identity Resolution
      • Warehouse Destinations
      • Microsoft SQL Server
      • PostgreSQL
      • Amazon S3 Data Lake
      • Snowflake
      • FAQ
      • Warehouse Schema
    • destinations
      • Destinations
      • Webhooks
      • advertising
        • Bing Ads
        • Criteo
        • DCM Floodlight
        • Facebook App Events
        • Facebook Custom Audience
        • Facebook Pixel
        • Google Ads (gtag.js)
        • Google AdWords Enhanced Conversions
        • Google Adwords Remarketing Lists (Customer Match)
        • Advertising
        • LinkedIn Insight Tag
        • Lotame
        • Pinterest Tag
        • Reddit Pixel
        • Snap Pixel
        • TikTok Ads
      • analytics
        • Amplitude
        • AWS Personalize
        • Chartbeat
        • Firebase
        • FullStory
        • Google Analytics 360
        • Google Analytics
        • Heap.io
        • Hotjar
        • Analytics
        • Indicative
        • Keen
        • Kissmetrics
        • Kubit
        • Lytics
        • Mixpanel
        • Pendo
        • PostHog
        • Quantum Metric
        • Singular
        • adobe-analytics
          • Adobe Analytics Heartbeat Measurement
          • Mobile Device Mode Settings
          • Web Device Mode Settings
          • E-commerce Events
          • Adobe Analytics
          • Setting Up Adobe Analytics in RudderStack
        • google-analytics-4
          • Cloud Mode
          • Device Mode
          • Google Analytics 4
          • Setting up Google Analytics 4
        • profitwell
          • ProfitWell
          • Cloud Mode
          • Device Mode
      • attribution
        • Adjust
        • AppsFlyer
        • Branch
        • Attribution
        • Kochava
        • TVSquared
      • business-messaging
        • Business Messaging
        • Intercom
        • Kustomer
        • Slack
        • Trengo
      • continuous-integration
        • Visual Studio App Center
        • Continuous Integration
      • crm
        • Delighted
        • HubSpot
        • CRM
        • Salesforce
        • Variance
        • Zendesk
      • customer-data-platform
        • Customer Data Platform
        • Segment
      • error-reporting
        • Bugsnag
        • Error Reporting
        • Sentry
      • marketing
        • ActiveCampaign
        • AdRoll
        • Airship
        • Appcues
        • Autopilot
        • Blueshift
        • Braze
        • CleverTap
        • Customer.io
        • Gainsight PX
        • Gainsight
        • Marketing
        • Iterable
        • Klaviyo
        • Leanplum
        • Mailchimp
        • Marketo Lead Import
        • Marketo
        • MoEngage
        • Ometria
        • Pardot
        • Post Affiliate Pro
        • Qualtrics
        • SendGrid
        • Salesforce Marketing Cloud
        • Userlist
        • drip
          • Cloud Mode
          • Device Mode
          • Drip
          • Setting Up Drip in RudderStack
      • productivity
        • Google Sheets
        • Productivity
      • storage-platforms
        • Amazon S3
        • DigitalOcean Spaces
        • Google Cloud Storage
        • Storage Platforms
        • Azure Blob Storage
        • MinIO
        • Redis
      • streaming-platforms
        • Amazon EventBridge
        • Amazon Kinesis Firehose
        • Amazon Kinesis
        • Azure Event Hubs
        • BigQuery Stream
        • Confluent Cloud
        • Google Pub/Sub
        • Streaming Platforms
        • Apache Kafka
      • tag-managers
        • Google Tag Manager
        • Tag Managers
      • testing-and-personalization
        • Algolia Insights
        • Candu
        • Google Optimize
        • A/B Testing & Personalization
        • LaunchDarkly
        • Monetate
        • Optimizely Full Stack
        • Optimizely Web
        • Split.io
        • Statsig
        • VWO (Visual Website Optimizer)
    • get-started
      • RudderStack Cloud vs. RudderStack Open Source
      • Glossary
      • Get Started
      • RudderStack Architecture
    • reverse-etl
      • Amazon Redshift
      • Amazon S3
      • ClickHouse
      • FAQ
      • Google BigQuery
      • Reverse ETL
      • PostgreSQL
      • Snowflake
      • common-settings
        • Importing Data using Models
        • Importing Data using Tables
        • Common Settings
        • Sync Modes
        • Sync Schedule
      • features
        • Airflow Provider
        • Features
        • Models
        • Visual Data Mapper
    • rudderstack-api
      • Data Regulation API
      • HTTP API
      • RudderStack API
      • Personal Access Tokens
      • Pixel API
      • Test API
      • api-specification
        • Application Lifecycle Events Specification
        • API Specification
        • Video Events Specification
        • rudderstack-ecommerce-events-specification
          • Browsing
          • Coupons
          • E-Commerce Events Specification
          • Ordering
          • Promotions
          • Reviewing
          • Sharing
          • Wishlist
        • rudderstack-spec
          • Alias
          • Common Fields
          • Group
          • Identify
          • RudderStack Event Specification
          • Page
          • Screen
          • Track
    • rudderstack-cloud
      • Audit Logs
      • Dashboard Overview
      • Destinations
      • RudderStack Cloud
      • Live Events
      • Connection Modes: Cloud Mode vs. Device Mode
      • Sources
      • Teammates (User Management)
      • connections
        • Adding a Destination
        • Connections
    • rudderstack-open-source
      • Control Plane Setup
      • RudderStack Open Source
      • installing-and-setting-up-rudderstack
        • Developer Machine Setup
        • Docker
        • Data Plane Setup
        • Kubernetes
        • Sending Test Events
    • stream-sources
      • App Center
      • AppsFlyer
      • Auth0
      • Braze
      • Customer.io
      • Extole
      • Event Stream Sources
      • Iterable
      • Looker
      • PostHog
      • Segment
      • Shopify
      • Webhook Source
      • rudderstack-sdk-integration-guides
        • Client-side Event Filtering
        • SDKs
        • AMP Analytics
        • Cordova
        • .NET
        • Go
        • Java
        • Node.js
        • PHP
        • Python
        • React Native
        • Ruby
        • Rust
        • Unity
        • SDK FAQs
        • rudderstack-android-sdk
          • Adding Application Class
          • Flushing Events Periodically
          • Android
        • rudderstack-flutter-sdk
          • Flutter SDK v1
          • Flutter v2
          • Flutter
        • rudderstack-ios-sdk
          • iOS
          • tvOS
          • watchOS
        • rudderstack-javascript-sdk
          • Data Storage in Cookies
          • Detecting Ad-blocked Pages
          • JavaScript
          • JavaScript SDK Enhancements
          • JavaScript SDK FAQs
          • Querystring API
          • Quick Start Guide
          • Version Migration Guide
          • consent-managers
            • Consent Managers
            • OneTrust
    • transformations
      • Access Token
      • FAQ
      • Transformations
      • Transformations API
    • user-guides
      • User Guides
      • administrators-guide
        • Troubleshooting Guide
        • Alerting Guide
        • Bucket Configuration Settings for Event Backups
        • Configuration Parameters
        • Event Replay
        • High Availability
        • Horizontal Scaling
        • Administrator's Guides
        • Infrastructure Provisioning
        • Monitoring and Metrics
        • Okta SSO Setup
        • OneLogin SSO Setup
        • RudderStack Grafana Dashboard
        • Software Releases
      • how-to-guides
        • How to Use Custom Domains
        • How to Develop Integrations for RudderStack
        • How to Configure a Destination via the Event Payload
        • How to Filter Events using Different Methods
        • How to Filter Selective Destinations
        • How to Submit a Pull Request for a New Integration
        • How-to Guides
        • How to Debug Live Destination Events
        • How to Use AWS Lambda Functions with RudderStack
        • create-a-new-destination-transformer-for-rudder
          • Best Practices for Coding Transformation Functions in JavaScript
          • How to Create a New Destination Transformation for RudderStack
        • implement-native-js-sdk-integration
          • How to Add a Device Mode SDK to RudderStack JavaScript SDK
          • How to Implement a Native JavaScript SDK Integration
        • rudderstack-jamstack-integration
          • How to Integrate RudderStack with Your JAMstack Site
          • How to Integrate Rudderstack with Your Angular App
          • How to Integrate Rudderstack with Your Astro Site
          • How to Integrate Rudderstack with Your Eleventy Site
          • How to Integrate Rudderstack with Your Ember.js App
          • How to Integrate Rudderstack with a Gatsby Website
          • How to Integrate Rudderstack with a Hugo Site
          • How to Integrate Rudderstack with Your Jekyll Site
          • How to Integrate Rudderstack with Your Next.js App
          • How to Integrate Rudderstack with Your Nuxt.js App
          • How to Integrate Rudderstack with Your Svelte App
          • How to Integrate Rudderstack with Your Vue App
      • migration-guides
        • Migrating from Blendo to RudderStack
        • Migrating Your Warehouse Destination from Segment to RudderStack
        • Migration Guides
        • Migrating from Segment to RudderStack
  • src
    • @rocketseat
      • gatsby-theme-docs
        • text
          • Home
Powered by GitBook
On this page
  • Getting Started
  • Configuration Settings
  • Adding device mode integration
  • Page
  • Track
  • Identify
  • FAQ
  • How do I get my Project ID and Brand ID?
  • How do I know if the SDK has loaded successfully?
  • In the mobile Device Mode integration, is it possible to manually set the logic?
  • Contact Us

Was this helpful?

  1. docs
  2. destinations
  3. marketing

Qualtrics

Step-by-step guide to send your event data from RudderStack to Qualtrics.

PreviousPost Affiliate ProNextSendGrid

Last updated 3 years ago

Was this helpful?

is a popular survey software that lets you create intelligent, real-time user surveys. It lets you get cutting-edge insights into your customers and use them to boost your brand value.

RudderStack lets you configure Qualtrics as a destination to which you can send your event data directly.

Getting Started

Before configuring Qualtrics as a destination in RudderStack, verify if Qualtrics supports the source platform you are sending the events from. Refer to the following table:

Connection Mode

Web

Mobile

Server

Device mode

Supported

Supported

-

Cloud mode

-

-

-

To know more about the difference between Cloud mode and Device mode in RudderStack, read the guide.

Once you have confirmed that the source platform supports sending events to Qualtrics, follow these steps:

  • From your , add the source and select Qualtrics from the list of destinations.

Configuration Settings

To successfully configure Qualtrics as a destination, you will need to configure the following settings:

  • Project ID: Enter your Qualtrics Project ID here.

  • Brand ID: Enter your Qualtrics Brand ID here.

Refer to the FAQ section below for steps on how to get your Qualtrics Project ID and Brand ID.

  • Enable Generic Page Title: If this field is enabled, RudderStack sends every page call with the name Viewed a Page.

This field is useful only when using the page call.

If this option is disabled, RudderStack will search for the category and name of the page call and send the event as Viewed <category_field> <name_field> Page. If any of the two fields is absent, RudderStack sends the page call as Viewed <category_field>/<name_field> Page.

Adding device mode integration

iOS Android To add Qualtrics to your iOS project, follow these steps:

  • In your Podfile, add the Rudder-Qualtrics extension as shown:

    pod 'Rudder-Qualtrics'
  • After adding the dependency followed by a pod install command, add the following imports to your AppDelegate.m file:

    #import <Rudder/Rudder.h>
    #import <RudderQualtricsFactory.h>
    @import Qualtrics;
  • Then, add the initialization of your RSClient as shown:

    RSConfigBuilder *configBuilder = [[RSConfigBuilder alloc] init];
        [configBuilder withDataPlaneUrl:DATA_PLANE_URL];
        [configBuilder withFactory:[RudderQualtricsFactory instance]];
        [RSClient getInstance:<SOURCE_WRITE_KEY> config:[configBuilder build]];
  • Next, add the following snippet to display the qualified intercept on your ViewController:

    [Qualtrics.shared evaluateProjectWithCompletion:^(NSDictionary<NSString *,TargetingResult *>* targetingResults){
        for (NSString* interceptID in targetingResults) {
          TargetingResult *result = targetingResults[interceptID];
              if ([result passed]) {
                [[Qualtrics shared] displayWithViewController:self];
              }
        }
    }];

Once confirmed, follow these steps to add Qualtrics to your Android project:

  • Open your app/build.gradle (Module: app) file and add the following under the dependencies section :

    implementation 'com.rudderstack.android.sdk:core:1.+'
    implementation 'com.rudderstack.android.integration:qualtrics:1.0.0'
    implementation 'com.google.code.gson:gson:2.8.6'
    
    // Qualtrics
    implementation 'com.qualtrics:digital:2.0.0'
  • Add a new Maven repository for the App Feedback package. Your allprojects section should appear as shown:

    allprojects {
        repositories {
            google()
            jcenter()
            maven {
                url "https://s3-us-west-2.amazonaws.com/si-mobile-sdks/android/"
            }
        }
    }
  • Open the AndroidManifest.xml file from the src/main folder in the project root and add the following XML snippet after the existing activity:

    <activity android:name=
        "com.qualtrics.digital.QualtricsSurveyActivity"/>
    <activity android:name=
        "com.qualtrics.digital.QualtricsPopOverActivity" 
              android:theme="@style/Qualtrics.Theme.Transparent"/>
  • Initialize the RudderStack SDK in your Application class' onCreate() method as shown:

    // initializing Rudder SDK
    val rudderClient = RudderClient.getInstance(
      this,
      <SOURCE_WRITE_KEY>,
      RudderConfig.Builder()
              .withDataPlaneUrl(DATA_PLANE_URL)
              .withFactory(QualtricsIntegrationFactory.FACTORY)
              .build()
    )
  • Add a MyCallback subclass. You need to implement a callback for the Qualtrics APIs. This will be used to call the displayIntercept() method based on the evaluateIntercept() result. A good place to add this callback is before the last closing brace (}) in your MainActivity.Java class. Add the following code:

    private class MyCallback implements IQualtricsProjectEvaluationCallback {
       @Override
       public void run(Map<String, TargetingResult> targetingResults) {
           for (Map.Entry<String,TargetingResult> result: targetingResults.entrySet())
               if (result.getValue().passed()) {
                   Qualtrics.instance().displayIntercept(MainActivity.this, result.getKey());
               }
       }
    }
  • Add the following snippet to display the qualified intercept in your activity class:

    Qualtrics.instance().evaluateProject(new MyCallback());

In the iOS Device Mode implementation, even if the user qualifies for multiple intercepts, only one will be shown. Whereas in Android, all the intercepts for the user will be shown.

Page

The page call lets you record your website's page views with any additional relevant information about the viewed page.

You can set the intercepts when a user creates the project or after they have created the project.

A sample page call is as shown:

rudderanalytics.page("category", "name", {
  path: "path",
  url: "url",
  title: "title",
  search: "search",
  referrer: "referrer",
  testDimension: "true"
});

For the above example, The event will be sent as Viewed category name Page, if the Generic Page Title option is disabled in the RudderStack dashboard. If this option is enabled, the event will be sent as Viewed a Page.

If the category field is not mentioned in the page call but specified inside the properties, RudderStack still includes the field while sending the event. For example, refer to the following snippet:

rudderanalytics.page("name", {
  category: "category",
  path: "path",
  url: "url",
  title: "title",
  search: "search",
  referrer: "referrer",
  testDimension: "true"
});

For the above example, the event will be sent as Viewed category name Page, if the Generic Page Title option is disabled in the RudderStack dashboard. If it is enabled, the event will be sent as Viewed a Page.

If category is not specified in the event at all, RudderStack sends the event with only the page name, as shown below:

rudderanalytics.page("name", {
  path: "path",
  url: "url",
  title: "title",
  search: "search",
  referrer: "referrer",
  testDimension: "true"
});

For the above example, The event will be sent as Viewed name Page, if the Generic Page Title option is disabled in the RudderStack dashboard. If enabled, the event will be sent as Viewed a Page.

If both the name and category fields are absent in the page call and the Generic Page Title option is disabled, RudderStack will not send the event to Qualtrics.

Track

At the destination end, i.e. Qualtrics, both page and track calls have the same functionality.

You can set the intercepts when a user creates the project or after they have created the project.

In this case, the value of event field of the track call will be used as the event name while sending it to Qualtrics.

A sample track call is as shown:

rudderanalytics.track("Test Event");

In the above example, the event will be sent to Qualtrics as Test Event.

Identify

The identify call is supported only in the mobile (Android and iOS) Device Mode integration.

When you make an identify call, RudderStack sets the user traits using:

  • The Qualtrics Properties class, setString, and setNumber API in case of Android, and

  • The setStringWithString and setNumberWithNumber API in case of iOS

iOS Android

[[RSClient sharedInstance] identify:@"test_user_id"
        traits: @{ @"property_key": @"property_value" }];
MainApplication.rudderClient.identify(
    RudderTraits()
        .put("property_key", "property_value")
)

FAQ

How do I get my Project ID and Brand ID?

To get your Qualtrics Project ID and Brand ID, follow these steps:

  • Click on the project you will be using.

  • Click on Settings tab, followed by Manage Project option (the right-most dropdown menu in the dashboard).

  • Click on Project ID's. Here you will find both your Project ID and Brand ID, as shown:

How do I know if the SDK has loaded successfully?

Once RudderStack loads the web SDK successfully, you will be able to see the survey options chosen in the Qualtrics dashboard, e.g., a survey button, survey form, etc.

An example is shown below:

In the mobile Device Mode integration, is it possible to manually set the logic?

Contact Us

For more information, refer to the . Your Android project must be on version 5.0 (API level 21) or higher for RudderStack to be able to send events to Qualtrics.

For more information, refer to the .

RudderStack passes any tracked events as embedded data to the Qualtrics target. After the page call, the Qualtrics survey is loaded.

The track call lets you track how many times a user performs certain actions. RudderStack passes any tracked events as embedded data to the Qualtrics target. After the track call, the Qualtrics survey is loaded.

These user traits can be used as custom properties while setting the or for any intercept in your Qualtrics dashboard.

Log into your .

Yes, you can manually set the logic using Qualtrics Properties class setString and setNumber API on Android and setStringWithString and setNumberWithNumber API on iOS. For more information, refer to the or the , depending on your implementation.

For questions on any of the sections covered in this guide, feel free to or start a conversation in our community.

Qualtrics iOS documentation
Qualtrics Android documentation
intercept
intercept
Target Logic
Embedded Data
Qualtrics account
iOS documentation
Android documentation
contact us
Slack
Qualtrics
RudderStack connection modes
RudderStack dashboard
Configuration Settings for Qualtrics