> ## 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

> Transformez l'inventaire invendu en revenus avec une configuration rapide

export const LastUpdatedFr = ({date}) => {
  const label = "Dernière mise à jour:";
  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>
    </>;
};

### Qu'est-ce que GAM Demand Mediation ?

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Générez des revenus incrémentaux sur des impressions bannière qui resteraient
  sinon non remplies, sans changer votre configuration Topsort existante.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Quand Topsort n'a pas de demande pour un slot bannière, nous retournons
  automatiquement une annonce Google Ad Manager (GAM). Vous n'avez qu'à l'afficher.
</div>

<Frame>
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/topsort/images/knowledge-base/gam-fallback-flow.png" alt="Diagramme du flux GAM fallback montrant le retour d'un tag GAM lorsqu'il n'y a pas de demande Topsort" />
</Frame>

### Avantages

* **Monétiser l'inventaire invendu:** Revenus même quand il n'y a pas de demande Topsort
* **Sources flexibles:** Open auction ou direct deals via GAM

### À qui est-ce destiné ?

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Toute marketplace Topsort dans le monde avec des emplacements bannière.
</div>

### Processus d'intégration

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Si votre marketplace est intéressée par GAM demand mediation, contactez votre
  équipe de compte Topsort.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Une intégration typique prend <strong>seulement quelques heures du temps d'un
  ingénieur marketplace</strong> et peut être réalisée en direct pendant un seul appel.
</div>

<Steps>
  <Step title="Aligner le scope pilote">
    Sélectionnez 2-3 slots bannière et alignez les politiques de modération.
  </Step>

  <Step title="Configurer la connexion GAM MCM">
    Reliez les comptes Topsort et retailer, puis mettez à jour <code>ads.txt</code> et <code>sellers.json</code>.
  </Step>

  <Step title="Implémenter le passback flow">
    Ajoutez un petit snippet dans chaque slot pour afficher soit une annonce Topsort, soit une annonce GAM.
  </Step>

  <Step title="Tests">
    Topsort valide l'intégration.
  </Step>
</Steps>

### Exemple de réponse

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Quand il n'y a pas de demande Topsort pour un slot bannière activé, l'endpoint
  d'enchères retourne un snippet GAM dans <code>asset</code>.
</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>
  Le seul développement requis côté marketplace est d'ajouter un petit snippet
  de code à chaque slot activé pour la demande 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
}
```

***

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