Introdução
Olá!
Este documento irá lhe guiar pelas melhores práticas de integração do
Prebid para que possa começar a utilizar o bidder
RTB House.
A RTB House oferece um trecho de código para ser
inserido no cabeçalho da página, antes da chamada do Adserver.
Este código gera uma chamada assíncrona que permite a RTB House
identificar o usuário e retornar uma oferta.
Essa oferta, juntamente ao valor do leilão é então enviado para o
Adserver e, a partir daí, campanhas da
RTB House podem ser então inicializadas de acordo com
keywords customizadas
Requisitos
O que você irá receber da RTB House:
- Um identificador único do Publisher
- Amostras de código detalhando como inicializar o adapter da RTB House e como mapear os placements na página
- Códigos de creative opcionais para serem usados no Adserver. Inicialmente, sugerimos o código padrão do Prebid
- Acesso a um Data Studio com estatísticas sobre a integração
O que precisaremos que faça
- Implemente o script do Prebid de forma clara e concisa na página
- Mapeie os placements disponíveis em cada página e use-os para inicializar nosso adapter
- Crie um line item para diferentes valores de bid em seu Adserver
- Implemente as regras de seleção e os creatives
- Esteja em conformidade com o IAB Consent Framework. Você pode consultar a documentação oficial para mais informações e exemplos de plataformas de consentimento certificadas.
Scripts de implementação
Prebid.js - adapters e módulos
Código responsável por inicializar as tags da RTB House que são parte
do bundle 'prebidA.B.C.js', onde A, B e C compõem o número da versão.
Além de carregar a biblioteca do Prebid e seus módulos, o código
também inicializa as filas para processamento de eventos que serão
usadas mais tarde.
O pacote do Prebid.js irá conter todos os bidders e módulos em um
único arquivo JS, e pode ser customizado e baixado em:
URL: http://prebid.org/download.html
Para esse setup em particular, teremos:
Adapters de Bidders:
- RTB House
Adapters de Analytics:
- Nenhum
Módulos:
- Currency
- Consent Management - GDPR
- Consent Management - US Privacy
- User ID: PubCommon ID
Note que a request de carregamento é assíncrona e cacheada no browser
do usuário.
Além da versão do pacote prebid.js, nenhuma mudança no código é
necessária nesta seção.
O próximo passo é mapear todos os adunits disponíveis na página e
atribuir seus códigos.
Nesta seção você verá como um adunit de display simples é configurado.
Parâmetro | Descrição |
---|---|
code | Identificador único que você pode criar e atribuir a um adunit. Usado para definir a query string para o anúncio em questão. Se estiver usando GPT, recomendamos definir um identificador similar para o ID do slot. |
mediaTypes | banner, native ou video |
banner.sizes | Aqui você pode definir os tamanhos aceitos para o adunit. |
bidder | Obrigatório, nome do bidder - "rtbhouse" |
params.region | Obrigatório, tipo: string, região atribuída pelo time de Inventário da RTB House à um publisher específico (-eu, -asia, -us). |
params.publisherId | Obrigatório, tipo: string, ID definido pelo time de Inventário da RTB House. |
params.bidfloor | Opcional, tipo: float, Valor de CPM mínimo na moeda definida (por padrão, USD) |
Detalhes sobre resposta do servidor
Caso a RTB House tenha uma oferta para o usuário, a requisição ira
receber um retorno
HTTP STATUS 200
com um vetor de objetos
bids
conforme descrito a seguir:
Atributo | Tipo | Descrição | Exemplo |
---|---|---|---|
id | String | O adunit enviado na request | ad-unit-0 |
impid | String | O identificador único da impressão | 1958db31f122811 |
price | Float | O CPM para a oferta | 1.58 |
adid | String | o identificador único do creative | l2HjtZ8tLkRPAaeVkRk0 |
adm | String | O iframe do creative |
<iframe
src=\"https://sin.creativecdn.com/imp-delivery?tkn=EdN...>
|
adomain | Lista de Strings | O domínio | ["rtbhouse.com"] |
cid | String | O identificador único do deal | ...z3XR2NmqbMmZl... |
w | Integer | A largura do creative | 300 |
h | Integer | A altura do creative | 250 |
A seguir, um exemplo do objeto:
Caso o usuário não seja elegível a nenhuma campanha da RTB House, a resposta será vazia, com código 204.
Implementação no cabeçalho
Desativando o carregamento automático do adserver
As tags originais do AdManager são similares ao descrito a seguir:
Como queremos esperar a chamada para RTB House antes de chamar o
Adserver, as funções
googletag.pubads().disableInitialLoad()
e
googletag.pubads().enableSingleRequest()
, podem ser
definidas em qualquer lugar do código antes de
googletag.enableServices()
. Vale ressaltar a importancia
de incluir o caminho "/CodigoDaRede/CodigoAdUnit/Label" como primeiro
parâmetro no método .defineSlot
A função de callback é executada assim que o a resposta é recebida e, em seguida, devem ser processar e enviadas na request para o Adserver. Os exemplos a seguir irão utilizar o Google DFP/AdManager como referencia, mas pode ser adaptado para qualquer Adserver que suporte o mecanismo de seleção de campanhas por keywords.
A chamada do adserver deve aguardar a resposta do bidder RTB House, e isso pode ser alcançado pela combinação de duas funções:
-
disableInitialLoad()
: irá previnir o disparo automático do Adserver assim que a página carrega -
googletag.pubads().refresh()
: será usado para finalmente disparar a chamada para o Adserver quando a resposta do Prebid for recebida ou o timeout for alcançado.
Mais detalhes na documentação do DFP.
Enviando as keywords
Primeiro, devemos inicializar os adunits, depois, implementar a função
para inicializar o Adserver. Para isso, podemos usar:
pbjs.setTargetingForGPTAsync &&
pbjs.setTargetingForGPTAsync();
- parte onde incluiremos as keywords da RTB House na chamada do
Adserver
googletag.pubads().refresh();
- parte que irá inicializar a chamada para o Adserver
A chamada para o adserver pode ser implementada na função de callback
que será disparada assim que a resposta da RTB House for recebida (ou
após o timeout). No exemplo anterior usamos a função de nome
initAdserver
para isso.
-
pbjs.requestBids({...})
dispara o request para os bidders externos -
initAdserver
é executado no máximo dentro do período de milissegundos definidos em PREBID_TIMEOUT. -
A função auxiliar
pbjs.setTargetingForGPTAsync()
automaticamente processa a resposta e envia as keywords a nível de placement para o adserver:
Keyword | Tipo | Descrição | Exemplo |
---|---|---|---|
hb_pb | String | A faixa de CPM vencedora | hb_pb=0.40 |
hb_pb_rtbhouse | String | (opcional) A faixa de CPM ofertada pela RTB House | hb_pb_rtbhouse=0.40 |
hb_bidder | String | (opcional) O bidder vencedor | hb_bidder=rtbhouse |
A tabela a seguir apresenta duas maneiras de se configurar keywords:
- A primeira é configurar apenas a keyword hb_pb. Isso irá funcionar em todos os casos.
- A segunda é definir as três keywords (a primeira e as duas opcionais). Dessa maneira o line item irá funcionar apenas com o bidder da RTB House
Módulos do Prebid
Nesta seção módulos adicionais serão descritos. Todos os módulos serão
definidos em
pbjs.setConfig({})
Módulo de currency (moeda)
Esse módulo permite a conversão de múltiplas moedas de diferentes bidders em uma única moeda utilizada pelo Adserver. O módulo também cobre a atualização automática baseada na flutuação das moedas. O seu funcionamento é descrito a seguir:
- O código do Prebid.js que contém o módulo de currency é compilado.
- É definido uma configuração na página explicitando qual moeda está sendo utilizada pelo Adserver e demais especificidades.
- A existência da configuração faz com que o Prebid carregue o conversor de moeda enquanto o leilão é realizado. Alternativamente, os valores de conversão podem ser definidos na página.
- Durante a execução, as respostas são convertiads para moeda do Adserver conforme necessário.
- Valores padrões podem ser definidos caso o arquivo não possa ser carregado.
O módulo de currency pode ser utilizado para converter a moeda entre adserver e bidder. Se nenhum outro script estiver fazendo essas conversões, é altamente recomendável o uso do módulo de currency.
Parâmetro | Tipo | Descrição |
---|---|---|
priceGranularity | Dicionário/String | Define qual granularidade monetária a ser trabalhada no leilão. Valores aceitos são: "low, "med", "high"m "auto", "dense". Descrição detalhada |
currency.adServerCurrency | String | Código do país no padrão de 3 letras ISO 4217. Se o valor estiver presente, o conversor de moeda é ativado. |
currency.granularityMultiplier | Decimal | Quanto escalar os cálculos de granularidade. 1 é o valor padrão. É utilizado por moedas que estão em razões distantes, como por exemplo YEN para USD [110:1] |
currency.defaultRates | Object | Parâmetro opcional que define o valor padrão de conversão a ser usadoo caso o módulo de currency não possa ser carregado. Essa opção é ignorada caso o parâmetro "rates" seja configurado. Examplo de definição: { USD: { PLN: 4 } } |
currency.rates | Object | Esse parâmetro opcional permite que especifique taxas de conversão de moeda usando um objeto JSON. Quando utilizado, o módulo de currency não é carregado. Exemplo: { ‘USD’: { ‘CNY’: 6.8842, ‘GBP’: 0.7798, ‘JPY’: 110.49 } } |
currency.conversionRateFile | URL | Parâmetro opcional com o caminho para um arquivo contendo informações de conversão de moeda. O Prebid.org hospeda um arquivo conforme descrito na próxima seção. |
A seguir você encontra um exemplo de conversão para Google AdManager usando a moeda PLN:
URL: http://prebid.org/dev-docs/modules/currency.htmlMódulo de Consent Management
O módulo de Consent Management foi desenhado para suportar a General
Data Protection Regulation (GDPR/Europa) e a California Consumer
Privacy Act (CCPA/Estados Unidos). Vale notar que a IAB generalizou as
orientações de maneira a cobrir regulamentações futuras, chamando o
conjunto de "US Privacy".
O módulo trabalha com Plataformas de Gestão de Consentimento
(CMPs em inglês) buscando uma string codificada que representa as
escolhas de consentimento do usuário e então repassa para os adapters
consumirem durante o processo de leilão. Para utiliza-lo, é necessário
implantar uma CMP compatível com a especificação IAB 1.1 TCF e
permitir sua interação com usuário para coletar as definições de
consentimento. Nós recomendamos que coloque a implementação da CMP
antes do código do Prebid.js, no cabeçalho da página, de maneira a
garantir que a ferramenta seja carregada antes da execução do Prebid.
Parâmetro | Tipo | Descrição |
---|---|---|
cmpApi | String | Definido por padrão como 'iab' ou 'static' para integrações fora do padrão IAB |
timeout | Integer | Timeout de resposta da CMP, 5000ms por padrão |
allowAuctionWithoutConsent | Boolean | Define o que ocorre em caso de falha na obtenção das informações de consentimento com o CMP. Caso "false" o leilão é cancelado. O exemplo a seguir não é conectado a nenhuma CMP e, portanto, o valor é definido como "true" |
usp.timeout | Integer | O timeout para a política US Privacy. 100ms por padrão. |
Publishers que não estão usando uma CMP em conformidade com a IAB - por favor acesse a URL a seguir:
URL: http://prebid.org/dev-docs/modules/consentManagement.htmlMódulo User ID: PubCommon ID
O módulo de User ID armazena um ID de usuário único em um domínio primário e o torna acessível a todos os adapters. Similar ao IDFA e AAID, o User ID é um UUID simples, leve e auto-contido que pode ser utilizado para melhorar a identificação de usuários, principalmente em browsers iOS e MacOs, e é compatível com ITP (Intelligent Tracking Prevention). Adapters que suportam o Publisher Common ID são capaz de extrair o identificador e enviar para o servidor, permitindo o mapeamento do usuário em diversos dispositivos. Não é necessário nenhuma configuração ou cadastro especial para o PubCommon ID, cabendo a você levar o módulo dem configuração enquanto prepara sua política de privacidade.
Parâmetro | Tipo | Descrição |
---|---|---|
storage | Object | Você pode especificar um storage (seja o local storage do HTML5 ou um cookie) para armazenar o resultado das chamadas que buscam o user ID.Isso não é necessário quando o atributo value é especificado ou o sistema de ID está gerenciando o seu próprio storage. |
storage.type | String | Obrigatório, "cookie" ou "html5" |
storage.name | String | O nome do cookie ou entrada do local storage em que o usuário será armazenado |
storage.expires | Integer | Por quanto tempo o ID será armazenado |
storage.refreshInSeconds | Integer | O tempo (em segundo) que o ID pode ser cacheado no storage antes de verificar por um valor atualizado. Se definido, pode receber qualquer valor menor que o número de dias definido em storage.expires. Por padrão, não é buscado atualizações até que se expire |
value | Object | Use apenas se a página possuir um mecanismo separado para armazenar o ID. Recebe um objeto contendo as informações que serão enviadas aos adapters |
Configuração do AdServer
Configurar um adserver para utilização do Prebid requer 5 passos. São eles:
- Configurar as key-values (chaves-valor)
- Configurar a order (ordem)
- Configurar o primeiro line item (item de linha)
- Configurar o creative (creative)
- Configurar os demais line items (itens de linha)
Nota: para o detalhamento dos passos a seguir consideraremos a versão em Inglês do AdServer Google AdManager.
Key/values
Vá até Inventory > Key-values, clique em
New Key
e defina como a seguir:
- Key name:
hb_pb
ehb_pb_rtbhouse
- Value type: Users will enter targeting values when creating line items or checking inventory. (Dynamic)
Order
Va até Delivery > Orders e clique em
New Order
. Preencha com os dados solicitados para definir
a primeira order da campanha.
Primeiro Line item
Você pode criar o primeiro line item na mesma página ou simplesmente entrando em qualquer order criada. O objetivo é criar um line item para cada faixa de preço diferente. Para melhor performance, recomendamos que crie um a cada centavo.
Nós iremos definir um CPM único para o primeiro line item:
- Selecione o tipo "Display" (Ad type)
-
Use um nome auto-explicativo para o campo "Name", como
prebid_rtbhouse_1.00
- O "Line item type" dependerá do seu modelo de negócio, mas recomendamos utilizar "Standard".
- No campo "Priority", selecione a prioridade negociada com a RTB House. Neste exemplo utilizaremos "Standard", mas vale apontar que o Prebid recomenda "Price Priority".
-
Em "Expected creatives", inclua todos os formatos disponíveis em sua
página, exemplo:
728x90
,300x250
-
Na seção Labels, selecione
Allow same advertiser exception
- Para "Start time", selecione:
Immediately
- Para "End time":
Unlimited
-
Para "Quantity":
Ilimitada - insira um valor bastante alto.
-
Para "Rate": Inclua o CPM. No exemplo inicial usamos
0.01
PLN, mas a moeda recomendada é USD.
- Para "Display Creatives": Selecione
One or More
. - Para "Rotate Creatives": Selecione
Evenly
Por fim, selecione o inventário para a campanha e inclua os seguintes critérios de ativação:
- Em "Type": Selecione
Key-values
- Em "Select a key": Escolha
hb_pb
-
EM "Value": Escolha o operador
is
e insira o valor0.01
Finalize clicando em save
e siga os passos a seguir para
definição do creative:
Creatives
Por favor, observe a seguir um exemplo de creative:
Para criar um novo creative, entre em Delivery
>
Creatives
> e clique em Add creative
.
Em seguida, digite e selecione o mesmo nome de anunciante para
adicionar o creative (no exemplo, Prebid (Anunciante)). Clique em
"Select" e defina:
- Type:
Third-party
- Name: Um nome que permita fácil identificação
-
Target ad unit size:
Os tamanhos que deseja trabalhar, ou 1x1 como padrão para sobescrever posteriormente e trabalhar com todos tamanhos
-
Code type and snippet: Selecione
standard
e cole o código de exemplo
Clique em Save
.
Volte ao primeiro line item, clique na aba
Creatives
e em seguida
Add creative - Existing creative
.
Selecione o creative que acabou de criar.
O último passo é duplicar o creative para que sua quantidade equivalha ao número de ad units únicos que você tem na pagina. Exemplo: Caso uma página possua 5 posições de anúncio, você deve possuir ao menos 5 creatives no seu line item.
A maneira mais simples de alcançar o resultado é selecionar um ou mais
creatives e clicar em Copy creative
, repetindo até
atingir o mínimo desejado.
Demais line items
Agora que você tem o primeiro line item configurado, você pode
duplica-lo e reutilizar os creatives existentes. Para fazer isso, vá a
página de line items, selecione o criado e clique no botão
Copy and share creatives
que irá aparecer na barra azul.
Repita para as diferentes faixas de preço que possuir.
Por favor não esqueça de atualizar:
- O nome do line item
- O CPM
- A key-value correspondente ao CPM
Você pode alterar esses valores diretamente pela página que lista os line items, clicando no icone ao canto de cada campo:
- Nome do line item:
- CPM
- Inventory and keyword targeting
- Start time Por favor, verifique esse valor uma vez que o padrão é o dia seguinte!
Quando terminar, selecione todos os line items e clique em
Resume
.
Para acessar o guia oficial do prebid: URL: http://prebid.org/adops/step-by-step.html
Criação automática de line items
A RTB House pode auxiliar com a criação automática de todos os line
items e creatives usando nossa Ferramenta de Criação de Line items.
Por favor entre em contato com nosso time Inventory Support
inventory_support@rtbhouse.com
para entender como prosseguir.
Anúncios Native
Placement de native
Para ativar a demanda de Native, você deve primeiro declarar o ad unit apropriado. Um pequeno exemplo demostrando como defini-lo é demonstrado a seguir:
Todos os outros parâmetros que podem ser utilizados e integrados ao
native podem ser encontrados em:
URL: http://prebid.org/dev-docs/show-native-ads.html
Objeto native
A seguir, você encontra um exemplo de resposta contendo um native:
Quando uma demanda estiver disponível, a RTB House irá retornar um objeto native com a seguinte estrutura:
Objeto Native
Atributo | Tipo | Descrição |
---|---|---|
product | Vetor de objetos produto | Lista de assets do produto |
advertiser | Objeto Advertiser | Inclui o nome e logo do anunciante |
impression_pixels | Vetor de pixels de impressão | Uma lista com pixels de impressão |
Objeto Product
Atributo | Tipo | Descrição |
---|---|---|
title | String | Título do produto |
description | String | Descriçaõ do produto |
click_url | String | Landing page do produto |
call_to_action | String | Chamada do produto |
image | Objeto Image | Imagem do produto (LarguraxAltura em px) |
Objeto Image
Atributo | Tipo | Descrição |
---|---|---|
url | String | URL da imagem |
height | Integer | Altura da imagem |
width | Integer | Largura da imagem |
Objeto Advertiser
Atributo | Tipo | Descrição |
---|---|---|
description | String | Nome do anunciante |
domain | String | Website do anunciante |
logo | Objeto Image | Logo do anunciante (LarguraxAltura px) |
Objeto Privacy
Atributo | Tipo | Descrição |
---|---|---|
optout_click_url | String | URL da página de Opt-out |
optout_image_url | String | URL do ícone de Adchoices |
Objeto Pixels de Impressão
Atributo | Tipo | Descrição |
---|---|---|
url | String | URL de disparo do pixel de impressão |
Integração no AdServer
As campanhas de native podem ser configuradas da mesma forma que anúncios padrão, apenas mudando a definição de tamanhos no ad unit para 1x1 e "fluid". A seguir você pode conferir um exemplo da estrutura de um criativo native:
Orientações gerais para natives RTB House:
- Sempre implemente o link para a página de opt-out
- Exiba ao menos uma informação do anunciante (domínio, nome)
- Exiba ao menos uma recomendação de produto
- Use a URL de clique da RTB House
- Todo pixel de impressão deve ser chamado assim que o anúncio for entregue.
Exemplos completos
Você pode encontrar um exemplo funcional de banners display e native
nesta página.
Observe o código fonte proximo ao texto:
<!-- RTB House bidder -->
Demais exemplos podem ser encontrados em:
Caso deseje incluir A RTB House no seu ads.txt, por
favor use a linha:
RTBHOUSE.COM, {PUBLISHER ID}, DIRECT
Substitua {PUBLISHER
ID} pelo identificador entregue pela RTB House