> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topsort.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GAM Demand Mediation

> Transforme inventário não vendido em receita com configuração rápida

export const LastUpdatedPt = ({date}) => {
  const label = "Última atualização:";
  return <>
      <style>{`
        .last-updated-component {
          display: inline-flex;
          align-items: center;
          gap: 8px;
          padding: 10px 16px;
          border-radius: 8px;
          margin-top: 12px;
          margin-bottom: 16px;
          font-size: 14px;
          background-color: rgba(0, 0, 0, 0.05);
          border: 1px solid rgba(0, 0, 0, 0.12);
          color: rgba(0, 0, 0, 0.75);
          line-height: 1;
        }

        .last-updated-component svg {
          flex-shrink: 0;
          vertical-align: middle;
        }

        .last-updated-component span {
          display: inline-flex !important;
          align-items: center !important;
          line-height: 1 !important;
        }

        [data-theme="dark"] .last-updated-component {
          background-color: #3a3a3a;
          border: 2px solid #888888;
          color: #ffffff;
        }

        [data-theme="dark"] .last-updated-component svg {
          stroke: #ffffff;
        }
      `}</style>
      <div className="last-updated-component">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />
          <polyline points="12 6 12 12 16 14" />
        </svg>
        <span>
          <strong style={{
    fontWeight: 600
  }}>{label}</strong> 
          <time dateTime={date}>{date}</time>
        </span>
      </div>
    </>;
};

### O que é GAM Demand Mediation?

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Gere receita incremental com impressões de banner que ficariam sem preenchimento,
  sem mudar sua configuração atual do Topsort.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Quando não há demanda do Topsort para um banner slot, retornamos automaticamente
  um anúncio do Google Ad Manager (GAM). Você só precisa renderizar.
</div>

<Frame>
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/topsort/images/knowledge-base/gam-fallback-flow.png" alt="Diagrama do fluxo de GAM fallback mostrando o leilão retornando uma tag GAM quando não há demanda do Topsort" />
</Frame>

### Benefícios

* **Monetizar inventário não vendido:** Marketplaces podem gerar receita com espaços de banners mesmo quando não há demanda do Topsort
* **Fontes de demanda flexíveis:** Topsort pode configurar placements GAM para open auction ou direct deals

### Para quem é?

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Qualquer marketplace Topsort no mundo com slots de banner.
</div>

### Processo de onboarding

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Se seu marketplace estiver interessado em GAM demand mediation, entre em contato com a equipe da sua conta Topsort.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Uma integração típica leva <strong>apenas algumas horas do tempo de um engenheiro
  do marketplace</strong> e pode ser feita ao vivo em uma única chamada com um engenheiro
  de integração da Topsort.
</div>

<Steps>
  <Step title="Alinhar escopo do piloto">
    Selecione 2-3 slots de banners e alinhe políticas de moderação de conteúdo.
  </Step>

  <Step title="Configurar conexão GAM MCM">
    Vincule contas Topsort e varejista, e atualize <code>ads.txt</code> e <code>sellers.json</code>.
  </Step>

  <Step title="Implementar passback flow">
    Adicione um snippet pequeno em cada ad slot para renderizar anúncio Topsort ou anúncio GAM.
  </Step>

  <Step title="Testes">
    Topsort valida a integração.
  </Step>
</Steps>

### Exemplo de resposta

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Quando não há demanda do Topsort para um banner slot habilitado para GAM demand mediation,
  o endpoint de leilões retorna um snippet GAM no campo <code>asset</code> do vencedor.
</div>

```json theme={null}
{
  "results": [
    {
      "resultType": "banners",
      "winners": [
        {
          "asset": [
            {
              "content": "{\"type\": \"gam_snippet\", \"content\": \"<div id=\\\"gam-ad\\\"><script>googletag.cmd.push(function() { googletag.display(\\\"div-gpt-ad-12345\\\"); });</script></div>\"}"
            }
          ],
          "type": "url",
          "id": "https://www.example.com",
          "rank": 1
        }
      ],
      "error": false
    }
  ]
}
```

## Passback flow

<Note>
  O único desenvolvimento necessário pelo marketplace é adicionar um snippet pequeno em cada ad slot habilitado para demanda GAM.
</Note>

```javascript theme={null}
// response is response from Topsort auction endpoint
const { results } = await response.json();
const passback = results?.[0]?.winners?.[0]?.metadata?.passbacktag;

if (passback) {
  const iframe = document.createElement("iframe");
  document.getElementById("banner-slot-3")?.appendChild(iframe);
  iframe.contentDocument.write(passback);
  iframe.contentDocument.close();
} else {
  // render normal Topsort ad
}
```

***

<LastUpdatedPt date="2026-03-19" />
