| description | Step-by-step guide to migrating from Segment to RudderStack |
|---|
This document explains the step-by-step process of migrating from Segment to RudderStack. Our primary goal is to lay out the necessary actions for replacing your instrumentation code for generating the events from using the Segment SDK to RudderStack SDK with minimal changes.
Start with creating an account on the RudderStack dashboard. Similar to Segment, you will need to create sources and destinations in the dashboard. This will help you create the necessary connections for the event data to flow from your sources to the destination.
{% hint style="info" %} You can also check our guide on how to add sources and destinations in RudderStack. {% endhint %}
RudderStack requires a data plane for the events to flow through. You can choose to set it up yourself within your cloud computing environment. Please check our installation guide to set up RudderStack.
We also offer a version of the data plane where we host it within our VPC. You can turn on the RudderStack Hosted Service button on the Connections page of your dashboard to get started with it.
If you need more support or you want us to manage your hosting, please feel free to contact us.
Depending on the platform, please follow these steps to move your existing SDK implementation to RudderStack:
{% tabs %} {% tab title="Android" %}
- Change the dependencies in your
app/build.gradlefile add the following:
repositories {
maven { url "https://dl.bintray.com/rudderstack/rudderstack" }
}- 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:
RudderClient rudderClient = RudderClient.getInstance(
this,
<YOUR_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 table below:
| Segment | RudderStack |
|---|---|
Analytics |
RudderClient |
Traits |
RudderTraits |
Property |
RudderProperty |
{% hint style="success" %} You can use the rest of your code as is, as RudderStack SDK is API-compatible with Segment. {% endhint %} {% endtab %}
{% tab title="iOS" %}
- Change the dependencies in the
Podfileof your project:
pod 'Rudder'- Update your SDK initialization to the following:
RudderConfigBuilder *builder = [[RudderConfigBuilder alloc]init];
[builder withDataPlaneUrl:<DATA_PLANE_URL>];
[RudderClient getInstance:<WRITE_KEY> config:[builder build]];{% hint style="info" %}
The instance of the RudderClient is available at [RudderClient sharedInstance] whereas Segment Instance is available at [Analytics sharedAnalytics]
{% endhint %}
- Update the imports from
Analytics.htoRudder.hwherever necessary - Update the use of the classes according to the table below:
| Segment | RudderStack |
|---|---|
Analytics |
RudderClient |
Traits |
RudderTraits |
Property |
RudderProperty |
{% hint style="success" %} You can use the rest of your code as is, as RudderStack SDK is API compatible with Segment {% endhint %} {% endtab %}
{% tab title="JavaScript" %}
- 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(<YOUR_WRITE_KEY>, <DATA_PLANE_URI>);
rudderanalytics.page();
</script>
<script src="https://cdn.rudderlabs.com/rudder-analytics.min.js"></script>
{% hint style="info" %} For the minified version of the above script please refer to the RudderStack JavaScript SDK guide. {% endhint %}
- Update the object. We use
rudderanalyticsas the global object library in comparison to Segment'sanalyticsobject
{% hint style="success" %} You can use the rest of your code as is, as the RudderStack SDK is fully API-compatible with Segment {% endhint %} {% endtab %} {% endtabs %}
Are you stuck somewhere in the migration process? Feel free to contact us. You can also talk to us on our Slack channel.