Skip to content

Update FB Pixel and Conversions API docs #1996

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Oct 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/_data/catalog/destination_categories.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# destination categories last updated 2021-10-08
# destination categories last updated 2021-10-11
items:
- display_name: A/B Testing
slug: a-b-testing
Expand Down
29 changes: 16 additions & 13 deletions src/_data/catalog/destinations.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# destination data last updated 2021-10-08
# destination data last updated 2021-10-11
items:
- display_name: 2mee
name: 2mee
Expand Down Expand Up @@ -7812,7 +7812,7 @@ items:
type: string
defaultValue: ''
description: >-
Your Pixel ID, from the snippet created on the [Facebook Pixel creation
Your Pixel ID from the snippet created on the [Facebook Pixel creation
page](https://www.facebook.com/ads/manager/pixel/facebook_pixel/).
required: true
label: Pixel ID
Expand Down Expand Up @@ -8014,20 +8014,22 @@ items:
type: boolean
defaultValue: false
description: >-
If true, we will initialize Facebook Pixel with any user traits that's
been cached in the Segment cookies from your previous `.identify()` calls.
If enabled, we will initialize Facebook Pixel with any user traits that
have been cached in the Segment cookies from your previous `.identify()`
calls.
required: false
label: Enable Advanced Matching
- name: keyForExternalId
type: string
defaultValue: ''
description: >-
Please indicated a user trait key which you would like Segment to use to
Please indicate a user trait key which you would like Segment to use to
send an `external_id` to Facebook Pixel using advanced matching. Segment
will use the value of this trait to map it to Facebook Pixel's
`external_id`.
`external_id`. Note: **Enable Advanced Matching** must be enabled to use
this setting.
required: false
label: 'Client-Side Only: Advanced Match Trait Key for External ID'
label: Advanced Match Trait Key for External ID
- name: legacyEvents
type: text-map
defaultValue: {}
Expand Down Expand Up @@ -8056,7 +8058,7 @@ items:
type: string
defaultValue: ''
description: >-
Your Pixel ID, from the snippet created on the [Facebook Pixel creation
Your Pixel ID from the snippet created on the [Facebook Pixel creation
page](https://www.facebook.com/ads/manager/pixel/facebook_pixel/).
required: true
label: Pixel ID
Expand Down Expand Up @@ -8086,10 +8088,11 @@ items:
type: boolean
defaultValue: false
description: >-
Enable this setting if you want to send, `userId` (or `anonymousId` if not
present) as external Id to Facebook.
Enable this setting if you want to send `userId` (or `anonymousId` if not
present) as `external_id` to Facebook when using advanced matching. Note:
**Enable Advanced Matching** must be enabled to use this setting.
required: false
label: Use UserId or Anonymous Id as External Id
label: Use User ID or Anonymous ID as External ID
- name: valueIdentifier
type: select
defaultValue: value
Expand Down Expand Up @@ -14968,10 +14971,10 @@ items:
- Personalization
logo:
url: >-
https://public-segment-devcenter-production.s3.amazonaws.com/de56ef24-11ea-4cc6-8df2-19db90ff5c1c.svg
https://public-segment-devcenter-production.s3.amazonaws.com/8bef9c9a-f29b-4019-8a93-687a77d538a9.svg
mark:
url: >-
https://public-segment-devcenter-production.s3.amazonaws.com/6aeb55d8-ffc0-468b-a5f7-21f8b2aa18e0.svg
https://public-segment-devcenter-production.s3.amazonaws.com/b77aa858-b09d-444a-94cc-39d6c7115283.svg
methods:
track: false
identify: true
Expand Down
2 changes: 1 addition & 1 deletion src/_data/catalog/source_categories.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# source cateogries last updated 2021-10-08
# source cateogries last updated 2021-10-11
items:
- display_name: A/B Testing
slug: a-b-testing
Expand Down
2 changes: 1 addition & 1 deletion src/_data/catalog/sources.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# sources last updated 2021-10-08
# sources last updated 2021-10-11
items:
- display_name: .NET
slug: net
Expand Down
2 changes: 1 addition & 1 deletion src/_data/catalog/warehouse_papi.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# warehouse data last updated 2021-10-08
# warehouse data last updated 2021-10-11
items:
- display_name: Azure SQL Data Warehouse
slug: azuresqldw
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,7 @@ This approach provides a redundancy that ensures maximum signal reliability. Eve

#### Match rate considerations

For this option to work best, you must pass the same `external_id` from both the browser and the server sources.
To do this, go to your Facebook Pixel destination settings in Segment, and enable **Use UserId or Anonymous Id as External Id**. By default the Facebook Conversions API destination uses the `userId` (or `anonymousId` if not present) to set the External Id, so when you set up Facebook Pixel to use the same settings, Facebook can then match the users.
For this option to work best, pass the same `external_id` from the browser and the server. To achieve this, go to the Facebook Pixel destination settings in Segment and enable the **Enable Advanced Matching** and **Use User ID or Anonymous ID as External ID** settings. By default, the Facebook Conversions API destination uses the `userId` (or `anonymousId` if not present) to set the `external_id`, so when you configure Facebook Pixel to use the same settings, Facebook matches users by those IDs.

You can also increase the match rate for events from a server source by sending [user traits in the context object of the track events](#default-mappings-to-facebook-properties). You can also collect other fields from the browser, such as `userAgent`, `ip` address, and [Facebook's parameters (fbp, fbc)](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc) and pass them to the server, and manually add them to the events.

Expand All @@ -91,9 +90,9 @@ Use this approach if you want to separate tracking events completed on a user's

#### Match rate considerations

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.
For this option to work best, the same `external_id` needs to be passed from the browser and the server. To achieve this, go to your Facebook Pixel destination settings in Segment and enable the **Enable Advanced Matching** and **Use User ID or Anonymous ID as External ID** settings. By default the Facebook Conversions API destination uses the `userId` (or `anonymousId` if not present) to set the `external_id`, so when you set up Facebook Pixel to use the same settings, Facebook can then match the users.

You can also increase the match rate for events from a server source by sending [user traits in the context object of the track events](#default-mappings-to-facebook-properties). You can also collect other fields from the browser, such as `userAgent`, `ip` address, and [Facebook's parameters (fbp, fbc)](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc) and pass them to the server, and manually add them to the events.
You can also send [user traits in the context object of the track events](#default-mappings-to-facebook-properties)to increase the match rate for events from a server source. Collect other fields from the browser, like `userAgent`, `ip` address, and [Facebook's parameters (fbp, fbc)](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc){:target="_blank"}, pass them to the server, and manually add them to the events.

#### Deduplication considerations

Expand Down Expand Up @@ -124,7 +123,7 @@ For more information about Track calls, see the [Track method](/docs/connections

Beginning February 15th 2021, Facebook requires 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 may not be available for optimization, targeting, or measurement.

| Server Event Parameter | Requirement | Implementation |
| Server Event Parameter | Requirement | Implementation p |
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@markzegarelli was adding this p intentional?

| ---------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `action_source` | Always required | It is set automatically but it can be set manually. |
| `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. |
Expand All @@ -139,7 +138,7 @@ You can set `action_source` manually by passing it as a property of a Track even

| Action Source Values | Description |
| -------------------- | --------------------------------------------------------------------------------------------------------- |
| `chat` | Conversion was made via a messaging app, SMS, or online messaging feature. |
| `chat` | Conversion was made through a messaging app, SMS, or online messaging feature. |
| `email` | Conversion happened over email. |
| `other` | Conversion happened in a way that is not listed. |
| `phone_call` | Conversion was made over the phone. |
Expand Down Expand Up @@ -265,18 +264,18 @@ analytics.track("Clicked Email", {
```

### Custom Mappings to Facebook Properties
Any properties you send that aren't listed above are sent in the 'Custom Data' part of the Segment payload to Facebook.
Any properties you send that aren't listed above are sent in the `custom_data` part of the Segment payload to Facebook.

### Alternative External IDs

By default, Segment sends the `userID` as `externalID`, and if `userID` is absent falls back to `anonymousID`. To use a different field in your payload as the External ID, use the "Alternative External ID Field". An example value for this setting would be `properties.externalId`.
By default, Segment sends the `userId` as `external_id`, and if `userId` is absent falls back to `anonymousId`. To use a different field in your payload as the `external_id`, use the **Alternative External ID Field** setting. An example value for this setting would be `properties.externalId`.

### Alternative "Value" Properties
### Alternative Value Properties

For most events Segment sends revenue for the Pixel value field, but for
the pre-purchase events "Product Viewed" and "Product Added", Segment
uses the value of the "Value Field Identifier" setting to determine which
property to use for the "value" field. This field defaults to
the pre-purchase events `Product Viewed` and `Product Added`, Segment
uses the value of the **Value Field Identifier** setting to determine which
property to use for the `value` field. This field defaults to
`price`.

## Limited Data Use
Expand Down Expand Up @@ -313,7 +312,7 @@ minutes. You can confirm that Facebook received them:

1. Go to the Events Manager.
2. Click on the corresponding pixel.
3. In the **Overview** tab, look for events where the "Connection Mode" is `Server`.
3. In the **Overview** tab, look for events where the "Connection Method" is `Server`.

> info ""
> **Note**: It might take a few minutes before events appear in the Events Manager.
Expand Down
22 changes: 13 additions & 9 deletions src/connections/destinations/catalog/facebook-pixel/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ strat: facebook

[Facebook Pixel](https://developers.facebook.com/docs/facebook-pixel) lets you measure and optimize the performance of your Facebook Ads. It makes conversion tracking, optimization and remarketing easier than ever. The Facebook Pixel Destination is open-source. You can browse the code [on GitHub](https://github.com/segment-integrations/analytics.js-integration-facebook-pixel).

_**NOTE:** Facebook has deprecated their modular "Ads For Websites" suite, which previously comprised Facebook Custom Audiences and Facebook Conversion Tracking. We've consolidated those two destinations into this new and improved "Facebook Pixel" destination._
> warning ""
> Facebook has deprecated the modular "Ads For Websites" suite, which previously comprised Facebook Custom Audiences and Facebook Conversion Tracking. We've consolidated those two destinations into this new and improved "Facebook Pixel" destination.


This document was last updated on 31st October, 2018. If you notice any gaps, out-dated information or simply want to leave some feedback to help us improve our documentation, [let us know](https://segment.com/help/contact)!

**Use Cases**

Expand Down Expand Up @@ -39,7 +40,7 @@ Segment automatically initializes Facebook's pixel with your `pixelId` upon load

## Page

If you're not familiar with the Segment Specs, take a look to understand what the [Page method](https://segment.com/docs/connections/spec/page/) does. An example call would look like:
If you're not familiar with the Segment Specs, take a look to understand what the [Page method](/docs/connections/spec/page/) does. An example call would look like:

```javascript
analytics.page();
Expand All @@ -49,7 +50,7 @@ We've mapped `analytics.page()` to [Facebook's `fbq('track', "PageView")`](https

## Identify

If you're not familiar with the Segment Specs, take a look to understand what the [Identify method](https://segment.com/docs/connections/spec/identify/) does. An example call would look like:
If you're not familiar with the Segment Specs, take a look to understand what the [Identify method](/docs/connections/spec/identify/) does. An example call would look like:

```javascript
analytics.identify('ze8rt1u89', {
Expand All @@ -69,7 +70,7 @@ When you make an Identify call with Segment, it will update Facebook Pixel the n

## Track

If you're not familiar with the Segment Specs, take a look to understand what the [Track method](https://segment.com/docs/connections/spec/track/) does. An example call would look like:
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:

```javascript
analytics.track("My Custom Event", {
Expand Down Expand Up @@ -159,9 +160,12 @@ Facebook accepts the following properties:
- State
- Zip code

If you follow Segment's [spec](/docs/connections/spec/identify/#traits), these would automatically be sent correctly.
If you follow Segment's [spec](/docs/connections/spec/identify/#traits), these properties send in the correct format.

When you use Advanced Matching, Facebook also accepts an External ID. This can be any unique ID from the advertiser, like loyalty membership IDs, user IDs, and external cookie IDs. To send an `external_id` to Facebook you can either:

Facebook also accepts an External ID. This can be any unique ID from the advertiser, such as loyalty membership IDs, user IDs, and external cookie IDs. In order to send an `external_id` to Facebook you can indicate which user trait you would like Segment to map to `external_id` using the **Client-Side Only: Advanced Match Trait Key for External ID** setting.
- Send the Segment `userId` or `anonymousId` as `external_id` using the **Use User ID or Anonymous ID as External ID** setting
- Indicate which user trait you would like Segment to map to `external_id` using the **Advanced Match Trait Key for External ID** setting

## Limited Data Use

Expand All @@ -174,7 +178,7 @@ Facebook also accepts an External ID. This can be any unique ID from the adverti

Facebook uses the `context.ip` to determine the geolocation of the event.

You can manually change the Data Processing parameters by adding settings to the `integrations` object. For Facebook Pixel, you must store these settings in the [Load object](https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/#load-options) so that Segment can set them *before* it calls `init`. The example below shows how you might set custom Data Processing parameters in Analytics.js.
You can manually change the Data Processing parameters by adding settings to the `integrations` object. For Facebook Pixel, you must store these settings in the [Load object](/docs/connections/sources/catalog/libraries/website/javascript/#load-options) so that Segment can set them *before* it calls `init`. The example below shows how you might set custom Data Processing parameters in Analytics.js.

```javascript
analytics.load("replace_with_your_write_key", {
Expand Down Expand Up @@ -213,7 +217,7 @@ Facebook enforces strict guidelines around sending Personally Identifiable Infor

Any `track` events with properties containing those keys will be sent to Facebook with those properties omitted.

If you have events that use any of those keys for non-PII properties, you can manually whitelist them using the **Allowlist PII Properties** setting. You may also add to this list and/or optionally hash blocklisted properties with the **Blocklist PII Properties** setting.
If you have events that use any of those keys for non-PII properties, you can manually allowlist them using the **Allowlist PII Properties** setting. You may also add to this list and/or optionally hash blocklisted properties with the **Blocklist PII Properties** setting.

### Inconsistent or Missing Conversions

Expand Down