Segment and mParticle enable you to associate data with users and their devices via similar identify concepts.
HTTP Endpoint: POST https://api.segment.io/v1/identify
{
"userId": "019mr8mf4r",
"traits": {
"email": "pgibbons@example.com",
"name": "Peter Gibbons"
},
"context": {
"ip": "24.5.68.47"
},
"timestamp": "2012-12-02T00:30:08.276Z"
}
//Android SDK
Analytics.with(context)
.identify("019mr8mf4r", new Traits()
.putName("Peter Gibbons")
.putEmail("pgibbons@example.com"));
//iOS SDK
Analytics.shared()
.identify("019mr8mf4r",
traits: ["email": "pgibbons@example.com", "name": "Peter Gibbons"])
//iOS SDK
[[SEGAnalytics sharedAnalytics] identify:@"019mr8mf4r"
traits:@{ @"name": @"Peter Gibbons",
@"email": @"pgibbons@example.com"}];
In addition to identify
, mParticle also supports login
, logout
, and modify
. Reference the code below for a basic migration guide, and navigate to the mParticle Identity Guide to learn more.
HTTP Endpoint: POST https://identity.mparticle.com/v1/identify
{
"user_identities": {
"customer_id": "019mr8mf4r",
"email": "pgibbons@example.com"
},
"user_attributes": {
"name": "Peter Gibbons"
},
"ip": "24.5.68.47",
"timestamp_unixtime_ms":1634262037939,
"environment": "production"
}
//Android SDK
val request = IdentityApiRequest.withEmptyUser().run {
email("pgibbons@example.com")
customerId("019mr8mf4r")
build()
}
MParticle.getInstance().Identity().identify(request)
val currentUser = MParticle.getInstance().Identity().currentUser
currentUser?.setUserAttribute("name", "Peter Gibbons")
//Android SDK
IdentityApiRequest request = IdentityApiRequest.withEmptyUser()
.email("pgibbons@example.com")
.customerId("019mr8mf4r")
.build();
MParticle.getInstance().Identity().identify(request);
MParticleUser currentUser = MParticle.getInstance().Identity().getCurrentUser();
currentUser.setUserAttribute("name", "Peter Gibbons");
//iOS SDK
var identityRequest = MPIdentityApiRequest.withEmptyUser()
identityRequest.email = "pgibbons@example.com"
identityRequest.customerId = "019mr8mf4r"
MParticle.sharedInstance().identity.identify(request, completion: identityCallback)
//iOS SDK
MPIdentityApiRequest *request = [MPIdentityApiRequest requestWithEmptyUser];
request.email = @"pgibbons@example.com";
request.customerId = @"019mr8mf4r";
[[[MParticle sharedInstance] identity] identify:request
completion:identityCallback];
Segment supports a single track
call that accepts only one event structure, while mParticle has both a generic Custom Event and several pre-defined structures for different domains such as Commerce. These features allow mParticle to more deterministically map data to downstream integrations.
HTTP Endpoint: POST https://api.segment.io/v1/track
{
"userId": "019mr8mf4r",
"event": "Item Purchased",
"properties": {
"name": "Leap to Conclusions Mat",
"revenue": 14.99
},
"context": {
"ip": "24.5.68.47"
},
"timestamp": "2012-12-02T00:30:12.984Z"
}
//Android SDK
Analytics.with(context)
.identify("019mr8mf4r", new Traits()
.putName("Peter Gibbons")
.putEmail("pgibbons@example.com"));
//iOS SDK
Analytics.shared()
.identify("019mr8mf4r",
traits: ["email": "pgibbons@example.com", "name": "Peter Gibbons"])
//iOS SDK
[[SEGAnalytics sharedAnalytics] identify:@"019mr8mf4r"
traits:@{ @"name": @"Peter Gibbons",
@"email": @"pgibbons@example.com"}];
HTTP Endpoint: POST https://s2s.mparticle.com/v2/events
The following examples illustrate two core event types: Custom Event and Commerce Event. Depending on the type of event that you’re migrating from your Segment track
call, use either a custom event or a commerce event:
{
"user_identities": {
"customer_id": "019mr8mf4r"
},
"events": [
{
"data": {
"event_name": "clicked button",
"custom_attributes": {
"button_name": "home"
}
},
"event_type": "custom_event"
},
{
"data": {
"product_action": {
"action": "purchase",
"total_amount": 14.99,
"products": [
{
"name": "Leap to Conclusions Mat"
}
]
},
"custom_attributes": {}
},
"event_type": "commerce_event"
}
],
"ip": "24.5.68.47",
"timestamp_unixtime_ms": 1634262037939,
"environment": "production"
}
//Android SDK
//Custom Event
val customAttributes = mapOf(
"category" to "Destination Intro",
"title" to "Paris"
)
val event = MPEvent.Builder("Video Watched", EventType.Navigation)
.customAttributes(customAttributes)
.build()
MParticle.getInstance().logEvent(event)
//Commerce Event
// 1. Create the products
val product = Product.Builder("Double Room - Econ Rate", "econ-1", 100.00)
.quantity(4.0)
.build()
// 2. Summarize the transaction
val attributes = TransactionAttributes("foo-transaction-id")
.setRevenue(430.00)
.setTax(30.00)
// 3. Log the purchase event
val event = CommerceEvent.Builder(Product.PURCHASE, product)
.transactionAttributes(attributes)
.build()
MParticle.getInstance().logEvent(event)
//Android SDK
//Custom Event
Map<String, String> customAttributes = new HashMap<String, String>();
customAttributes.put("category", "Destination Intro");
customAttributes.put("title", "Paris");
MPEvent event = new MPEvent.Builder("Video Watched", EventType.Navigation)
.customAttributes(customAttributes)
.build();
MParticle.getInstance().logEvent(event);
//Commerce Event
// 1. Create the products
Product product = new Product.Builder("Double Room - Econ Rate", "econ-1", 100.00)
.quantity(4.0)
.build();
// 2. Summarize the transaction
TransactionAttributes attributes = new TransactionAttributes("foo-transaction-id")
.setRevenue(430.00)
.setTax(30.00);
// 3. Log the purchase event
CommerceEvent event = new CommerceEvent.Builder(Product.PURCHASE, product)
.transactionAttributes(attributes)
.build();
MParticle.getInstance().logEvent(event);
//iOS SDK
//Custom Event
if let event = MPEvent(name: "Video Watched", type: MPEventType.navigation) {
event.customAttributes = ["category": "Destination Intro", "title": "Paris"]
MParticle.sharedInstance().logEvent(event)
}
//Commerce Event
// 1. Create the products
let product = MPProduct.init(name: "Foo name",
sku: "Foo sku",
quantity: 4,
price: 100.00)
// 2. Summarize the transaction
let attributes = MPTransactionAttributes.init()
attributes.transactionId = "foo-transaction-id"
attributes.revenue = 430.00
attributes.tax = 30.00
// 3. Log the purchase event
let action = MPCommerceEventAction.purchase;
let event = MPCommerceEvent.init(action: action, product: product)
event.transactionAttributes = attributes
MParticle.sharedInstance().logEvent(event)
//iOS SDK
//Custom Event
MPEvent *event = [[MPEvent alloc] initWithName:@"Video Watched"
type:MPEventTypeTransaction];
event.customAttributes = @{@"category":@"Destination Intro",
@"title":@"Paris"};
[[MParticle sharedInstance] logEvent:event];
//Commerce Event
// 1. Create the products
MPProduct *product = [[MPProduct alloc] initWithName:@"Double Room - Econ Rate"
sku:@"econ-1"
quantity:@4
price:@100.00];
// 2. Summarize the transaction
MPTransactionAttributes *attributes = [[MPTransactionAttributes alloc] init];
attributes.transactionId = @"foo-transaction-id";
attributes.revenue = @430.00;
attributes.tax = @30.00;
// 3. Log the purchase event
MPCommerceEventAction action = MPCommerceEventActionPurchase;
MPCommerceEvent *event = [[MPCommerceEvent alloc] initWithAction:action
product:product];
event.transactionAttributes = attributes;
[[MParticle sharedInstance] logEvent:event];
You can migrate Segment page
calls to the mParticle screen_view
event type.
HTTP Endpoint: POST https://api.segment.io/v1/page
{
"userId": "019mr8mf4r",
"name": "Example page call",
"properties": {
"foo": "bar"
},
"timestamp": "2012-12-02T00:31:29.738Z"
}
//Android SDK
Analytics.with(context).screen("Smartwatches", "Purchase Screen",
Properties().putValue("sku", "13d31"))
//Android SDK
Analytics.with(context)
.screen("Smartwatches", "Purchase Screen",
new Properties().putValue("sku", "13d31"));
//iOS SDK
Analytics.shared().screen("Photo Feed", properties: ["Feed Type": "private"])
//iOS SDK
[[SEGAnalytics sharedAnalytics] screen:@"Photo Feed"
properties:@{ @"Feed Type": @"private" }];
HTTP Endpoint: POST https://s2s.mparticle.com/v2/events
{
"user_identities": {
"customer_id": "019mr8mf4r"
},
"events": [
{
"data": {
"event_name": "Example screen view",
"custom_attributes": {
"foo": "bar"
}
},
"event_type": "screen_view"
}
],
"timestamp_unixtime_ms": 1634262037939,
"environment": "production"
}
//Android SDK
val screenInfo = HashMap<String, String>()
screenInfo["rating"] = "5"
screenInfo["property_type"] = "hotel"
MParticle.getInstance().logScreen("Destination Details", screenInfo)
//Android SDK
Map<String, String> screenInfo = new HashMap<String, String>();
screenInfo.put("rating", "5");
screenInfo.put("property_type", "hotel");
MParticle.getInstance().logScreen("Destination Details", screenInfo);
//iOS SDK
let screenInfo = ["rating": "5", "property_type": "hotel"];
MParticle.sharedInstance().logScreen("Destination Details", eventInfo: screenInfo)
//iOS SDK
NSDictionary *screenInfo = @{@"rating":@"5",
@"property_type":@"hotel"};
[[MParticle sharedInstance] logScreen:@"Destination Details"
eventInfo:screenInfo];
Was this page helpful?