Skip to content

Commit bcd8bde

Browse files
authored
Merge branch 'master' into button-documentation
2 parents 6fca179 + 544f3d3 commit bcd8bde

File tree

1 file changed

+89
-19
lines changed
  • src/connections/destinations/catalog/facebook-pixel-server-side

1 file changed

+89
-19
lines changed

src/connections/destinations/catalog/facebook-pixel-server-side/index.md

Lines changed: 89 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ redirect_from: '/connections/destinations/catalog/facebook-conversions-api/'
88

99
[Facebook Conversions API](https://developers.facebook.com/docs/marketing-api/conversions-api) allows advertisers to send events from their servers directly to Facebook. Server-Side events are linked to a pixel and are processed like browser pixel events. This means that Server-Side events are used in measurement, reporting, and optimization in the same way as browser pixel events.
1010

11+
> warning "Server Event Parameter Requirements"
12+
> Beginning February 15th, 2021, Facebook will enforce new requirements for server event parameters. After February 15th, 2021, Facebook will drop events sent to the Conversions API that do not meet the new requirements. For details on how implement these requirements see [Server Event Parameter Requirements](/docs/connections/destinations/catalog/facebook-pixel-server-side/#server-event-parameter-requirements)
13+
1114
> info "Destination name change"
1215
> Facebook Conversions API was renamed from Facebook Pixel Server-Side.
1316
@@ -39,12 +42,12 @@ This page is about the **Facebook Conversions**. For documentation on other Face
3942
4043
## Use Cases
4144

42-
Facebook Conversions API satisfies multiple use cases. It can be used a complement to [Facebook Pixel](/docs/connections/destinations/catalog/facebook-pixel/), or it can be used as a stand-alone alternative.
45+
Facebook Conversions API satisfies multiple use cases. You can use it as a compliment to [Facebook Pixel](/docs/connections/destinations/catalog/facebook-pixel/), or as a stand-alone alternative.
4346

4447
Implementation Options:
45-
1. [Send the same events from both the browser and the server](/docs/connections/destinations/catalog/facebook-conversions-api/#send-the-same-events-from-both-the-browser-and-the-server).
46-
2. [Send different events; some from the browser others from the server](/docs/connections/destinations/catalog/facebook-conversions-api/#send-different-events-some-from-the-browser-others-from-the-server).
47-
3. [Only send events from the server](/docs/connections/destinations/catalog/facebook-conversions-api/#only-send-events-from-the-server).
48+
1. [Send the same events from both the browser and the server](#send-the-same-events-from-both-the-browser-and-the-server).
49+
2. [Send different events; some from the browser others from the server](#send-different-events-some-from-the-browser-others-from-the-server).
50+
3. [Only send events from the server](#only-send-events-from-the-server).
4851

4952
### Send the same events from both the browser and the server
5053

@@ -54,7 +57,7 @@ This approach provides a redundancy that ensures maximum signal reliability. Eve
5457
#### Match rate considerations
5558
For this option to work best, the same `external_id` needs to be passed from the browser and from the server. To easily achieve this go to your Segment destination settings for Facebook Pixel and toggle on the setting called **Use UserId or Anonymous Id as External Id**. The Facebook Conversions API destination uses the userId (or anonymousId if not present) to set the External Id by default. Therefore enabling this on Facebook Pixel will allow Facebook to match the users. There are some additional steps you can take to increase the match rate for server-side events. [User traits can be passed into the context object of the track events](/docs/connections/destinations/catalog/facebook-conversions-api/#default-mappings-to-facebook-properties). Other fields such as `userAgent`, `ip` address, and [Facebook's parameters (fbp, fbc)](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc) can all be collected from the browser and passed to the server and then manually entered into the events.
5659

57-
#### Dedupliation considerations
60+
#### Deduplication considerations
5861
Events will only be deduplicated if the same event is sent first from the browser and then from the server. When this sequence occurs the server event will be discarded. If you send two consecutive browser events with the same information, neither will be discarded. If you send two consecutive server events with the same information, neither will be discarded.
5962

6063
### Send different events; some from the browser others from the server
@@ -86,19 +89,84 @@ If you choose this option, you do not need to worry about event deduplication.
8689

8790
Currently, Facebook Conversions only supports Track calls.
8891

89-
If you're not familiar with the Segment Specs, take a look to understand what the [Track method](/docs/connections/spec/track/) does. An example call would look like:
92+
For more information about Track calls, see the [Track method](/docs/connections/spec/track/) in the Segment Spec.
9093

91-
```javascript
92-
analytics.track('Products Searched', {
93-
query: 'blue roses'
94+
## Server Event Parameter Requirements
95+
96+
Beginning February 15th, 2021, Facebook will require the `action_source` server event parameter for all events sent to the Conversions API. This parameter is used to specify where the conversions occurred. If `action_source` is set to 'website' then the `client_user_agent` and the `event_source_url` parameters are also required. Events sent to the Conversions API after February 15th that do not meet the requirements will be dropped by Facebook.
97+
98+
| Server Event Parameter | Requirement | Implementation |
99+
| ---------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
100+
| `action_source` | Always required | It is set automatically but it can be set manually. |
101+
| `client_user_agent` | Only required if `action_source` = “website" | It must be set manually if using a server library. It is set automatically if using the Segment web library. |
102+
| `event_source_url` | Only required if `action_source` = “website" | It must be set manually if using a server library. It is set automatically if using the Segment web library. |
103+
104+
105+
### Action Source
106+
107+
`action_source` is set to "website" as a default value. If a mobile library is used then `action_source` defaults to “app”.
108+
109+
You can set `action_source` manually by passing it as a property of a Track event. You can use either snake case or camel case to include `action_source` as a property in Track events.
110+
111+
| Action Source Values | Description |
112+
| -------------------- | --------------------------------------------------------------------------------------------------------- |
113+
| `app` | Conversion was made using your app. |
114+
| `chat` | Conversion was made via a messaging app, SMS, or online messaging feature. |
115+
| `email` | Conversion happened over email. |
116+
| `other` | Conversion happened in a way that is not listed. |
117+
| `phone_call` | Conversion was made over the phone. |
118+
| `physical_store` | Conversion was made in person at your physical store. |
119+
| `system_generated` | Conversion happened automatically, for example, a subscription renewal that’s set on auto-pay each month. |
120+
| `website` | Conversion was made on your website. |
121+
122+
123+
### Client User Agent
124+
125+
`client_user_agent` is set by including `context.userAgent` in the track event. The value used should be the user agent of the browser where the conversion event occurred. If you're using a server library, set `client_user_agent` manually. If you're using the Segment web library, `client_user_agent` is set automatically.
126+
127+
### Event Source URL
128+
129+
`event_source_url` is set by including `context.page.url` in the track event. The value used should be the browser URL where the conversion event occurred. If you're using a server library, set `event_source_url` manually. If you're using the Segment web library, `event_source_url` is set automatically.
130+
131+
### Implementing Server Event Parameter Requirements
132+
133+
If `action_source` is set to 'website', the `context.userAgent` and the `context.page.url` fields are required. Segment server-side libraries do not collect `context.userAgent` or `context.page.url` by default. This data must be retrieved manually from the client and passed to the server.
134+
135+
The snippet below provides an example of a [`Product Added`](/docs/connections/spec/ecommerce/v2/#product-added) event using Node.js. Notice in this example that the `action_source` parameter has not been set manually by passing this field into the event. The `action_source` parameter will default to "website". Since `action_source` = "website" the `client_user_agent` and the `event_source_url` parameters are required. Therefore the `context.userAgent` and the `context.page.url` fields have been manually passed into the event.
136+
137+
```javascript
138+
analytics.track({
139+
context: {
140+
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36",
141+
page: {
142+
url: "https://segment.com/"
143+
}
144+
},
145+
userId: "97980cfea0067",
146+
event: "Product Added",
147+
properties: {
148+
brand: "Hasbro",
149+
cart_id: "skdjsidjsdkdj29j",
150+
category: "Games",
151+
coupon: "MAYDEALS",
152+
image_url: "https://www.example.com/product/path.jpg",
153+
name: "Monopoly: 3rd Edition",
154+
position: 3,
155+
price: 18.99,
156+
product_id: "507f1f77bcf86cd799439011",
157+
quantity: 1,
158+
sku: "G-32",
159+
url: "https://www.example.com/product/path",
160+
variant: "200 pieces"
161+
},
94162
});
95163
```
96164

97165
### Default Mappings to Facebook Standard Events
98166

99167
The following mappings are automatic and require no additional set up. Any of the Segment Ecommerce Events in the table below will be sent as the corresponding Facebook Standard Event. You learn more about these in the Facebook pixel [standard events documentation](https://developers.facebook.com/docs/facebook-pixel/implementation/conversion-tracking#standard-events).
100168

101-
| Segment Ecommerce Event | Facebook Standard Event |
169+
| Segment E-commerce Event | Facebook Standard Event |
102170
| ----------------------- | ----------------------- |
103171
| `Checkout Started` | `InitiateCheckout` |
104172
| `Order Completed` | `Purchase` |
@@ -128,6 +196,7 @@ Segment maps the following Segment traits to [Facebook properties](https://devel
128196
| **Segment Property** | **Pixel Property** | **Notes** |
129197
| ----------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
130198
| `context.ip` | `user_data.client_ip_address` | |
199+
| `context.page.url` | `event_source_url` | |
131200
| `context.traits.address.city` | `user_data.ct` | hashed |
132201
| `context.traits.address.postalCode` | `user_data.zp` | hashed |
133202
| `context.traits.address.state` | `user_data.st` | hashed |
@@ -139,6 +208,7 @@ Segment maps the following Segment traits to [Facebook properties](https://devel
139208
| `context.userAgent` | `user_data.client_user_agent` | |
140209
| `event` | `event_name` | |
141210
| `messageId` | `event_id` | |
211+
| `properties.action_source` | `action_source` | |
142212
| `properties.currency` | `custom_data.currency` | Defaults to USD if not set |
143213
| `properties.fbc` | `fbc` | |
144214
| `properties.fbp` | `fbp` | |
@@ -197,15 +267,15 @@ You can manually change the Data Processing parameters by adding settings to the
197267
```javascript
198268
// node.js library example
199269

200-
analytics.track({
201-
event: 'Membership Upgraded',
202-
userId: '97234974',
203-
integrations: {
204-
"Facebook Conversions": {
205-
"dataProcessingOptions": [[], 1,1000]
206-
}
207-
}
208-
})
270+
analytics.track({
271+
event: 'Membership Upgraded',
272+
userId: '97234974',
273+
integrations: {
274+
"Facebook Conversions": {
275+
"dataProcessingOptions": [[], 1,1000]
276+
}
277+
}
278+
})
209279
```
210280

211281
## Verify Events in Facebook

0 commit comments

Comments
 (0)