Exemplos de atribuição de várias redes

A maioria dos anunciantes trabalha com várias redes de publicidade diferentes para veicular anúncios em apps de editores. Se as redes de publicidade registrarem as próprias origens de atribuição e acionadores com a API, vão receber relatórios de resumo e eventos atribuídos a si.

No entanto, os anunciantes que quiserem usar um terceiro para realizar a atribuição em várias redes (XNA, na sigla em inglês) para determinar um único anúncio vencedor para uma determinada conversão podem continuar fazendo isso usando as técnicas abaixo:

  • Configurar um servidor interno para registrar eventos acionadores e receber relatórios de atribuição da API
  • Continuar usando um parceiro de medição para dispositivos móveis

Independente da técnica que um anunciante escolha usar, a API Attribution Reporting oferece suporte a vários recursos diferentes que permitem que um terceiro personalize a lógica XNA em nome de um anunciante:

  • Um terceiro pode fazer a atribuição com a API com ou sem redirecionamentos das redes de publicidade.
  • As chaves de prioridade, filtros e eliminação de duplicação podem oferecer mais personalização de atribuição com base nas dimensões da origem e do acionador.
  • As janelas de atribuição pós-instalação permitem que as origens que geraram uma instalação continuem recebendo créditos para futuros eventos de conversão no aplicativo.

O modelo de atribuição que as adtechs usam para eliminar a duplicação em várias redes e escolher fontes vencedoras pode ter níveis variados de complexidade, dependendo de como esses recursos da API são usados.

Os exemplos abaixo ilustram cenários de exemplo de como esses recursos podem ser usados. Também mostram como diferentes configurações afetam qual origem de atribuição receberá crédito por um determinado evento acionador.

Processo

A lista a seguir descreve as etapas do processo XNA. Para simplificar, as etapas listadas aqui pressupõem um modelo em que o anunciante usa uma adtech para veicular anúncios e um MMP para medição de conversões. No entanto, o design da API é flexível. A funcionalidade não difere entre diferentes tipos de adtechs, nem exige o uso delas.

  1. Registro da origem: o usuário visualiza ou clica em um anúncio, e a adtech registra essas origens com a API. A adtech para veicular anúncios também pode redirecionar para outras adtechs que podem registrar origens diretamente com a API ou ativar a atribuição de várias redes sem redirecionamentos.
  2. Registro do acionador: o usuário realiza uma ação associada à conversão, como ao acessar, comprar ou adicionar um item ao carrinho pela primeira vez, em que um MMP registra um acionador com a API. O MMP também pode redirecionar para outras adtechs que podem registrar acionadores diretamente com a API. Se um MMP precisar ativar a atribuição de várias redes sem redirecionamentos, a configuração de atribuição precisará ser especificada durante o registro do acionador.
  3. Atribuição: se a configuração de atribuição for especificada durante o registro do acionador, as origens derivadas serão geradas em nome do MMP. Cada acionador tenta ser combinado com uma origem qualificada registrada diretamente pelo MMP ou com uma origem derivada qualificada gerada em nome do MMP usando as fontes da adtech de veiculação. As origens restantes, que não receberam a atribuição, são descartadas e não estão mais qualificadas para ganhar a atribuição em conversões futuras. Isso também pode ser chamado de "perdeu uma vez, perdeu sempre" em outras partes da documentação.
    1. Quando uma origem derivada perde a atribuição, a API não gera origens derivadas futuras com base na fonte original quando eventos de conversão futuros são registrados pelo MMP. As adtechs que veiculam anúncios e outros MMPs ainda podem usar a fonte original para atribuições futuras. Isso é descrito em detalhes no Cenário 6.
  4. Geração de relatórios: a atribuição leva à geração de relatórios agregados ou de eventos. Somente relatórios agregados são gerados para origens derivadas.
  5. Exibição de relatórios: os relatórios gerados são programados para exibição.

Cenário 1: atribuição de várias redes com redirecionamentos

Um anunciante está trabalhando com duas adtechs de veiculação e um MMP. Quando os anúncios veiculados pelas adtechs são clicados, são redirecionados para o MMP no registro da origem. Quando um usuário faz uma conversão no app, o MMP é redirecionado para as adtechs no registro do acionador.

O MMP vai receber um relatório com as duplicações eliminadas em várias redes, e cada adtech que veicular vai receber relatórios autoatribuídos.

Cronograma de registros

Em t0, o usuário clica em um anúncio veiculado pela adtech1, que registra uma Source1 de origem junto com a Source2 do redirecionamento da mmp-ad-tech:

  "Attribution-Reporting-Register-Source": {
    "source_event_id": "34532",
    "web_destination": "https://destination.example.com",
    "priority": "10",
    "expiry": "172800",
    "aggregation_keys": {
      "campaignCounts": "0x1"
    }
  },
  "Attribution-Reporting-Redirect": [
    "https://www.mmp-ad-tech.com/source2"
  ]
// Registered by mmp-ad-tech via redirects
  "Attribution-Reporting-Register-Source": {
    "source_event_id": "788324",
    "web_destination": "https://destination.example.com",
    "priority": "30",
    "expiry": "172800",
    "aggregation_keys": {
      "campaignCounts": "0x2",
      "geoValue": "0x102"
    }
  }

Em t1, o usuário clica em um anúncio veiculado pela adtech2 para registrar a Source3 e redirecionar para a mmp-ad-tech, ou seja, Source4:

  "Attribution-Reporting-Register-Source": {
    "source_event_id": "6574435",
    "web_destination": "https://destination.example.com",
    "priority": "10",
    "expiry": "172800",
    "aggregation_keys": {
      "campaignCounts": "0x3"
    }

  },
  "Attribution-Reporting-Redirect": [
    "https://www.mmp-ad-tech.com/source"
  ]
// Registered by mmp-ad-tech via redirects
  "Attribution-Reporting-Register-Source": {
    "source_event_id": "4532343",
    "web_destination": "https://destination.example.com",
    "priority": "20",
    "expiry": "172800",
    "aggregation_keys": {
      "campaignCounts": "0x4"
    }
  }

Em t2, a ação ou conversão do usuário no app do anunciante resulta em um registro de acionador pelo mmp-ad-tech (Trigger1), que também redireciona para adtech1 (Trigger2) e adtech2 (Trigger3). :

indefinido

Resultado

As origens registradas de mmp-ad-tech Source2 e Source4 competem na atribuição pelo Trigger1 do acionador registrado em mmp-ad-tech. A Source2 vence sobre a Source4 por ter prioridade maior. O Trigger2 da adtech1 é atribuído à Source1 pela adtech1, e o Trigger3 da adtech2 é atribuído à Source3 pela adtech2.

Origens concorrentes para

Campos

Source1

Source2

Source3

Source4

Origem que registra a adtech

adtech1

mmp-ad-tech

adtech2

mmp-ad-tech

source_event_id

34532

788324

6574435

4532343

destino

https://destination.example.com

https://destination.example.com

https://destination.example.com

https://destination.example.com

prioridade

10

30

10

20

Acionadores registrados
Resultado da atribuição

O Trigger1 atribui ao Source2, Trigger2 ao Source1 e Trigger3 ao Source3.

Origens ignoradas após atribuição

Source4: não vai competir por atribuição no futuro.

Relatórios de eventos

URL do relatório: https://www.mmp-ad-tech.com/.well-known/attribution-reporting/report-event-attribution

  {
    "attribution_destination": "https://destination.example.com",
    "scheduled_report_time": "800176400",
    "source_event_id": "788324",
    "trigger_data": "1",
    "source_type": "navigation",
    "randomized_trigger_rate": 0.0024263
  }

URL do relatório: https://www.ad-tech1.com/.well-known/attribution-reporting/report-event-attribution

  {
    "attribution_destination": "https://destination.example.com",
    "scheduled_report_time": "800176400",
    "source_event_id": "34532",
    "trigger_data": "2",
    "source_type": "navigation",
    "randomized_trigger_rate": 0.0024263
  }

URL do relatório: https://www.ad-tech2.com/.well-known/attribution-reporting/report-event-attribution

  {
    "attribution_destination": "https://destination.example.com",
    "scheduled_report_time": "800176400",
    "source_event_id": "6574435",
    "trigger_data": "3",
    "source_type": "navigation",
    "randomized_trigger_rate": 0.0024263
  }

Agregar relatórios

URL do relatório: https://www.mmp-ad-tech.com/.well-known/attribution-reporting/report-aggregate-attribution

  {
    "attribution_destination": "https://destination.example.com",
    "histograms": [
      {
        "key": "0x104",
        "value": 11
      }
    ]
  }

URL do relatório: https://www.ad-tech1.com/.well-known/attribution-reporting/report-aggregate-attribution

  {
    "attribution_destination": "https://destination.example.com",
    "histograms": [
      {
        "key": "0x201",
        "value": 21
      }
    ]
  }

URL do relatório: https://www.ad-tech2.com/.well-known/attribution-reporting/report-aggregate-attribution

  {
    "attribution_destination": "https://destination.example.com",
    "histograms": [
      {
        "key": "0x303",
        "value": 31
      }
    ]
  }

Cenário 2: atribuição de várias redes sem redirecionamentos

Um anunciante está trabalhando com duas adtechs de veiculação e um MMP. Um usuário clica em um anúncio da primeira adtech, que é redirecionado ao MMP no registro da origem. Quando o usuário clica em um anúncio da segunda adtech de veiculação, ela não redireciona, optando por compartilhar antecipadamente um subconjunto das chaves de agregação com o MMP.

Em seguida, o usuário faz a conversão no app em que o MMP registra o acionador, mas não redireciona para nenhuma adtech. A adtech sem redirecionamento ganha a atribuição de último toque. Somente o MMP vai receber um relatório de resumo com duplicação eliminada em várias redes que inclua essa conversão.

Cronograma de registros

Em t0, o usuário clica em um anúncio, resultando em um registro da Source1 pela adtech1 e da Source2 pela mmp-ad-tech pelo redirecionamento da adtech1:

  "Attribution-Reporting-Register-Source": {
    "source_event_id": "234543",
    "web_destination": "https://destination.example.com",
    "priority": "20",
    "expiry": "172801",
    "aggregation_keys": {
      "campaignCounts": "0x159"
    }
  },
  "Attribution-Reporting-Redirect": [
    "http://www.mmp-ad-tech.com"
  ]
 // Registered by mmp-ad-tech via redirect
 "Attribution-Reporting-Register-Source": {
    "source_event_id": "45453",
    "web_destination": "https://destination.example.com",
    "priority": "100",
    "expiry": "172801",
    "aggregation_keys": {
      "campaignCounts": "0x159",
      "geoValue": "0x5",
    }
  }

Em t1, o usuário clica em outro anúncio, resultando na Source3 da adtech2, que compartilha chaves de agregação:

 // Registered by ad-tech2
  "Attribution-Reporting-Register-Source": {
    "source_event_id": "978",
    "web_destination": "https://destination.example.com",
    "priority": "20",
    "expiry": "172801",
    "aggregation_keys": {
      "campaignCounts": "0x159",
      "geoValue": "0x5"
    },
    "shared_aggregation_keys": [
      "campaignCounts"
    ]
  }

Em t2, a ação/conversão do usuário gera o registro do acionador pela mmp-ad-tech, que contém a configuração de atribuição para a adtech2:

  "Attribution-Reporting-Register-Trigger": {
    "event_trigger_data": [
      {
        "trigger_data": "2",
        "priority": "101"
      }
    ],
    "aggregatable_trigger_data": [
      {
        "key_piece": "0x400",
        "source_keys": [
          "campaignCounts"
        ],
        "x_network_data": {
          "key_offset": 10
        }
      }
    ],
    "aggregatable_values": {
      "campaignCounts": 32768
    },
    "attribution_config": [
      {
        "source_network": "enrollment-id-ad-tech-2",
        "source_priority_range": {
          "start": 1,
          "end": 1000
        },
        "priority": "200",
        "expiry": "172800"
      }
    ],
    "x_network_key_mapping": {
      "enrollment-id-ad-tech-2": "0x4"
    }
  }

Resultado

A Source2 combina o registro e o destino ao acionador para se tornar uma origem concorrente de atribuição. Além disso, durante o registro do acionador, uma configuração de atribuição foi especificada para a adtech2 e a Source3 usando as chaves de agregação de compartilhamento da adtech2. Isso permite que uma origem derivada, a Source3', seja gerada como uma origem concorrente para atribuição.

Origens concorrentes

Campos

Source2

Source3'

Fonte original que registra a adtech

mmp-ad-tech

adtech2

source_event_id

45453

978

prioridade

100

200

Acionadores registrados

Trigger1 da mmp-ad-tech.

Resultado da atribuição

O Trigger1 é atribuído à Source3' porque a Source3' tem maior prioridade que a Source2.

Origens ignoradas após atribuição

Source2

Relatórios de eventos

Nenhum: os relatórios de eventos não são gerados para origens derivadas.

Agregar relatórios

A origem pai de Source3', ou seja, Source3, compartilha apenas campaignCounts. A parte principal do acionador é calculada da seguinte forma:

(key_piece value) | ((x_network_key_mapping entry) << offset)
0x400 | (0x4 << 10) = 0x1400

Por fim, a chave resultante é gerada pela chave de acionador OR (0x1400) com a chave de origem (0x159), ou seja, 0x1559.

URL do relatório: http://www.mmp-ad-tech.com/.well-known/attribution-reporting/report-aggregate-attribution

{
  "attribution_destination": "https://destination.example.com",
  "histograms": [
    {
     "key": "0x1559",
      "value": 32768
    }
  ]
}

Cenário 3: a origem registrada do MMP e o candidato principal da origem derivada na mesma cadeia de registro

Um anunciante está trabalhando com duas adtechs de veiculação e um MMP. Um usuário clica em um anúncio da primeira adtech de veiculação, que não redireciona o registro da origem, mas compartilha chaves de agregação com o MMP. O usuário clica em um anúncio da segunda adtech de veiculação, que redireciona para o MMP no registro da origem e compartilha as chaves de agregação com o MMP.

Cronograma de registros

Em t0, o usuário clica em um anúncio veiculado pela adtech1, que inicia o registro da Source1:

 "Attribution-Reporting-Register-Source": {
    "source_event_id": "52343",
    "web_destination": "https://destination.example.com",
    "priority": "20",
    "expiry": "172800",
    "aggregation_keys": {
     "campaignCounts": "0x159",
     "geoValue": "0x5"
   },
   "shared_aggregation_keys": [
     "campaignCounts",
     "geoValue"
   ]
 }

Em t1, cadeia de registro 2, a adtech2 registra a Source2 e redireciona para o registro de uma origem do MMP, a Source3:

    "source_event_id": "234456",
    "web_destination": "https://destination.example.com",
    "priority": "20",
    "expiry": "172801",
    "aggregation_keys": {
      "campaignCounts": "0x159"
    },
    "shared_aggregation_keys": [
      "campaignCounts"
    ]
  },
  "Attribution-Reporting-Redirect": [
    "http://www.mmp-ad-tech.com"
  ]
  "Attribution-Reporting-Register-Source": {
    "source_event_id": "4234",
    "web_destination": "https://destination.example.com",
    "priority": "100",
    "expiry": "172800",
    "aggregation_keys": {
      "campaignCounts": "0x159"
    }
  }

Em t2, o registro do acionador tem a atribuição configurada para gerar origens derivadas da adtech1 e da adtech2:

  "Attribution-Reporting-Register-Trigger": {
    "event_trigger_data": [
      {
        "trigger_data": "2",
        "priority": "101"
      }
    ],
    "aggregatable_trigger_data": [
      {
        "key_piece": "0x400",
        "source_keys": [
          "campaignCounts"
        ],
        "x_network_data" : {
          "key_offset" : 10
        }
      }
    ],
    "aggregatable_values": {
      "campaignCounts": 32768,
      "geoValue": 1664
    },
    "attribution_config": [
      {
        "source_network": "enrollment-id-ad-tech-1",
        "source_priority_range": {
          "start": 1,
          "end": 1000
        },
        "priority": "20",
        "expiry": "172800"
      },
      {
        "source_network": "enrollment-id-ad-tech-2",
        "source_priority_range": {
          "start": 1,
          "end": 1000
        },
        "priority": "20",
        "expiry": "172800"
      }
    ],
    "x_network_key_mapping" : {
      "enrollment-id-ad-tech-1" : "0x2",
      "enrollment-id-ad-tech-2" : "0x4"
    }
  }

O resultado é que a origem registrada no MMP na segunda cadeia de registro ganha a atribuição. O relatório agregado resultante será semelhante a este:

Resultado

A origem derivada de Source2 (com "source_event_id": "234456") não participa da atribuição porque a mesma cadeia de registro também tem uma origem registrada em mmp-ad-tech.

Origens concorrentes

Campos

Source1'

Source3

Fonte original que registra a adtech

adtech1

mmp-ad-tech

source_event_id

52343

4234

prioridade

20

100

Acionadores registrados

Trigger1 da mmp-ad-tech.

Resultado da atribuição

O Trigger1 é atribuído à Source3 porque a Source3 tem maior prioridade que a Source1'.

Origens ignoradas após a atribuição

Source1': a Source1 não será mais considerada para criar uma origem derivada para mmp-ad-tech.

Relatórios de eventos

URL do relatório: https://www.ad-tech1.com/.well-known/attribution-reporting/report-event-attribution

  {
    "attribution_destination": "https://destination.example.com",
    "scheduled_report_time": "800176400",
    "source_event_id": "4234",
    "trigger_data": "2",
    "source_type": "navigation",
    "randomized_trigger_rate": 0.0024263
  }
Agregar relatórios

URL do relatório: http://www.mmp-ad-tech.com/.well-known/attribution-reporting/report-aggregate-attribution

{
  "report_url": "http://www.mmp-example.com",
  "payload": {
    "attribution_destination": "https://destination.example.com",
    "histograms": [
      {
        "key": "0x559"
        "value": 32768
      }
    ]
  }
}

Cenário 4: atribuição de várias redes sem redirecionamentos com critérios na seleção da origem

Um anunciante está trabalhando com quatro adtechs de veiculação e um MMP. Um usuário clica no anúncio de uma adtech de veiculação e visualiza os anúncios das outras três. Quando um usuário faz uma conversão no app do anunciante, o MMP registra um acionador e especifica de quais origens registradas de adtechs serão criadas origens derivadas, com base nos seguintes filtros:

  1. priority_range: escolha as origens que têm prioridade no intervalo fornecido
  2. expiry: escolha as origens com expiração posterior à duração especificada
  3. source_filters: escolha as origens cujos filter_data correspondem aos source_filters especificados
  4. source_not_filters: escolha origens com "not_filters" que correspondem aos "source_not_filters" especificados

Quando as origens derivadas são geradas com base nos critérios, elas podem participar da atribuição.

Cronograma de registro

Em t0, um clique do usuário faz com que a adtech1 registre uma Source1 de origem, que associa source_type como navegação a essa origem registrada:

  "Attribution-Reporting-Register-Source": {
    "source_event_id": "87456",
    "web_destination": "https://destination.example.com",
    "priority": "20",
    "expiry": "172801",
    "filter_data": {
      "filter1": [
        "does_not_matter"
      ],
      "filter2": [
        "non-match"
      ]
    },
    "aggregation_keys": {
      "campaignCounts": "0x119",
      "geoValue": "0x5"
    },
    "shared_aggregation_keys": [
      "campaignCounts",
      "geoValue"
    ]
  }

Em t1, o usuário visualiza o anúncio, fazendo com que a adtech2 registre uma Source2 de origem, que associa source_type como evento a essa origem registrada:

  "Attribution-Reporting-Register-Source": {
    "source_event_id": "9078",
    "web_destination": "https://destination.example.com",
    "priority": "2000",
    "expiry": "172801",
    "filter_data": {
      "filter1": [
        "does_not_matter"
      ],
      "filter2": [
        "match"
      ]
    },
    "aggregation_keys": {
      "campaignCounts": "0x129",
      "geoValue": "0x5"
    },
    "shared_aggregation_keys": [
      "campaignCounts",
      "geoValue"
    ]
  }

Em t2, a visualização do usuário faz com que a adtech3 registre uma Source3 de origem, que associa source_type como evento a essa origem registrada:

  "Attribution-Reporting-Register-Source": {
    "source_event_id": "2413",
    "web_destination": "https://destination.example.com",
    "priority": "20",
    "filter_data": {
      "filter1": [
        "non-match"
      ],
      "filter2": [
        "non-match"
      ]
    },
    "aggregation_keys": {
      "campaignCounts": "0x159",
      "geoValue": "0x5"
    },
    "shared_aggregation_keys": [
      "campaignCounts",
      "geoValue"
    ]
  }

Em t3, a visualização do usuário faz com que a adtech4 registre uma Source4 de origem, que associa source_type como evento a essa origem registrada:

  "Attribution-Reporting-Register-Source": {
    "source_event_id": "7567",
    "web_destination": "https://destination.example.com",
    "priority": "20",
    "filter_data": {
      "filter1": [
        "match"
      ],
      "filter2": [
        "match"
      ]
    },
    "aggregation_keys": {
      "campaignCounts": "0x169",
      "geoValue": "0x5"
    },
    "shared_aggregation_keys": [
      "campaignCounts",
      "geoValue"
    ]
  }

Em t4, a conversão do usuário faz com que a mmp-ad-tech registre um acionador com a configuração de atribuição para todas as outras origens registradas dessas adtechs mencionadas acima:

  "Attribution-Reporting-Register-Trigger": {
    "event_trigger_data": [
      {
        "trigger_data": "2",
        "priority": "100"
      }
    ],
    "aggregatable_trigger_data": [
      {
        "key_piece": "0x400",
        "source_keys": [
          "campaignCounts"
        ]
      }
    ],
    "aggregatable_values": {
      "campaignCounts": 32768,
      "geoValue": 1664
    },
    "attribution_config": [
      {
        "source_network": "enrollment-id-ad-tech-1",
        "source_priority_range": {
          "start": 1,
          "end": 100
        },
        "source_filters": {
          "source_type": [
            "event"
          ]
        },
        "priority": "100",
        "expiry": "172801"
      },
      {
        "source_network": "enrollment-id-ad-tech-2",
        "source_priority_range": {
          "start": 1,
          "end": 1000
        },
        "source_filters": {
          "source_type": [
            "navigation"
          ]
        },
        "priority": "100",
        "expiry": "172801"
      },
      {
        "source_network": "enrollment-id-ad-tech-3",
        "source_priority_range": {
          "start": 1,
          "end": 1000
        },
        "source_filters": {
          "source_type": [
            "navigation"
          ],
          "filter1": [
            "match"
          ],
          "filter2": [
            "match"
          ]
        },
        "priority": "50",
        "expiry": "172801"
      },
      {
        "source_network": "enrollment-id-ad-tech-4",
        "source_priority_range": {
          "start": 1,
          "end": 1000
        },
        "source_filters": {
          "source_type": [
            "navigation"
          ],
          "filter1": [
            "match"
          ],
          "filter2": [
            "match"
          ]
        },
        "priority": "30",
        "expiry": "172801"
      }
    ],
    "x_network_key_mapping": {
      "enrollment-id-ad-tech-1": "0x1",
      "enrollment-id-ad-tech-2": "0x2",
      "enrollment-id-ad-tech-3": "0x3",
      "enrollment-id-ad-tech-4": "0x4"
    }
  }

Resultado

As seguintes origens não são consideradas qualificadas para gerar origens derivadas devido a critérios não correspondentes:

  1. A Source1 não atende ao filtro "source_type":"event" na configuração de atribuição da adtech1
  2. A Source2 tem prioridade definida como 2.000, que está fora do filtro de intervalo de prioridade da adtech2 (1.1000)
  3. A Source3 não corresponde ao valor de "filter2"
Origens concorrentes

Campos

Source4'

Fonte original que registra a adtech

adtech4

source_event_id

7567

destino

https://destination.example.com

prioridade

30

validade

Tempo de registro + 2 dias

Acionadores registrados

Trigger1 da mmp-ad-tech.

Resultado da atribuição

O Trigger1 é atribuído à Source4' porque é a única origem qualificada para atribuição

Origens ignoradas após a atribuição

Nenhum

Relatórios de eventos

Nenhum: os relatórios de eventos não são gerados para origens derivadas.

Agregar relatórios

URL do relatório: http://www.mmp-ad-tech.com

{
  "attribution_destination": "https://example.com",
  "histograms": [
    {
      "key": "0x56d",
      "value": 32768
    },
    {
      "key": "0x5",
      "value": 1664
    }
  ]
}

Cenário 5: atribuição pós-instalação

Um anunciante está trabalhando com duas adtechs de veiculação e um MMP. Um usuário clica em um anúncio da primeira adtech e instala o app do anunciante. Durante a atribuição das conversões pós-instalação, a origem derivada com atribuição de instalação prevalece sobre outras origens, mesmo que elas tenham prioridades maiores.

Cronograma de registro

Em t0, a interação do usuário faz com que a adtech1 registre a Source1:

  "Attribution-Reporting-Register-Source": {
    "source_event_id": "3645",
    "destination": "android-app://com.example.app",
    "priority": "20",
    "expiry": "172801",
    "install_attribution_window": "86400",
    "post_install_exclusivity_window": "864000",
    "aggregation_keys": {
      "campaignCounts": "0x119",
      "geoValue": "0x5"
    },
    "shared_aggregation_keys": [
      "campaignCounts",
      "geoValue"
    ]
  }

Em t1, o usuário instala o app com.example.app no dispositivo.

Em t2, a interação do usuário faz com que a adtech2 registre a Source2:

  "Attribution-Reporting-Register-Source": {
    "source_event_id": "345789",
    "destination": "android-app://com.example.app",
    "priority": "100",
    "aggregation_keys": {
      "campaignCounts": "0x159",
      "geoValue": "0x5"
    },
    "shared_aggregation_keys": [
      "campaignCounts",
      "geoValue"
    ]
  }

Em t3, um acionador é registrado pela mmp-ad-tech com configurações de atribuição para adtech1 e adtech2:

  "Attribution-Reporting-Register-Trigger": {
    "event_trigger_data": [
      {
        "trigger_data": "2",
        "priority": "100"
      }
    ],
    "aggregatable_trigger_data": [
      {
        "key_piece": "0x400",
        "source_keys": [
          "campaignCounts"
        ]
      }
    ],
    "aggregatable_values": {
      "campaignCounts": 32768,
      "geoValue": 1664
    },
    "attribution_config": [
      {
        "source_network": "enrollment-id-ad-tech-1",
        "priority": "10",
        "expiry": "172801",
        "post_install_exclusivity_window": "172800"
      },
      {
        "source_network": "enrollment-id-ad-tech-2",
        "priority": "20",
        "expiry": "172801"
      }
    ],
    "x_network_key_mapping": {
      "enrollment-id-ad-tech-1": "0x1",
      "enrollment-id-ad-tech-2": "0x3"
    }
  }

Resultado

Foram geradas origens derivadas de Source1 e Source2, ou seja, Source1' e Source2', respectivamente, que competem pela atribuição.

Origens concorrentes

Campos

Source1'

Source2'

Fonte original que registra a adtech

adtech1

adtech2

source_event_id

3645

345789

destino

android-app://com.example.app

android-app://com.example.app

prioridade

10

20

Instalação do app Drove

sim

não

Acionadores registrados

Trigger1 da mmp-ad-tech.

Resultado da atribuição

O Trigger1 é atribuído à Source1' porque gerou a instalação do app de destino. Observe que a Source2' tinha uma prioridade maior.

Origens ignoradas após a atribuição

Source2': as origens derivadas não serão consideradas na atribuição de acionadores registrados pela mmp-ad-tech.

Relatórios de eventos

Nenhum: os relatórios de eventos não são gerados para origens derivadas.

Agregar relatórios

URL do relatório: http://www.mmp-ad-tech.com/.well-known/attribution-reporting/report-aggregate-attribution

{
  "attribution_destination": "android-app://com.example.app",
  "histograms": [
    {
      "key": "0x519",
      "value": 32768
    },
    {
      "key": "0x5",
      "value": 1664
    }
  ]
}

Cenário 6: perdeu uma vez, perdeu sempre

Se a adtech1 tiver uma origem derivada que participou da atribuição do acionador da mmp-adtech e perdeu a atribuição, ela não será usada para criar uma origem derivada para os acionadores da mmp-ad-tech depois disso. Confira um exemplo de linha do tempo:

  • Em t0, a Source1 da adtech1 está registrada com "priority": "10".
  • Em t1, a Source2 da adtech2 é registrada com "priority": "20".
  • Em t2, o Trigger1 da mmp-ad-tech é registrado com as configurações de atribuição da adtech1 e da adtech2.
  • Em t3, a atribuição para o Trigger1 ocorre quando a origem derivada da adtech2 ganha a atribuição, e a origem da adtech1 é ignorada.
  • Em t4, a Source3 da ad-tech3 está registrada com "priority": "5".
  • Em t5, o Trigger2 da mmp-ad-tech é registrado com as configurações da adtech1 e da adtech3.
  • Em t6, a atribuição para o Trigger2 ocorre, em que a origem derivada da Source3 (Source3') ganha a atribuição.

Explicação do resultado

A origem derivada da adtech1 perdeu a atribuição para o Trigger1. Por isso, ela não foi usada para criar outra origem derivada para a atribuição do Trigger2. Se não tivesse perdido antes em t3, teria ganhado a origem da adtech3 por ter uma prioridade maior.