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
  • Supported format
  • Default value format
  • Use-case
  • Step 1: Add a transformation
  • Step 2: Specify the path in destination settings
  • How it works
  • FAQs
  • How is this feature useful to me?
  • How should I use this feature? What if I don't want to use it?
  • Can I use this feature to dynamically configure a warehouse destination?
  • Can I specify only the payload path without a default value?
  • My default value is a number starting with 0. What happens if I don't set it as a string?
  • Contact us

Was this helpful?

  1. docs
  2. user-guides
  3. how-to-guides

How to Configure a Destination via the Event Payload

Step-by-step guide on dynamically configuring your destination in RudderStack via the event payload.

PreviousHow to Develop Integrations for RudderStackNextHow to Filter Events using Different Methods

Last updated 3 years ago

Was this helpful?

While setting a destination in RudderStack is quite straightforward, you might encounter a scenario where you need to configure multiple instances of a destination with different configurations for specific fields. RudderStack lets you pass these configuration values via the event payload dynamically.

Simply pass the path of your event payload from which the configuration value will be fetched, along with a default value for the field, as shown below:

This feature is supported for all the destinations that support sending data via the , including .

Supported format

To use this feature, enter the path of the payload along with a default value in the text field of a connection setting that you want to configure.

The format in which the setting should be specified is shown below:

{{event.path.config.name || "default_config_value"}}

You can also use this feature to dynamically configure complex input types like field mappings, as seen in the following example:

Any value present in the path will be passed as a configuration value in the dashboard settings. If no value is present in the payload path, the default value will be used to configure the destination.

You will need to add a transformation that populates the configuration values for the payload path. Refer to the below for more information.

Default value format

You can set the default configuration value as per your requirement.

  • To set a number as the default value, set it as a string.

  • In case of a multi-word string, we recommend setting the value within double quotes, e.g. "default value".

Use-case

Suppose you want to send your event data to different Google Analytics instances based on the source ID. In this scenario, setting a dynamic tracking ID helps you set up different Google Analytics destinations, each configured with a specific tracking ID.

Step 1: Add a transformation

export function transformEvent(event, metadata) {
  let updatedEvent = event;
  const met = metadata(event);
  if (
    met &&
    met.sourceId === "example_source_id_1" &&
    event.message &&
    event.message.properties
  ) {
    updatedEvent.properties.trackingId = "UA-Custom-TrackingID_1";
  } else if (
    met &&
    met.sourceId === "example_source_id_2" &&
    event.message &&
    event.message.properties
  ) {
    updatedEvent.properties.trackingId = "UA-Custom-TrackingID_2";
  }
  return updatedEvent;
}

For this transformation, the path that fetches the configuration values should be set in the dashboard settings as shown below:

{{ message.properties.trackingId || "UA-1659942401" }}

Step 2: Specify the path in destination settings

Once you have added a transformation, the next step is to add a Google Analytics destination in the RudderStack dashboard.

In the Connection Settings, the Tracking ID field of the destination should be configured as shown:

How it works

Consider the following event payload:

[{
  "message": {
    "channel": "web",
    "context": {
      "traits": {
        "name": "John Doe"
      },
      "app": {
        "build": "1.0.0",
        "name": "RudderStack JavaScript SDK",
        "namespace": "com.rudderstack.javascript",
        "version": "1.0.0"
      },
      "library": {
        "name": "RudderStack JavaScript SDK",
        "version": "1.0.0"
      },
      "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
      "locale": "en-US",
      "ip": "0.0.0.0",
      "os": {
        "name": "",
        "version": ""
      },
      "screen": {
        "density": 2
      }
    },
    "properties": {
      "trackingId": "UA-1234567890",
      "plan": "Sample Plan",
      "name": "john doe"
    },
    "type": "identify",
    "messageId": "84e26acc-56a5-4835-8233-591137fca468",
    "originalTimestamp": "2019-10-14T11:15:18.299Z",
    "anonymousId": "00000000000000000000000000",
    "userId": "123456",
    "integrations": {
      "All": true
    },
    "sentAt": "2019-10-14T09:03:22.563Z"
  },
  "destination": {
    "Config": {
      "trackingID": "{{ message.properties.trackingId || \"UA-1659942401\" }}",
      "doubleClick": true,
      "enhancedLinkAttribution": true,
      "classic": true,
      "ignoredReferrers": "",
      "serverClassic": false,
      "includeSearch": true,
      "trackCategorizedPages": true,
      "trackNamedPages": true,
      "sampleRate": "100",
      "siteSpeedSampleRate": "1",
      "setAllMappedProps": true,
      "enableServerSideIdentify": true,
      "serverSideIdentifyEventCategory": "name",
      "serverSideIdentifyEventAction": "action1",
      "anonymizeIp": true,
      "domain": "domain",
      "enhancedEcommerce": true,
      "nonInteraction": true,
      "optimize": "abc123",
      "sendUserId": true,
      "useGoogleAmpClientId": true,
      "web-useNativeSDK": true,
      "dimensions": [{
          "from": "name",
          "to": "dimension1"
        },
        {
          "from": "custom2",
          "to": "dimension2"
        }
      ],
      "metrics": [{
          "from": "email",
          "to": "metric1"
        },
        {
          "from": "trait2",
          "to": "metric2"
        }
      ],
      "resetCustomDimensionsOnPage": [{
          "resetCustomDimensionsOnPage": "abc"
        },
        {
          "resetCustomDimensionsOnPage": "xyz"
        }
      ],
      "contentGroupings": [{
          "from": "plan",
          "to": "contentGroup1"
        },
        {
          "from": "name",
          "to": "contentGroup2"
        }
      ]
    },
    "Enabled": true
  }
}]

Once you specify the value for the Tracking ID field as {{ message.properties.trackingId || "UA-1659942401" }} while setting up the Google Analytics destination, for the above payload, UA-1234567890 will be passed the configuration value.

This is because Config.trackingId will be set to UA-1234567890, which is the value assigned to properties.trackingId.

In case properties.trackingId does not have any value, then Config.trackingId will be set to UA-1659942401 (the default value) and passed as the destination configuration value.

FAQs

How is this feature useful to me?

This feature is very useful if you want to configure multiple instances of the same destination with different configurations for specific fields. Refer to the use-case section above to see how you can use this feature.

How should I use this feature? What if I don't want to use it?

In the text field of a particular connection setting that you want to configure, enter the path of the payload along with a default value in the following format:

{{ event.path.config.name || "default_config_value" }}

If you don't want to use this feature, you can enter the configuration setting in the dashboard as you normally would.

Can I use this feature to dynamically configure a warehouse destination?

Yes, you can. Make sure that the warehouse credentials that you use to configure the destination are applicable for the dynamic project ID/database/any other configuration values from the event payload.

Can I specify only the payload path without a default value?

We highly recommend setting a payload path along with a default value. This is because if, for some reason, the payload path does not have any value, the default value is passed as the connection setting. If both the values are absent, you will get an error.

My default value is a number starting with 0. What happens if I don't set it as a string?

If your default value is a number starting with 0, you need to set it as a string. Otherwise, the value will not be accepted and you may encounter an error.

Contact us

To populate the configuration values from the event payload, you need to . A sample function is shown below:

Follow our guide on guide for more information.

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

add a transformation function
Adding a Destination
contact us
Slack
cloud mode
warehouse destinations
use-case