> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/sv/brand-pages/brand-page-retailer-integration-guide/tracking-attribution.md).

# Spårning och attribuering

## Hur man skapar en spårnings-URL

Svaret ger tre källor att kombinera:

* På sidnivå `trackers.impression`: till exempel använder en sidvisning `type: "impression"` och `params` inklusive `ts` och `iabConsentString`.
* Delad `trackingTemplates`: en uppsättning av `client`(relativ) och `server` (absolut) URL-mallar, som redan innehåller frågeparametrar för session och placering.
* Per nod `trackers.click` och/eller `trackers.addToCart` på en modul, rad eller galleriartikel: `type`+ `params` för den specifika händelsen (till exempel, `modId`, `rurl`, `productCode`).

### Vilken mall?

Använd nodens `tracking.type` för att slå upp `trackingTypes.<type>`,. Detta definierar giltiga `client.*` och `server.*` -nycklar för den interaktionen (till exempel för link: `client.clickRedirect`, `client.clickEvent`, `server.clickEvent)`.

### Klient jämfört med server

* Klient (`trackingTemplates.client.*`): Värden är relativa sökvägar (inklusive frågesträngar). Inled med bas-URL:en för din omvända proxy (`BASEURL`).
* Server (`trackingTemplates.server.`): Värden är absoluta URL-mallar på Epsilon spårningsvärden. Skapa den slutliga URL:en på samma sätt som C2S: mall + `"&"` + `queryString(trackers.<slot>params)`.

{% hint style="info" %}
Ändra inte mallens värd eller sökväg, och skicka inte S2S-anrop via din omvända proxy.
{% endhint %}

### Genomarbetade exempel (pseudokod)

#### C2S-klick för en HERO CTA

```
url = BASEURL + trackingTemplates.client.clickRedirect + "&" + queryString(trackers.click.params)
```

#### S2S-sidvisning

```
url = trackingTemplates.server.impressionEvent + "&" + queryString(trackers.impression.params)
```

#### S2S-lägg i varukorgen för en produktrad

```
url = trackingTemplates.server.addToCartEvent + "&" + queryString(trackers.addToCart.params)
```

Makroersättning

* Ersätt {TS} med den aktuella tidsstämpeln i millisekunder, {RURL} med den URL-kodade destinationen, och `{TCF}` med den aktuella TCF v2-strängen från din CMP innan den avfyras.
* För lägg i varukorgen ska du även ersätta {QTY} med den absoluta kvantiteten av den SKU:n i varukorgen vid avfyrningstillfället (inte en delta), och {CONVERSION\_VALUE} med det absoluta monetära värdet för dessa artiklar (kvantitet × enhetspris, minus eventuella tillämpade rabatter).

{% hint style="info" %}

* Endast `trackingTemplates.client.impressionPixelUrls` är sanna pixlar (1×1 GIF:ar).
  * `clickRedirect` är en slutpunkt för 302-omdirigering.
  * `clickEvent` och `addToCartEvent` är händelse-beacons som returnerar 204 No Content.
    {% endhint %}

{% hint style="danger" %}
Avfyra inte både C2S och S2S för samma logiska händelse (till exempel, skicka inte både en C2S-klickhändelse och en S2S-klickavisering för samma klick).
{% endhint %}

## Spårning – Klient-till-server (C2S)

C2S-spårning implementeras i webbläsaren med hjälp av sammansatta URL:er. Inled med `BASEURL` till sökvägarna i `trackingTemplates.client` och lägg till lämplig `trackers.<slot>params` (se [Hur man skapar en spårnings-URL](#how-to-compose-a-tracking-url)).

Endast `client.impressionPixelUrls` är pixlar (1×1 GIF). De andra klientmallarna är inte pixlar:

* `client.clickRedirect`: Slutpunkt för 302-omdirigering. Epsilon loggar klicket och omdirigerar webbläsaren till den avkodade rurl. Använd detta som ett navigeringsmål i webbläsaren.
* `client.clickEvent`: **Händelse-beacon** returnerar 204 No Content). Avfyra med `navigator.sendBeacon` or `fetch({ keepalive: true })`,. Rendera inte som `<img>`.
* `client.addToCartEvent`: **Händelse-beacon** (returnerar 204). Använder samma avfyrningsmönster som `clickEvent`.

### Implementeringssteg

1. Rendera varumärkessidans innehåll som returneras av API:et.
2. Avfyra visningspixlar i webbläsaren efter renderingen (alla poster i `trackingTemplates.client.impressionPixelUrls`, som 1×1-bilder).
3. När en användare klickar på en spårbar nod, gör antingen:\
   (a) omdirigera via den sammansatta `client.clickRedirect` -URL:en, eller\
   (b) avfyra den sammansatta `client.clickEvent` -URL:en som en händelse-beacon och navigera till destinationen själv.\
   Använd det ena eller det andra per klick, inte båda.

### Impression Pixel

När varumärkessidan har renderats, utlös varje sökväg i `trackingTemplates.client.impressionPixelUrls` som en 1×1-bild, (se[ Hur man skapar en spårnings-URL](#how-to-compose-a-tracking-url)).

```html
<img src="https://www.retailer.com/epsilon/tracking/v3/impression/pixel/brandpage_djog...?...&ts=1737485823910"
     width="1" height="1" style="display:none" />
```

Steg:

1. För varje sträng i `trackingTemplates.client.impressionPixelUrls`, lägg till ditt `BASEURL` (till exempel, `https://www.retailer.com/epsilon`).
2. Lägg till `&` + `queryString(trackers.impression.params)`, och ersätt `{TS}` med den aktuella tidsstämpeln i millisekunder och `{TCF}` med den aktuella samtyckessträngen från din CMP.
3. Utlös som en 1×1 `< img src="...">` i webbläsaren (eller motsvarande).

### Klickspårning

#### Alternativ A: Klickomdirigering (`client.clickRedirect`)

Navigera användaren genom den sammansatta URL:en. Epsilon loggar klicket och svarar med **HTTP 302** till den avkodade `rurl`. Den här slutpunkten är **endast GET**, och `rurl` krävs;

#### Alternativ B: Klickhändelsefyr (`client.clickEvent`)

Utlös som en fyr och navigera själv. Accepterar GET eller POST, returnerar 204 No Content. Inte en bild; rendera inte som`<img>`.

### Lägg i varukorg (C2S)

Utlös `trackingTemplates.client.addToCartEvent` som en händelsefyr (inte en pixel) när användaren lägger till en produkt i varukorgen. Accepterar GET eller POST, returnerar 204 No Content.

{% hint style="info" %}
Kombinera inte C2S- och S2S-lägg i varukorgen för samma varukorgsåtgärd.
{% endhint %}

## Spårning – Server-till-server (S2S)

S2S-spårning implementeras på din backend. Skapa URL:er på samma sätt som C2S: starta från lämplig `trackingTemplates.server` -sträng och lägg sedan till `trackers.<slot>params`. Servermallar är redan absoluta — det finns inget `BASEURL`att lägga till i början. (se [Hur man skapar en spårnings-URL](#how-to-compose-a-tracking-url)).

{% hint style="info" %}
Ändra inte värd eller sökväg från servermallen, och skicka inte S2S-begäranden via din reverse proxy.
{% endhint %}

### När S2S-spårning ska användas

* Din arkitektur kräver att händelser utlöses på serversidan.
* Du behöver spårning i miljöer där pixlar på klientsidan är opålitliga.
* Du vill blanda strategier - t.ex. C2S-visningar + S2S-lägg i varukorgen. Detta stöds, men utlös aldrig både C2S och S2S för samma händelse.

### S2S-visningsmeddelande

När varumärkessidan har renderats skickar din server en **GET** eller **POST** till den sammansatta visnings-URL:en: `trackingTemplates.server.impressionEvent` + `trackers.impression.params` (ersätt `{TS}` och `{TCF}` innan du skickar).

### S2S-klickmeddelande

Sätt ihop: `trackingTemplates.server.clickEvent` + `trackers.click.params` (ersätt `{TS}`, {RURL}, och `{TCF}`), skicka sedan GET eller POST.

### S2S-meddelande för Lägg i varukorg

Sätt ihop: `trackingTemplates.server.addToCartEvent` + `trackers.addToCart.params` (ersätt `{TS}`, {QTY}, {CONVERSION\_VALUE}, och `{TCF}`), skicka sedan GET eller POST.

### S2S-parametrar

| Parameter                                                                           | Källa                             | Anteckningar                                                                                                                                         |
| ----------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `catalogId`, `sessionId`, `customerId`, `dtmId`, `placementId`, `lsid`, `utcOffset` | `trackingTemplates` frågesträngar | Behåll dessa värden som de är när begäran utlöses. Ta inte bort eller ändra dem.                                                                     |
| `modId`                                                                             | `trackers.<slot>.params`          | Identifierare för innehållsmodul eller rad.                                                                                                          |
| `ts`                                                                                | `trackers.<slot>.params`          | Ersätt `{TS}` med den aktuella tidsstämpeln i millisekunder innan begäran utlöses.                                                                   |
| `iabConsentString`                                                                  | `trackers.<slot>.params`          | Ersätt `{TCF}` med den aktuella TCF v2-samtyckessträngen från CMP:n innan begäran utlöses. Om ett värde redan tillhandahålls, använd det som det är. |
| `rurl`                                                                              | `trackers.<slot>.params`          | URL-kodad omdirigeringsdestination. Ersätt `{RURL}` när den finns.                                                                                   |
| `productCode`, `sellerId`                                                           | `trackers.<slot>.params`          | Värden härledda från produktnoder.                                                                                                                   |
| `qty`                                                                               | `trackers.addToCart.params`       | Ersätt `{QTY}` med den absoluta kvantiteten för SKU:n i varukorgen vid tidpunkten då begäran utlöses. Använd inte kvantitetsändringen.               |
| `conVal`                                                                            | `trackers.addToCart.params`       | Ersätt `{CONVERSION_VALUE}` med det totala monetära värdet för artiklarna (kvantitet × enhetspris, minus eventuella tillämpliga rabatter).           |

## Makroreferens

| Symbol                  | Beskrivning                                                                                                                                              | Finns i                                   | Ersätt med                                                                    |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ----------------------------------------------------------------------------- |
| `BASEURL` (ditt prefix) | Din webbplats bas-URL med protokoll och proxy-sökväg – lägg till före varje `trackingTemplates.client.*` sökväg.                                         | C2S-spårning                              | `https://www.retailer.com/epsilon`                                            |
| `{TS}`                  | Cache-busting tidsstämpel (millisekunder)                                                                                                                | `trackers.<slot>.params`                  | `1737485823910`                                                               |
| `{RURL}`                | URL-kodad omdirigeringsdestination                                                                                                                       | `trackers.<slot>.params.rurl`             | `https%3A%2F%2Fwww.retailer.com%2Fprodukt%2F9221200653341`                    |
| `{TCF}`                 | Platshållare för IAB TCF v2-samtyckessträng. Finns när `regs.consent` utelämnades i begäran.                                                             | `trackers.<slot>.params.iabConsentString` | Aktuell TC-sträng från din CMP, t.ex. via `__tcfapi` `getTCData` → `tcString` |
| `{QTY}`                 | Absolut kvantitet av denna SKU i kundvagnen vid tidpunkten för utlösning (inte en ändring; t.ex. om köparen hade 1 och lägger till en till, skicka `2`). | `trackers.addToCart.params.qty`           | `2`                                                                           |
| `{CONVERSION_VALUE}`    | Absolut monetärt värde för dessa artiklar: kvantitet × enhetspris, minus eventuella tillämpade rabatter.                                                 | `trackers.addToCart.params.conVal`        | `49.99`                                                                       |
| `{RURL_KID}`            | Nyckel-ID för omdirigeringssignering. Finns i `trackers.click.redirectParams` när omdirigeringssignering för plattformen är aktiverad.                   | `trackers.click.redirectParams.rurlKid`   | Signeringsnyckel-id som returneras av slutpunkten för batchsignering          |
| `{RURL_SIG}`            | Signatur för omdirigeringssignering. Finns i `trackers.click.redirectParams` när omdirigeringssignering för plattformen är aktiverad.                    | `trackers.click.redirectParams.rurlSig`   | Ed25519-signatur (base64url) som returneras av slutpunkten för batchsignering |

### Referens för URL-kodning

Vid kodning av `{RURL}`, använd standardmässig procentkodning:

| Tecken | Koda som |
| ------ | -------- |
| `:`    | `%3A`    |
| `/`    | `%2F`    |
| `?`    | `%3F`    |
| `=`    | `%3D`    |
| `&`    | `%26`    |

### redirectParams och omdirigeringssignering

När omdirigeringssignering för plattformen är aktiverad, `trackers.click` kan innehålla ett `redirectParams`-objekt tillsammans med `params`. Nycklarna i `7`slås endast ihop till `client.clickRedirect` -URL:er — inte till `clickEvent`eller någon server-URL.

Två fall:

**Inbäddade länkdestinationer** (URL inbakad i `params.rurl`): plattformen signerar omdirigeringen vid leveranstillfället och avger bokstavliga `rurlKid`och `rurlSig`-värden i `redirectParams`. Lägg till dessa som de är i `clickRedirect` -URL:en.

**Återförsäljarkontrollerade omdirigeringar** (`params.rurl` är {RURL}): `redirectParams` innehåller makrona {RURL\_KID} och {RURL\_SIG}. Anropa slutpunkten för batchsignering (`redirectSigning.url` från svaret) för att erhålla nyckel-id och signatur för din destinations-URL, och ersätt sedan innan du lägger till.

Toppnivåobjektet `redirectSigning`, när det finns, tillhandahåller batchen `POST /ads/v3/redirect/sign` -slutpunktens URL och `maxUrls`-batchgränsen. Kontakta Epsilon för att bekräfta om omdirigeringssignering är aktiverad för din integration.

### clickRedirect-sammansättning med redirectParams:

```
BASEURL + trackingTemplates.client.clickRedirect + "&" + queryString(trackers.click.params) + "&" + queryString(trackers.click.redirectParams)
```

<br>

## Stilguide

Innan du aktiverar varumärkessidor på din webbplats måste vi fånga din webbplats visuella identitet. Fyll i tabellen nedan med dina designvärden. Vårt team kommer att använda detta för att konfigurera förhandsvisningsupplevelsen för varumärkessidan.

#### Logotyp

| Fält        | Beskrivning                                   | Ditt värde |
| ----------- | --------------------------------------------- | ---------- |
| Logotyp-URL | URL till din webbplatslogotyp (SVG eller PNG) |            |

#### Färger

| Fält               | Beskrivning                                            | Ditt värde |
| ------------------ | ------------------------------------------------------ | ---------- |
| Primärfärg         | Huvudsaklig varumärkesfärg (hex)                       |            |
| Bakgrundsfärg      | Sidans bakgrundsfärg (hex)                             |            |
| Ytfärg             | Bakgrundsfärg för kort/sektion (hex)                   |            |
| Primär textfärg    | Huvudsaklig textfärg (hex)                             |            |
| Sekundär textfärg  | Dämpad textfärg (hex)                                  |            |
| Text på primärfärg | Textfärg som används på primärfärgade bakgrunder (hex) |            |
| Kantfärg           | Standardkantfärg (hex)                                 |            |

#### Typografi

| Fält                    | Beskrivning                                                         | Ditt värde |
| ----------------------- | ------------------------------------------------------------------- | ---------- |
| Rubriktypsnittsfamilj   | Typsnitt som används för rubriker (t.ex. "Google Sans, sans-serif") |            |
| Brödtexttypsnittsfamilj | Typsnitt som används för brödtext (t.ex. "Roboto, sans-serif")      |            |
| Basstorlek för typsnitt | Standardstorlek för brödtexttypsnitt (t.ex. 16px)                   |            |

#### Knappar

| Fält                       | Beskrivning                                                    | Ditt värde |
| -------------------------- | -------------------------------------------------------------- | ---------- |
| Bakgrund för primär knapp  | Bakgrundsfärg för primära knappar                              |            |
| Textfärg för primär knapp  | Textfärg för primära knappar                                   |            |
| Hörnradie för primär knapp | Hörnrundning (t.ex. 8px)                                       |            |
| Stil för sekundär knapp    | Beskriv utseendet för sekundära knappar (outline, ghost, osv.) |            |

## Innehållskrav för moduler

Varumärkessidor består av innehållsmoduler. Ange de innehållsbegränsningar som din webbplats kräver för varje modultyp. Vårt team kommer att använda dessa för att konfigurera mallvalideringsregler.

### IMAGE-moduler

| Krav                          | Beskrivning                                                    | Ditt värde |
| ----------------------------- | -------------------------------------------------------------- | ---------- |
| Minsta bredd                  | Minsta bildbredd i pixlar (t.ex. 1920)                         |            |
| Minsta höjd                   | Minsta bildhöjd i pixlar (t.ex. 500)                           |            |
| Maximal filstorlek            | Maximal filstorlek i MB (t.ex. 10). Måste vara mindre än 4 MB. |            |
| Godkända format               | Godkända bildformat (t.ex. jpg, png, gif, svg)                 |            |
| Max antal tecken för bildtext | Max antal tecken för bildtext, om tillämpligt                  |            |
| `alt`om tagg är valfri        | Om `alt` krävs på bilder.                                      |            |

### TEXT-moduler

| Krav                                 | Beskrivning                                                                                                                                                                                                                     | Ditt värde |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| Variant                              | "headline", "tagline", "body" eller "lines". Avgör vilken stil texten visas i.                                                                                                                                                  |            |
| Justering                            | "left", "center" eller "right". Avgör textens horisontella justering.                                                                                                                                                           |            |
| Konfiguration för ”Lines”            | <p>Konfiguration för flerradig textkonfiguration (när variant = lines). Ange följande för varje textrad:<br><br>– namn på textfältet<br>– ”required” eller ”allowed”?<br>– om detta ska vara en hyperlänk till en annan URL</p> |            |
| Max antal tecken för rubrik          | Max antal tecken för rubriktext                                                                                                                                                                                                 |            |
| Max antal tecken för beskrivning     | Max antal tecken för beskrivningstext                                                                                                                                                                                           |            |
| Max antal tecken för brödtext/sidfot | Max antal tecken för brödtext eller sidfotstext                                                                                                                                                                                 |            |
| CTA-knapp                            | Krävs, valfritt eller behövs inte?                                                                                                                                                                                              |            |
| Max antal tecken för CTA-text        | Max antal tecken för etikett på CTA-knapp                                                                                                                                                                                       |            |

### PRODUCT\_GRID-moduler

| Krav                                          | Beskrivning                                   | Ditt värde |
| --------------------------------------------- | --------------------------------------------- | ---------- |
| Minsta antal produkter                        | Minsta antal produkter att visa (t.ex. 4)     |            |
| Maximalt antal produkter                      | Maximalt antal produkter att visa (t.ex. 12)  |            |
| Sektionsrubrik                                | Krävs eller valfritt?                         |            |
| Max antal tecken för sektionsrubrik           | Maximalt antal tecken för sektionsrubrik      |            |
| Sektionsbeskrivning                           | Krävs eller valfritt?                         |            |
| Maximalt antal tecken för sektionsbeskrivning | Maximalt antal tecken för sektionsbeskrivning |            |
| CTA-knapp                                     | Krävs, valfritt eller behövs inte?            |            |

### IMAGE\_GALLERY-moduler

Bildgallerimodulen ärver samma konfigurationsegenskaper som IMAGE-modulen. Dessutom accepterar den även följande gallerispecifika egenskaper:

| Krav                         | Beskrivning                                                                                                                                                                                                                  | Ditt värde |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| Minst antal bilder           | Minsta antal galleribilder (t.ex. 2)                                                                                                                                                                                         |            |
| Mest antal bilder            | Maximalt antal galleribilder (t.ex. 4)                                                                                                                                                                                       |            |
| Sektionsrubrik               | Om sektionsrubrikens text är obligatorisk eller valfri.                                                                                                                                                                      |            |
| Sektionsbeskrivning          | Om sektionsbeskrivningens text är obligatorisk eller valfri.                                                                                                                                                                 |            |
| `alt` om tagg är valfri      | Om `alt` krävs på bilder.                                                                                                                                                                                                    |            |
| Valfrihet för call-to-action | Om call-to-action-knappen eller -länken är obligatorisk, tillåten eller inaktiverad.                                                                                                                                         |            |
| Ytterligare textrader        | <p>För varje ytterligare text som ska kopplas till varje bild i bildgalleriet, ange följande:<br><br>– namn på textfältet<br>– ”required” eller ”allowed”?<br>– om texten ska fungera som en hyperlänk till en annan URL</p> |            |

### SPLIT\_LAYOUT-moduler

Modulen Split Layout gör det möjligt att visa två moduler sida vid sida. För närvarande stöds endast text- och bildmoduler. Utöver de individuella konfigurationsinställningarna för text- och bildmodulerna (som beskrivs i avsnitten ovan) krävs följande ytterligare egenskaper:

| Krav              | Beskrivning                                  | Ditt värde |
| ----------------- | -------------------------------------------- | ---------- |
| Layoutförhållande | Kolumnförhållande (50:50, 33:67 eller 67:33) |            |

## Identitet och integritet

### Godtagbara identifierare

* Session ID – anonym sessionsidentifierare (icke-PII)
* Customer ID – återförsäljarens kundidentifierare (icke-PII, t.ex. hash för lojalitets-ID)

{% hint style="danger" %}
Skicka inte hashade e-postadresser, telefonnummer eller någon PII i någon parameter eller URL.
{% endhint %}

### Integritetskrav

Återförsäljare måste:

* Oformattera mätspårning i sin integritetspolicy
* Tillhandahålla opt-out-länkar:
  * NAI: <https://optout.networkadvertising.org/>
  * DAA: <https://optout.aboutads.info/>

### GDPR / Samtycke

Skicka `regs`objektet på `POST /ads/v3/brand-pages`:

* `regs.gdpr`: `1` när begäran omfattas av GDPR (EU/EES/UK-hantering enligt din policy); `0`annars.
* `regs.consent`: När `gdpr` is `1`, skicka den aktuella TCF v2-samtyckessträngen från din CMP (samma värde som du skulle visa för andra annonspartner). Hitta inte på eller hårdkoda en sträng – använd vad användarens webbläsare / app har samtyckt till.
* `iabConsentString`: Detta visas i varje spårares slotparams, inte i `trackingTemplates`. När `regs.consent` tillhandahölls är värdet den bokstavliga TC-strängen och inga ytterligare åtgärder behövs.
* När `regs.consent` utelämnades är värdet `{TCF}`makrot – ersätt med den aktuella TCF v2-strängen från din CMP vid aktiveringstillfället innan du skickar någon spårningsbegäran.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/integration/sv/brand-pages/brand-page-retailer-integration-guide/tracking-attribution.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
