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
  • Migrating the workspace
  • Updating the SDK implementation

Was this helpful?

  1. docs
  2. user-guides
  3. migration-guides

Migrating from Segment to RudderStack

Step-by-step guide on migrating from Segment to RudderStack.

PreviousMigration GuidesNextsrc

Last updated 3 years ago

Was this helpful?

This document explains the step-by-step process of migrating from Segment to RudderStack. It covers the necessary steps for replacing your instrumentation code and start using the RudderStack SDKs to track your events with minimal code changes.

Migrating the workspace

After creating a account, you will see the following dashboard containing your data plane URL:

Similar to Segment, you will need to set up your source-destination connections in the dashboard and facilitate the event data flow.

Keep your source write key and the data plane URL handy.

If you need more support or want us to manage your hosting, you can .

Updating the SDK implementation

Depending on the platform, follow these steps to move your existing SDK implementation to RudderStack:

Android iOS JavaScript .NET React Native

  • Change the dependencies in your app/build.gradle file add the following:

    repositories {
        mavenCentral()
    }
  • Under dependencies, add the following:

    implementation 'com.rudderstack.android.sdk:core:1.0.1'
    implementation 'com.google.code.gson:gson:2.8.6'
  • Update your SDK initialization to the following snippet. Replace WRITE_KEY and DATA_PLANE_URL with your source write key and data plane URL obtained above.

    RudderClient rudderClient = RudderClient.getInstance(
            this,
            <WRITE_KEY>,
            new RudderConfig.Builder()
                    .withDataPlaneUrl(<DATA_PLANE_URL>)
                    .withLogLevel(RudderLogger.RudderLogLevel.DEBUG)
                    .withTrackLifecycleEvents(true)
                    .withRecordScreenViews(true)
                    .build()
    );
  • Update the use of the classes according to the following table:

    Segment
    RudderStack

    Analytics

    RudderClient

    Traits

    RudderTraits

    Property

    RudderProperty

    You can use the rest of your code without any changes as the RudderStack API is fully compatible with Segment.

    • Change the dependencies in the Podfile of your project:

      pod 'Rudder'
    • Update your SDK initialization to the following. Replace WRITE_KEY and DATA_PLANE_URL with your source write key and data plane URL obtained above.

      RudderConfigBuilder *builder = [[RudderConfigBuilder alloc]init];
      [builder withDataPlaneUrl:<DATA_PLANE_URL>];
      [RudderClient getInstance:<WRITE_KEY> config:[builder build]];

      The instance of the RudderClient is available at [RudderClient sharedInstance] whereas the Segment Instance is available at [Analytics sharedAnalytics]

    • Update the imports from Analytics.h to Rudder.h wherever necessary

    • Update the use of the classes according to the table below:

      Segment
      RudderStack

      Analytics

      RudderClient

      Traits

      RudderTraits

      Property

      RudderProperty

      You can use the rest of your code without any changes as the RudderStack API is fully compatible with Segment.

      • Add the SDK to your web application:

        <script>
        	rudderanalytics = window.rudderanalytics = [];
        
        	var methods = [
        		"load",
        		"page",
        		"track",
        		"identify",
        		"reset"
        	];
        	for (var i=0; i<methods.length; i++) {
        		var method = methods[i];
        		rudderanalytics[method] = function(methodName) {
        			return function() {
        				rudderanalytics.push([methodName, ...arguments]);
        			}
        		} (method)
        	}
        	rudderanalytics.load(<WRITE_KEY>, <DATA_PLANE_URL>);
        	rudderanalytics.page();
        </script>
        <script src="https://cdn.rudderlabs.com/v1.1/rudder-analytics.min.js"></script>

        For the minified version of the above script, refer to the guide.

        If you are using an older version of the JavaScript SDK (v1), refer to the to migrate to v1.1.

      • Update the object. RudderStack uses rudderanalytics as the global object library as compared to Segment's analytics object.

        You can use the rest of your code without any changes as the RudderStack API is fully compatible with Segment.

      • Change your .NET project's Dependencies to include the RudderAnalytics package via

      • Then, initialize the RudderStack client by running the following code snippet. Replace WRITE_KEY and DATA_PLANE_URL with your source write key and data plane URL obtained above.

        using RudderStack;
        
        RudderAnalytics.Initialize(
             <WRITE_KEY>,
             new RudderConfig(dataPlaneUrl: <DATA_PLANE_URL>)
        );

        You can use the rest of your code without any changes as the RudderStack API is fully compatible with Segment.

      • Install the RudderStack React Native SDK by running the following command:

        // npm
        npm install @rudderstack/rudder-sdk-react-native --save
        // yarn
        yarn add @rudderstack/rudder-sdk-react-native
        // navigate to iOS folder and run pod install
        pod install
      • Then, import the React Native SDK.

        import rudderClient from "@rudderstack/rudder-sdk-react-native"
      • Next, change the SDK initialization as shown in the following snippet. Replace WRITE_KEY and DATA_PLANE_URL with your source write key and data plane URL obtained above.

        await rudderClient.setup(<WRITE_KEY>, {
          dataPlaneUrl: <DATA_PLANE_URL>,
          trackLifecycleEvents: true,
          recordScreenViews: true,
        })
      • Update the references to the analytics keyword in your application code with rudderClient.

      • You can use the rest of your code without any changes as the RudderStack API is fully compatible with Segment.

      Backfilling Segment anonymous IDs

      When migrating from Segment or a similar analytics tool, you might already have some anonymous traffic that has not yet been identified. When Segment and RudderStack track events for non-identified users, both assign a random UUID as an anonymousId. This ID is used to track an unknown user until they are identified. It also allows RudderStack to track user behavior, journeys, and first-touch attribution before and after the users are identified.

      Capturing Segment anonymousId automatically

      You can automatically capture the Segment anonymousId and set it as Rudderstack anonymousId using the JavaScript SDK's anonymousIdOptions object. When enabled, it reads the Segment anonymousId from your local storage (localStorage) or the Segment cookie and sets it accordingly.

      For more information on how to enable the anonymousIdOptions object, refer to the section.

      Contact us

      If you're stuck somewhere in the migration process, you can or start a conversation in our community.

RudderStack
contact us
RudderStack JavaScript SDK
Version Migration Guide
NuGet
Capturing anonymousId automatically
contact us
Slack
RudderStack dashboard