Monitore o estado dos anúncios em tempo real. Uma regra baseada em gatilho é avaliada assim que os dados de insights ou metadados dos objetos do anúncio relevantes são alterados. A latência para alterações em metadados é geralmente de alguns segundos, e a latência para alterações em insights geralmente é dentro de alguns minutos (p99 atual é de cerca de 7,5 minutos).
Para regras baseadas em gatilho, schedule_spec
não é compatível, uma vez que elas são sempre verificadas em tempo real.
As regras baseadas em gatilho só estão disponíveis na API neste local e não estão acessíveis por meio do Gerenciador de Anúncios.
O objeto trigger
define como é feita a avaliação de uma regra. Todos os tipos de gatilho exigem um field
de gatilho, exceto METADATA_CREATION
. Uma regra baseada em gatilho só verifica sua condição quando esse campo é alterado.
Uma regra baseada em gatilho pode ter somente um trigger
. Se houver condições ou restrições em várias métricas, você poderá adicionar as restantes como filters
.
O campo filters
é usado da mesma forma que para regras baseadas em programação. Uma regra baseada em gatilho passa sua avaliação somente quando o trigger
e todos os filters
cumprem com as comparações. Então, um gatilho e um filtro serão intercambiáveis se a mudança em um campo levar à mudança de outro. Por exemplo, se você quiser que uma regra seja disparada quando cost_per_mobile_app_install
> X
AND spent
> Y
, poderá usar cost_per_mobile_app_install
ou spent
como o gatilho, e a outra como um dos filtros, porque esses campos dependem entre si.
O objeto trigger
pertence a evaluation_spec
e segue esta estrutura:
Chaves do objeto de gatilho | Descrição |
---|---|
| O tipo de regra baseada em gatilho. No momento, as opções aceitas são:
|
| O campo subjacente. Não está em uso para |
| O valor do filtro subjacente. Não está em uso para |
| O operador do filtro subjacente. Não está em uso para |
Você pode criar regras de anúncio que são disparadas de quatro maneiras diferentes:
METADATA_CREATION
ou METADATA_UPDATE
STATS_MILESTONE
ou STATS_CHANGE
Esta regra é usada para monitorar quando um objeto de anúncio é criado. Somente type
é obrigatório na especificação de trigger
. Para os filtros, especifique o entity_type
que deseja monitorar.
Veja a seguir um exemplo de uma regra de criação de metadados para monitorar a criação de todos os anúncios que se encaixem em um determinado objetivo. Sempre que um novo anúncio é criado sob uma campanha de anúncios com o objetivo APP_INSTALLS
, um ping é enviado.
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 regra é usada para monitorar quando os metadados de um objeto de anúncio são alterados. Consulte a lista de campos de metadados compatíveis. Na especificação de trigger
, field
é obrigatório, ao passo que value
e operator
são opcionais.
Se você tiver interesse na alteração de um campo, independentemente de qual seja seu valor, basta especificar a opção field
. Veja a seguir um exemplo de envio de uma notificação do Facebook sempre que o orçamento diário de um conjunto de anúncios for alterado.
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"
Se você tiver interesse em somente um subconjunto dos eventos, poderá fornecer as opções operator
e value
para refinar a condição trigger
. Veja a seguir um exemplo para ser notificado quando o orçamento diário de um conjunto de anúncios é alterado e exceder 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"
Com STATS_MILESTONE
como type
, evaluation_spec
será disparado quando field
atingir um múltiplo de value
para os objetos correspondentes às condições na matriz de filters
.
Para esse tipo específico de regra, o operator
de gatilho deve ser EQUAL
, e o filtro time_preset
deve ter um valor de LIFETIME
.
Há um conjunto mais restritivo de campos compatíveis. Qualquer campo não listado abaixo não é compatível como um field
de gatilho, mas ainda pode ser usado como filtro na lista de filters
. Além disso, há valores mínimos obrigatórios para o value
do gatilho, dependendo do field
.
Valores do campo de gatilho compatíveis | 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 |
Veja a seguir um exemplo de uma regra de marco de estatísticas, que envia um ping sempre que alguém faz um comentário na sua publicação:
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
Ao usar STATS_CHANGE
como type
de gatilho, execution_spec
é disparado quando o operador lógico AND
do gatilho e todos os filtros são avaliados de false
para true
em um determinado time_preset
.
Se avaliações posteriores do operador lógico AND
também forem verdadeiras, execution_spec
não é executado. Porém, se a avaliação do operador lógico AND
mudar de true
para false
, execution_spec
será executado quando for revertido para true
.
Para esse tipo específico de regra, o operator
de gatilho pode ser GREATER_THAN
, LESS_THAN
, IN_RANGE
ou NOT_IN_RANGE
.
Veja a seguir um exemplo de regra de alteração de estatísticas. Pause um anúncio sempre que ele tiver alcançado mais de 5.000 pessoas e for superior a US$ 10 por compra nos últimos 3 dias.
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
Ao usar DELIVERY_INSIGHTS_CHANGE
como o type
de gatilho, a regra será disparada quando todos os filtros definidos em evaluation_spec
forem avaliados como true
, e o gatilho definido em evaluation_spec
mudar de false
para true
.
Em avaliações posteriores, se os filtros e o gatilho continuarem sendo avaliados como true
, a regra não será disparada novamente.
Para usar o tipo de execução PING_ENDPOINT
, você precisa configurar uma assinatura para seu app por meio do Webhooks. Configure uma URL de retorno de chamada, um app do Facebook e Webhooks para receber notificações da API de Regras:
Consulte Webhooks da Meta e crie uma URL de retorno de chamada que possa lidar com o desafio e a resposta durante a verificação. A URL de retorno de chamada lida com a estrutura de dados enviada quando uma regra é disparada:
{ 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', } }], }], }
O campo current_value
é uma string codificada por JSON. Seu valor pode ser uma string em aspas duplas, um número, ou uma matriz que começa com [
(colchete esquerdo) e termina com ]
(colchete direito).
ads_rules_engine
ao appAssim que a URL de retorno de chamada lidar com o desafio e a resposta para verificação, registre-a no seu app quando uma regra é disparada:
ad_rules_engine
.Você também pode fazer isso por meio da Graph API, usando um token de acesso do app e não um token de acesso do usuário:
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"
Consulte Subscriptions Reference para obter detalhes sobre APP_ID/subscriptions
.