Marketing API Version

Custom Conversions

Optimize ads delivery based online and offline conversion events that you define. Track activity without adding new events Facebook pixel. Custom conversions objects are associated with an Ad Account. Use them to describe events you want to measure and events you want to track to optimize ads delivery.

Specify actions that are different from the nine standard events. See also Facebook Pixel, Conversion Tracking with Facebook Pixel and Promoted Object.

You need standard API access for this endpoint. See Marketing API, Access Levels.

For example, define a PURCHASE conversion as an event occuring when someone visits certain pages such as thankyou.html or confirmation.html:

curl \
-F 'name=URL based Custom Conversion' \
-F 'event_source_id=<FB_PIXEL_ID>' \
-F 'rule={"or":[{"url":{"i_contains": "thankyou.html"}},{"url":{"i_contains":"confirmation.html"}}]}' \
-F 'custom_event_type=PURCHASE' \
-F 'access_token=<ACCESS_TOKEN>' \
'https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/customconversions'

In this example, events occur if someone visits those two .html pages, case-insensitive of the page name and extention.

Limitations

Note that the maximum number of custom conversions you can have per ad account is 40.

If you use the Ads Insights API to get metrics on custom conversions, be aware of these limitations:

  • Getting product ID breakdowns are not supported.
  • Getting unique action counts are not supported.

Reading

Custom conversions on Facebook allows you to optimize and track actions without having to add anything to your Facebook pixel base code. They also allow you to optimize for and track actions that are different from the 9 standard events that come with the Facebook pixel.

Permissions

Developers usually request these permissions for this endpoint:

Marketing Apps
  • ads_management
Page management Apps
No data
Other Apps
No data

List of custom conversions for an account:

curl -G \
-d 'fields=["pixel","rule","custom_event_type"]' \
-d "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/customconversions
If you want to learn how to use the Graph API, read our Using Graph API guide.

Parameters

This endpoint doesn't have any parameters.

Fields

FieldDescription

id

numeric string

ID of the custom conversion

account_id

string

Ad Account ID assoicated to this custom conversion

aggregation_rule

string

Advanced aggregation custom conversion rule

creation_time

datetime

Time at which the conversion was created

custom_event_type

enum {ADD_PAYMENT_INFO, ADD_TO_CART, ADD_TO_WISHLIST, COMPLETE_REGISTRATION, CONTENT_VIEW, INITIATED_CHECKOUT, LEAD, PURCHASE, SEARCH, OTHER}

The type of the conversion event, e.g. PURCHASE

data_sources

list<ExternalEventSource>

Event sources of the custom conversion

default_conversion_value

integer

When conversion is URL based, the default conversion value associated to each conversion

description

string

Description of the custom conversion

event_source_type

enum

Event source type of the custom conversion, e.g. pixel, app, etc.

first_fired_time

datetime

Time at which the pixel was first fired

is_archived

bool

Whether this conversion is archived. Archived conversions are no longer tracked in the system

last_fired_time

datetime

Time at which the pixel was last fired

name

string

Name of the custom conversion

offline_conversion_data_set

OfflineConversionDataSet

The offline event set that contains events

pixel

The pixel that will send events

retention_days

unsigned int32

Retention period for advanced rule

rule

string

Rule of the custom conversion

Edges

EdgeDescription

activities

Modification history for this conversion

adaccounts

Shared ad accounts data under business

stats

Stats data for this conversion

Validation Rules

ErrorDescription
100Invalid parameter
275Cannot determine the target object for this request. Currently supported objects include ad account, business account and associated objects.
278Reading advertisements requires an access token with the extended permission ads_read
294Managing advertisements requires an access token with the extended permission for ads_management

Creating

When you create a custom conversion, provide rule with these operators and data:

NameDescription

Operators

The type of filter.

i_contains

Contains substring (case insensitive)

i_not_contains

Does not contain substring (case insensitive)

contains

Contains substring (case sensitive)

not_contains

Does not contain substring (case sensitive)

eq

Equal to (case sensitive)

neq

Not equal to (case sensitive)

lt

Less than (numeric fields only)

lte

Less than or equal to (numeric fields only)

gt

Greater than (numeric fields only)

gte

Greater than or equal to (numeric fields only)

regex_match

Matches a regular expression (eg: "example\.com.*purchase$"). The full PCRE grammar is supported

Data

The data being filtered.

url

The full escaped URL of the site visited

event

The name of the pixel event fired from your website. Example: Purchase

Examples

Defines a high-value PURCHASE when someone triggers the Purchase standard event and purchase value is greater than 100:

curl \
-F 'name=High value Purchase Custom Conversion' \
-F 'event_source_id=<FB_PIXEL_ID>' \
-F 'rule={"and":[{"event":{"eq": "Purchase"}},{"value":{"gt":100}}]}' \
-F 'custom_event_type=PURCHASE' \
-F 'access_token=<ACCESS_TOKEN>' \
'https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/customconversions'

Define a custom event then build a custom conversion for it. Specify a PURCHASE conversion that to track when a user-defined, item-sold custom event occurs. Track when someone purchases an item in a certain color.

Step 1: Define item-sold custom event in Facebook pixel on your website:

fbq('trackCustom', 'item-sold', {
   color: 'black',
   value: 1.00,
   currency: 'USD'
});

Step 2: Provide a PURCHASE conversion for the item-sold custom event for a given color by specifying it as a custom parameter:

curl \
-F 'name=Item Sold Custom Conversion' \
-F 'event_source_id=<FB_PIXEL_ID>' \
-F 'rule={"and":[{"event":{"eq": "item-sold"}},{"color":{"i_contains":"black"}}]}' \
-F 'custom_event_type=PURCHASE' \
-F 'access_token=<ACCESS_TOKEN>' \
'https://graph.facebook.com/<API_VERSION>/act_<AD_ACCOUNT_ID>/customconversions'
You can make a POST request to claim_custom_conversions edge from the following paths:
When posting to this edge, a CustomConversion will be created.

Parameters

NameDescription
custom_conversion_id
numeric string or integer

Custom conversion ID the business claims

Required

Return Type

Struct {
success: bool,
}
You can make a POST request to customconversions edge from the following paths:
When posting to this edge, a CustomConversion will be created.

Parameters

NameDescription
custom_event_type
enum {ADD_PAYMENT_INFO, ADD_TO_CART, ADD_TO_WISHLIST, COMPLETE_REGISTRATION, CONTENT_VIEW, INITIATED_CHECKOUT, LEAD, PURCHASE, SEARCH, OTHER}

The custom event type of the conversion being created

Required
default_conversion_value
float
Default value: 0

The default conversion value of the conversion being created

description
string

The description of the conversion being created

event_source_id
numeric string or integer

Event source ID, where event sources are pixel, offline event sets and so on. Aggregate custom conversion data from these sources.

name
string

The name of the conversion being created

Required
rule
string

Only count an event as a custom conversion if it fulfills this rule.

Return Type

This endpoint supports read-after-write and will read the node represented by id in the return type.
Struct {
id: numeric string,
}

Validation Rules

ErrorDescription
100Invalid parameter
275Cannot determine the target object for this request. Currently supported objects include ad account, business account and associated objects.

Updating

You can update a CustomConversion by making a POST request to /{custom_conversion_id}/adaccounts.

Parameters

NameDescription
account_id
numeric string or integer

the adaccount one custom conversion is shared with

Required
business
numeric string or integer

the business which owns the custom conversion

Required

Return Type

This endpoint supports read-after-write and will read the node to which you POSTed.
Struct {
success: bool,
}
You can update a CustomConversion by making a POST request to /{custom_conversion_id}/shared_agencies.

Parameters

NameDescription
business
numeric string or integer

ID of agency business

Required

Return Type

This endpoint supports read-after-write and will read the node to which you POSTed.
Struct {
success: bool,
}
You can update a CustomConversion by making a POST request to /{custom_conversion_id}.

Parameters

NameDescription
default_conversion_value
float

The default conversion value of the conversion being created

description
string

Description of the custom conversion

name
string

Name of the custom conversion

Return Type

This endpoint supports read-after-write and will read the node to which you POSTed.
Struct {
success: bool,
}

Validation Rules

ErrorDescription
100Invalid parameter
275Cannot determine the target object for this request. Currently supported objects include ad account, business account and associated objects.

Deleting

You can dissociate a CustomConversion from a CustomConversion by making a DELETE request to /{custom_conversion_id}/adaccounts.

Parameters

NameDescription
account_id
numeric string or integer

the adaccount one custom conversion is unshared with

Required
business
numeric string or integer

the business which owns the custom conversion

Required

Return Type

Struct {
success: bool,
}
You can dissociate a CustomConversion from a CustomConversion by making a DELETE request to /{custom_conversion_id}/shared_agencies.

Parameters

NameDescription
business
numeric string or integer

ID of agency business

Required

Return Type

Struct {
success: bool,
}
You can delete a CustomConversion by making a DELETE request to /{custom_conversion_id}.

Permissions

Developers usually request these permissions for this endpoint:

Marketing Apps
  • ads_management
Page management Apps
No data
Other Apps
No data

Parameters

This endpoint doesn't have any parameters.

Return Type

Struct {
success: bool,
}

Validation Rules

ErrorDescription
200Permissions error
100Invalid parameter