Supervisar el estado de los anuncios en tiempo real. Una regla basada en el activador se evalúa inmediatamente después de que se cambian los metadatos o los datos de las estadísticas de los objetos publicitarios correspondientes. La latencia relacionada a los cambios de los metadatos suele ser de unos pocos segundos, y la de las estadísticas, de unos pocos minutos (p99 actual es de unos 7,5 minutos).
En relación con las reglas basadas en activación, no se admite schedule_spec
, ya que siempre se verifican en tiempo real.
Las reglas basadas en activación solo están disponibles en la API en este momento. No es posible acceder a estas reglas mediante el administrador de anuncios.
El objeto trigger
define cómo se evalúa una regla. Todos los tipos de activadores requieren un field
disparador, excepto METADATA_CREATION
. Una regla basada en activación solo comprueba su estado cuando se cambia este campo.
Una regla basada en activación solo puede tener un trigger
. Si tienes condiciones o restricciones que se aplican a múltiples métricas, puedes agregar las restantes como filters
.
El campo filters
se usa de la misma manera que en Reglas basadas en el calendario. Una regla basada en activación solo pasa su evaluación cuando trigger
y todos los filters
satisfacen las comparaciones. Por ese motivo, un activador y un filtro son intercambiables si el cambio de un campo lleva al cambio de otro. Por ejemplo, si deseas que una regla se active cuando cost_per_mobile_app_install
> X
Y spent
> Y
, puedes usar cost_per_mobile_app_install
o spent
como disparador, y el otro como uno de los filtros, porque esos dos campos dependen entre sí.
El objeto trigger
se encuentra en evaluation_spec
, y presenta la siguiente estructura:
Teclas del objeto "Trigger" | Descripción |
---|---|
| El tipo de regla basada en activación. Las opciones actuales admitidas son las siguientes:
|
| El campo subyacente. No se encuentra en uso en relación con |
| El valor del filtro subyacente. No se encuentra en uso en relación con |
| El operador de filtro subyacente. No se encuentra en uso en relación con |
Puedes crear reglas de anuncios que se activan de cuatro maneras diferentes:
METADATA_CREATION
o METADATA_UPDATE
STATS_MILESTONE
o STATS_CHANGE
Esta regla se usa para supervisar cuando se crea un objeto publicitario. Solo se requiere type
dentro de las especificaciones trigger
. En lo que respecta a los filtros, especifica el entity_type
que deseas supervisar.
Aquí se proporciona un ejemplo de una regla de creación de metadatos para supervisar la creación de todos los anuncios vinculados a un objetivo determinado. Cada vez que se crea un nuevo anuncio en relación con una campaña publicitaria del objetivo APP_INSTALLS
, se envía un ping.
curl -i -X POST \ -F 'name=Metadata Creation Example 1' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "METADATA_CREATION", }, "filters" : [ { "field": "entity_type", "value": "AD", "operator": "EQUAL", }, { "field": "campaign.objective", "value": ["APP_INSTALLS"], "operator": "IN", }, ] }' \ -F 'execution_spec={ "execution_type": "PING_ENDPOINT" }' \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library"
Esta regla se usa para supervisar cuando se cambian los metadatos de un objeto publicitario. Consulta la lista de campos de metadatos admitidos. Dentro de la especificación trigger
, es obligatorio el valor field
, mientras que value
y operator
son opcionales.
Si te interesa cambiar un campo, no importa cuál sea su valor; solo necesitas especificar la opción field
. Aquí se proporciona un ejemplo en el que se te envía una notificación de Facebook cada vez que cambia el presupuesto diario de un conjunto de anuncios.
curl -i -X POST \ -F 'name=Metadata Update Example 1' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "METADATA_UPDATE", "field": "daily_budget", }, "filters" : [ { "field": "entity_type", "value": "ADSET", "operator": "EQUAL", }, ] }' \ -F 'execution_spec={ "execution_type": "NOTIFICATION" }' \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library"
Si solo te interesa un subconjunto de los eventos, puedes proporcionar opciones operator
y value
para mejorar la condición trigger
. Aquí se muestra un ejemplo en el que se envía una notificación cuando el presupuesto diario de un conjunto de anuncios cambia y supera los 1.000:
curl -i -X POST \ -F 'name=Metadata Update Example 2' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "METADATA_UPDATE", "field": "daily_budget", "value": 1000, "operator": "GREATER_THAN" }, "filters" : [ { "field": "entity_type", "value": "ADSET", "operator": "EQUAL", }, ] }' \ -F 'execution_spec={ "execution_type": "PING_ENDPOINT" }' \ -F "access_token=<ACCESS_TOKEN>" \ "https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library"
Con STATS_MILESTONE
como type
, evaluation_spec
se activa cuando field
alcanza un múltiplo de value
en relación con los objetos que coinciden con las condiciones de la matriz filters
.
Para este tipo específico de regla, el disparador operator
debe ser EQUAL
, y el filtro time_preset
debe tener un valor de LIFETIME
.
Hay un conjunto más restrictivo de campos admitidos. Los campos no incluidos a continuación no se admiten como activador field
, pero aún puede usarse como filtro en la lista de filters
. Además, hay valores mínimos requeridos para el value
del activador en función del field
.
Valores de campo de activación admitidos | Valor mínimo |
---|---|
| 1.000 |
| 1.000 |
| 1.000 |
| 10 |
| 10 |
| 1.000 (centavos) |
| 5 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
Aquí hay un ejemplo de una regla de hito de las estadísticas, que envía un ping cada vez que alguien comenta tu publicación:
curl \ -F 'name=Rule 1' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "STATS_MILESTONE", "field": "post_comment", "value": 1, "operator": "EQUAL" }, "filters" : [ { "field": "entity_type", "value": "CAMPAIGN", "operator": "EQUAL", }, { "field": "time_preset", "value": "LIFETIME", "operator": "EQUAL", }, ] }' \ -F 'execution_spec={ "execution_type": "PING_ENDPOINT" }' \ -F "access_token=<ACCESS_TOKEN>" \ https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library
Si se usa STATS_CHANGE
como type
de disparador, se activa execution_spec
cuando la lógica AND
del activador y todos los filtros se evalúan al pasar de false
a true
en un determinado time_preset
.
Si las evaluaciones posteriores de la lógica AND
también son ciertas, execution_spec
no se ejecuta. Sin embargo, si la evaluación de la lógica AND
cambia de true
a false
, execution_spec
se ejecuta cuando vuelve a true
.
Para este tipo específico de regla, el activador operator
puede ser GREATER_THAN
, LESS_THAN
, IN_RANGE
o NOT_IN_RANGE
.
Aquí hay un ejemplo de una regla de cambio de las estadísticas. Si un anuncio llega a más de 5.000 personas y supera los 10 USD por compra en los últimos 3 días, páusalo.
curl \ -F 'name=Rule 1' \ -F 'evaluation_spec={ "evaluation_type" : "TRIGGER", "trigger" : { "type": "STATS_CHANGE", "field": "cost_per_purchase_fb", "value": 1000, "operator": "GREATER_THAN", }, "filters" : [ { "field": "entity_type", "value": "AD", "operator": "EQUAL" }, { "field": "time_preset", "value": "LAST_3_DAYS", "operator": "EQUAL" }, { "field": "reach", "value": 5000, "operator": "GREATER_THAN" } ] }' \ -F 'execution_spec={ "execution_type": "PAUSE" }' \ -F "access_token=<ACCESS_TOKEN>" \ https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library
Cuando se usa DELIVERY_INSIGHTS_CHANGE
como type
de activador, la regla se activa cuando todos los filtros definidos en evaluation_spec
se evalúan para comprobar que sean true
, y el activador definido en evaluation_spec
solo cambia para pasar de false
a true
.
En las evaluaciones posteriores, si los filtros y el activador continúan siendo evaluados para comprobar que sean true
, la regla no se vuelve a activar.
Para usar el tipo de ejecución PING_ENDPOINT
, necesitas configurar una suscripción relacionada con tu aplicación a través de webhooks. Configura una URL de devolución de llamadas, una app de Facebook y webhooks para recibir notificaciones de la API de reglas:
Consulta la Guía de webhooks y crea una URL de devolución de llamada que pueda manejar el desafío y la respuesta durante la verificación. La URL de devolución de llamada maneja la estructura de datos que se envía cuando se activa una regla:
{ object: 'application', entry: [{ id: '<APPLICATION_ID>', time: 1468938744, changes: [{ field: 'ads_rules_engine', value: { 'rule_id': 1234, 'object_id': 5678, 'object_type': 'ADSET', 'trigger_type': 'STATS_CHANGE', 'trigger_field': 'COST_PER_LINK_CLICK', 'current_value': '15.8', } }], }], }
El campo current_value
es una cadena con codificación de JSON. Su valor puede ser una cadena entre comillas dobles, un número o una matriz que comienza con [
(corchete izquierdo) y termina con ]
(corchete derecho).
ads_rules_engine
a tu appUna vez que la URL de devolución de llamada maneja el desafío y la respuesta de la verificación, regístrala en tu app cuando se activa una regla:
ad_rules_engine
.Alternativamente, esto se puede hacer mediante la API Graph, utilizando un token de acceso a la app y no un token de acceso del usuario:
curl \ -F "object=application" \ -F "callback_url=<CALLBACK_URL>" \ -F "fields=ads_rules_engine" \ -F "verify_token=<VERIFY_TOKEN>" \ -F "access_token=<APP_ACCESS_TOKEN>" \ "https://graph.facebook.com/<VERSION>/<APP_ID>/subscriptions"
Consulta la referencia de suscripciones para obtener más detalles sobre APP_ID/subscriptions
.