Optimization Simplification

Starting Marketing API v2.4, we simplified how the optimization is specified in the data model by decoupling the bid fields into 3 separate fields. With this simplification, we should be able to significantly reduce the confusion around optimization specification in both the API and our UIs.

Bid type to billing_event and optimization_goal

The table below illustrates the mapping between bid type, billing_event and optimization_goal. Do not use this table as a reverse mapping.

bid type (deprecated) billing_event optimization_goal rtb_flag

CPC

CLICKS

CLICKS

n/a

CPM_FIXED

IMPRESSIONS

IMPRESSIONS

n/a

CPM

IMPRESSIONS

IMPRESSIONS

n/a

ABSOLUTE_OCPM

IMPRESSIONS

Any

n/a

CPA

APP_INSTALLS

APP_INSTALLS

n/a

PAGE_LIKES

PAGE_LIKES

n/a

OFFER_CLAIMS

OFFER_CLAIMS

n/a

LINK_CLICKS

LINK_CLICKS

n/a

RTB (for FBX)

IMPRESSIONS

EXTERNAL

Set to true

Unspecified

NONE

n/a

n/a

billing_event=NONE is only available on read paths for certain campaigns created in pre-v2.2 where Facebook is unable to determine the billing_event. New ad sets cannot be created with a NONE billing_event.

Optimization Goal

optimization_goal=NONE is only available on read paths for certain campaigns created in pre-v2.4 where Facebook is unable to determine the optimization_goal. New ad sets cannot be created with a NONE optimization_goal.

billing_event to bid type

The table below illustrates what to set in billing_event which maps to the now older (now deprecated feature) bid type`.

For ad sets in campaigns with a buying_type=AUCTION,

billing_event rtb_flag bid type (deprecated)

APP_INSTALLS

CPA

OFFER_CLAIMS

CPA

LINK_CLICKS (objective=MOBILE_APP_*)

CPC

LINK_CLICKS (all other objectives)

CPA

PAGE_LIKES

CPA

IMPRESSIONS

true

RTB

IMPRESSIONS

oCPM

Validation

For updated validation logic between objective, billing_event, and optimization_goal, refer to the validation doc.

Note: optimization_goal defaults are listed in validation doc, as they are dependent on objective.