Integrations
This section describes the configuration settings necessary to activate mParticle’s event tracking integration with Facebook. The event tracking integration enables conversion tracking for Facebook advertising campaigns.
Facebook has limits around the number of unique event names and attributes their platform can process as noted here: https://developers.facebook.com/docs/reference/android/current/class/AppEventsLogger/
Event data from mParticle to Facebook is typically sent server side. However, Web data can be sent client or server side based on your implementation and settings. These different options require different settings:
Use Pixel Server-Side Forwarding
and Forward Web Requests Server Side
settings.os_version
is required for iOS/tvOS events. If os_version
is not present, the event will be rejected and an error message will be shown in System Alerts.You need to perform a few steps in Facebook to create a Facebook Pixel S2S connection.
Web
with a connection method of Conversions API
.Conversions API
> Set up manually
section and click Create Access Token
. Follow the steps described and copy the Access Token for setup in mParticle.Facebook recommends sending the same pixel event twice - once from the browser and once from the server. If done incorrectly, this can result in duplicate events appearing in Facebook. The following steps walk through how to configure this within mParticle.
To do this using mParticle, you will need to perform the following steps:
Use Pixel Server-Side Forwarding
enabled and the other must not. Both must have an access token set.Web
input. The configuration with server-side Pixel forwarding enabled, must also have Forward Web Requests Server Side
enabled. Similarly, the connection with Pixel server-side forwarding disabled, must have Forward Web Requests Server Side
disabled.Ideally, all Web data sent to mParticle will be sent through the mParticle Web SDK, but it is still possible to deduplicate events outside of this flow if necessary. To ensure redundant events sent through Facebook Pixel and the Facebook Conversions API are correctly deduplicated when they reach Facebook, two conditions must be met:
event_name
values.event_id
values. For this, the field source_message_id
may be used to manually set the Event ID sent to Facebook.If you use the mParticle Web SDK and server-side web integration, then this will be automatically handled.
If you need to manually assign a source_message_id
via the web SDK and server-side separately, use the following API:
mParticle.logBaseEvent({
messageType: 4, // This is the messageType for custom events. Use 3 for page views
name: 'Test Event',
data: {attr1: 'value1'}, // custom attributes
eventType: mParticle.EventType.Navigation, // optional for custom events. Do not set for page views
customFlags: {flag1: 'flagValue1'},
sourceMessageId: 'custom_source_message_id'
});
You can also assign a source_message_id
to commerce events:
// 1. Create the product
const product1 = mParticle.eCommerce.createProduct(
'Double Room - Econ Rate', // Name
'econ-1', // SKU
100.00, // Price
4, // Quantity
);
// 2. Summarize the transaction
const transactionAttributes = {
Id: 'foo-transaction-id',
Revenue: 430.00,
Tax: 30
};
// 3. Log the purchase event
// Optional custom attributes for a product action can be defined as key/value pairs witin an object
const customAttributes = {
'sale': true
};
// Optional custom flags can be defined as key/value pairs within an object
const customFlags = {
'Google.Category': 'travel'
};
const options = {
sourceMessageId: 'custom_source_message_id'
}
mParticle.eCommerce.logProductAction(
mParticle.ProductActionType.Purchase,
[product1],
customAttributes,
customFlags,
transactionAttributes,
options
);
Note that your workspace will need to be on event batching in order to leverage passing a custom source_message_id
to the Web SDK for this to work. If you are not on web batching, please contact your customer success manager.
Visit the Facebook Business Help Center and Facebook For Developers for more information on the subject of deduplication.
Please run through the following steps to confirm your settings are correct:
System User
and will never expire using this page: https://developers.facebook.com/tools/debug/accesstoken/Send To Test Events
works: https://developers.facebook.com/docs/marketing-api/conversions-api/payload-helper/If you run into issues with either of the above steps, please repeat the steps described in Configuring Facebook Pixel Server-to-Server.
The Facebook advertiser_tracking_enabled
field is set based on the att_authorization_status
and limit_ad_tracking
fields as defined below. Check the iOS14 Implementation guide for more information.
If att_authorization_status
is available:
att_authorization_status |
advertiser_tracking_enabled |
---|---|
authorized |
1 |
All other values | 0 |
If att_authorization_status
is not available, the limit_ad_tracking
field is evaluated:
limit_ad_tracking |
advertiser_tracking_enabled |
---|---|
Not available or false |
1 |
true |
0 |
mParticle will send a variety of user data fields to Facebook for advanced matching. The specific fields sent depends on if Facebook Pixel server-side forwarding is enabled or not.
Facebook Pixel Server-Side Forwarding Disabled
mParticle will hash and send the following fields to Facebook when they are set for a user.
mParticle Field | Facebook Field | Description |
---|---|---|
email User Identity |
em |
mParticle will send the email identity based on the value of the Email Type setting. The email user identity will be hashed before forwarding to Facebook, other user identities will not be hashed prior to forwarding. |
Identity as defined by External User Identity Type setting |
external_id |
mParticle will hash and send a single identity based on the value of the External User Identity Type setting. |
Phone Number User Identity | ph |
mParticle will hash and send a single phone number identity. mParticle will use the mobile_number identity if it is provided. If not, mParticle will use phone_number_2 if it is provided. If neither of those are provided, mParticle will use phone_number_3 if it is provided. If none of those are provided, mParticle will use the $mobile user attribute if it is provided. |
Device Identity | advertiser_id |
mParticle will send an Advertiser ID if the user has an IDFA (Apple Identifier for Advertisers), GAID (Google Advertising ID), or RAID (Roku Advertising Identifier) |
$gender User Attribute |
ge |
|
$firstname User Attribute |
fn |
|
$lastname User Attribute |
ln |
|
$city User Attribute |
ct |
|
$state User Attribute |
st |
|
$zip User Attribute |
zp |
|
$country User Attribute |
country |
Facebook Pixel Server-Side Forwarding Enabled
mParticle Field | Facebook Field Name | Hashed? | Description |
---|---|---|---|
email User Identity |
em |
Yes | mParticle will send the email identity based on the value of the Email Type setting. The email user identity will be hashed before forwarding to Facebook, other user identities will not be hashed prior to forwarding. |
Facebook.BrowserId Custom Flag |
fbp |
No | Facebook Browser ID |
Facebook.ClickId Custom Flag |
fbc |
No | Facebook Click ID |
Facebook.ActionSource Custom Flag |
action_source |
No | This field allows you to specify where your conversions occurred. Knowing where your events took place helps ensure your ads go to the right people. The accepted values are email , website , app , phone_call , chat , physical_store , system_generated and other . The website action source requires that the Facebook.EventSourceUrl custom flag is set on the event. Please see Facebook’s documentation for details. |
Phone Number User Identity | ph |
Yes | mParticle will hash and send a single phone number identity. mParticle will use the mobile_number identity if it is provided. If not, mParticle will use phone_number_2 if it is provided. If neither of those are provided, mParticle will use phone_number_3 if it is provided. If none of those are provided, mParticle will use the $mobile user attribute if it is provided. |
Identity as defined by External User Identity Type setting |
external_id |
Yes | mParticle will hash and send a single identity based on the value of the External User Identity Type setting. |
$gender User Attribute |
ge |
Yes | |
$firstname User Attribute |
fn |
Yes | |
$lastname User Attribute |
ln |
Yes | |
$city User Attribute |
ct |
Yes | |
$state User Attribute |
st |
Yes | |
$zip User Attribute |
zp |
Yes | |
$country User Attribute |
country |
Yes | |
ip |
client_ip_address |
No | |
Device Info http_header_user_agent |
client_user_agent |
No |
mParticle’s Facebook integration supports custom mappings which allows you to map your events and attributes for Facebook. mParticle provides mappings for the following Facebook event types:
Event Name | Standard Mapping | Pixel Mapping |
---|---|---|
Achieved Level | fb_mobile_level_achieved | N/A |
Ad Click | AdClick | N/A |
Ad Impression | AdImpression | N/A |
Added Payment Info | fb_mobile_add_payment_info | AddPaymentInfo |
Added to Cart | fb_mobile_add_to_cart | AddToCart |
Added to Wishlist | fb_mobile_add_to_wishlist | AddToWishlist |
Added to Wishlist - Automotive | fb_mobile_add_to_wishlist | AddToWishlist |
Completed Registration | fb_mobile_complete_registration | CompleteRegistration |
Completed Tutorial | fb_mobile_tutorial_completion | N/A |
Contact | Contact | Contact |
Customize Product | CustomizeProduct | CustomizeProduct |
Donate | Donate | Donate |
Find Location | FindLocation | FindLocation |
Initiated Checkout | fb_mobile_initiated_checkout | InitiateCheckout |
Initiated Checkout - Travel | fb_mobile_initiated_checkout | InitiateCheckout |
Lead | N/A | Lead |
Lead - Automotive | N/A | Lead |
Page View | PageView | PageView |
Purchased | fb_mobile_purchase | Purchase |
Purchased - Travel | fb_mobile_purchase | Purchase |
Rated | fb_mobile_rate | N/A |
Schedule | Schedule | Schedule |
Searched | fb_mobile_search | Search |
Searched - Automotive | fb_mobile_search | Search |
Searched - Travel | fb_mobile_search | Search |
Spent Credits | fb_mobile_spent_credits | N/A |
Start Trial | StartTrial | StartTrial |
Submit Application | N/A | SubmitApplication |
Subscribe | Subscribe | Subscribe |
Unlocked Achievement | fb_mobile_achievement_unlocked | N/A |
Viewed Content | fb_mobile_content_view | ViewContent |
Viewed Content - Automotive | fb_mobile_content_view | ViewContent |
Viewed Content - Travel | fb_mobile_content_view | ViewContent |
When setting up the custom mappings, the fb_content_type can provide additional information on the event to be used for Collaborative Ads. The acceptable values for fb_content_type are:
If a value provided for fb_content_type is not in the above list, the value sent will be product
.
mParticle forwards the mParticle product events Added to Cart and Added to Wishlist to Facebook using Facebook’s corresponding pre-defined event names. mParticle Product Views are forwarded to Facebook as the pre-defined event “Viewed Content”. The unit price, currency, product category, and SKU are passed to Facebook as well. See below for a sample Added to Cart event call using the Facebook SDK, and an equivalent call using the mParticle SDK.
//Facebook SDK call
[FBAppEvents logEvent:FBAppEventNameAddedToCart
valueToSum:54.23
parameters:@{ FBAppEventParameterNameCurrency : @"USD",
FBAppEventParameterNameContentType : @"shoes",
FBAppEventParameterNameContentID : @"HDFU-8452" } ];
//Equivalent mParticle SDK call
MPProduct *product = [[MPProduct alloc] initWithName:@"A Shoe"
category:@"shoes"
quantity:1
revenueAmount:54.23];
product.unitPrice = 54.23;
product.sku = @"HDFU-8452";
[[MParticle sharedInstance] logProductEvent:MPProductEventAddedToCart product:product];
//Facebook SDK call
Bundle parameters = new Bundle();
parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "shoes");
parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, "HDFU-8452");
logger.logEvent(AppEventsConstants.EVENT_NAME_ADDED_TO_CART,
54.23,
parameters);
//Equivalent mParticle SDK call
MPProduct product = new MPProduct.Builder("A Shoe", "HDFU-8452")
.quantity(1)
.unitPrice(54.23)
.totalRevenue(54.23)
.productCategory("shoes")
.currencyCode("USD")
.build();
mp.logProductEvent(MPProduct.Event.ADD_TO_CART, product);
Purchase events logged through mParticle’s eCommerce SDK methods will be forwarded to Facebook using Facebook’s “Purchased” pre-defined event name.
All custom app events, which are logged via mParticle’s logEvent
SDK method, will be forwarded to Facebook as custom app events, using the event name passed to mParticle’s logEvent
SDK method.
//Facebook SDK call
[FBAppEvents logEvent:@"battledAnOrc"];
//Equivalent mParticle SDK call
[[MParticle sharedInstance] logEvent:@"battledAnOrc"];
//Facebook SDK call
logger.logEvent("battledAnOrc");
//Equivalent mParticle SDK call
mp.logEvent("battledAnOrc");
For the Web platform, mParticle will forward screen views as ‘PageView’ events.
For the iOS/tvOS and Android platforms, screen views are supported by custom mappings. Reference the custom mappings section for more.
There are several fields only accepted by server-to-server Web connections. These fields and the mParticle fields they are set from are listed below:
Facebook Field Name | Description |
mParticle Field |
---|---|---|
client_user_agent |
The user agent for the browser corresponding to the event. This flag is required if the Default Action Source is set to Website in the connection configuration. | Facebook.ClientUserAgent custom flag |
event_source_url |
The browser URL where the event happened. This flag is required if the Default Action Source is set to Website in the connection configuration. | Facebook.EventSourceUrl custom flag |
opt_out |
A flag that indicates Facebook should not use this event for ads delivery optimization. | CCPA Opt Out Status |
Custom Data Fields | Additional data used for ads delivery optimization. | Custom attributes* |
*Custom data fields can also be set via custom mappings or E-Commerce event fields. See the relevant sections for more details.
Setting Name | Data Type | Default Value | Description |
---|---|---|---|
Access Token | string |
The Facebook Access Token used to make Marketing API calls. Required for Web. Facebook recommends using a System User Access Token. | |
Use Pixel Server-Side Forwarding | bool |
False | If enabled, mParticle will use Facebook’s Pixel Server-Side API to forward events for Web and Out-of-Band connections. Notes: this setting is read-only. To enable it, create a new configuration. |
Setting Name | Data Type | Default Value | Platform | Description |
---|---|---|---|---|
Send Purchase Product Data | bool |
False | All | If enabled, additional product data will be forwarded for purchase events |
Facebook Application ID | string |
iOS, Android, tvOS | The App ID found on your Facebook application’s dashboard | |
Facebook Application Secret | string |
iOS, Android, tvOS | The App Secret found on your Facebook application’s dashboard | |
Send Activate On | string |
ast | iOS, Android, tvOS | Specifies whether to send Facebook activate and deactivate messages based on mParticle application state transition messages or session start messages |
Limit Event and Data Usage | bool |
False | iOS, Android, tvOS | Sets whether data sent to Facebook should be restricted from being used for purposes other than analytics and conversions, such as targeting ads |
Pixel ID | string |
Web | Facebook Pixel ID | |
Default Action Source | string |
other | Web, Out of Band | The default value for a conversion’s action source. This value will be used if the Facebook.ActionSource custom flag is not set on the event. Please see the documentation for information on setting the custom flag. |
Forward Web Requests Server Side | bool |
False | Web | If enabled, requests will only be forwarded server-side |
Disable Automatic Page Logging | bool |
False | Web | Single Page Applications Only - By default, the Facebook Pixel has an HTML5 History State API listener activated. Whenever a new state is pushed into History, it will automatically fire a PageView event (outside of mParticle). This could lead to duplicate PageViews in Facebook. If you want all PageViews to be tracked via mParticle instead, check this box to disable this listener. |
External User Identity Type | string |
Customer ID | All | The User Identity to send to Facebook as an External ID. The identity is sent hashed for every selection except for MPID, which is sent raw. |
Send CCPA Limited Data Use | enum |
Never | All | When should mParticle send the CCPA limited data use flag to Facebook. Note: the flag can only be sent for batches with country and state user attributes defined or for Pixel connections with client IP defined. |
Email Type | enum |
All | The mParticle User Identity type to forward as an Email to Facebook. The email user identity will be hashed before forwarding to Facebook, other user identities selected from this dropdown will not be hashed prior to forwarding. |
Was this page helpful?