Migrating from Segment to RudderStack

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

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 RudderStack account, you will see the following dashboard containing your data plane URL:

RudderStack 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 contact us.

Updating the SDK implementation

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

  • 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:
    SegmentRudderStack
    AnalyticsRudderClient
    TraitsRudderTraits
    PropertyRudderProperty
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 Capturing anonymousId automatically section.

Contact us

For more information on the topics covered on this page, email us or start a conversation in our Slack community.

This site uses cookies to improve your experience. If you want to learn more about cookies and why we use them, visit our cookie policy.  We'll assume you're ok with this, but you can opt-out if you wish