> For the complete documentation index, see [llms.txt](https://developers.citrusad.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.citrusad.com/integration/reference/validation-troubleshooting.md).

# Validation & Troubleshooting

{% hint style="info" %}
Epsilon Retail Media's documentation is now centralized with our knowledgebase!

For up to date guides, please view [this page](https://help.citrusad.com/retail-media-interface/integration/brand-pages/brand-page-retailer-integration-guide/validation-troubleshooting) in the new Integration APIs space of our documentation.
{% endhint %}

## Testing and Validation

### Pre-Launch Validation Checklist

**Technical Integration**

* [ ] API :`POST /ads/v3/brand-pages` returns 200 with `contentData`.
* [ ] Rendering : Content modules render correctly on your site in the correct order.
* [ ] Theme: `theme` fields are applied correctly; `null` values fall back to retailer style guide defaults.
* [ ] Optional fields: Renderer and tracking logic must tolerate omitted, null, or empty optional module fields, as well as omitted tracking nodes, without errors (validate using multiple live templates, not just a single demo brand page).
* [ ] Styling : Brand page matches your site's design system.
* [ ] Mobile : Brand page displays correctly on mobile devices.
* [ ] Cache-busting : `{TS}` value changes on every request.

**Tracking Validation**

* [ ] Impression pixel (C2S) : Every entry in `trackingTemplates.client.impressionPixelUrls` fires and returns 200 `image/gif`
* [ ] Impression notification (S2S) : Composed server impression URL; **GET** or **POST** direct to Epsilon tracking host returns 204 No Content.
* [ ] Click tracking (C2S) : Either the composed `client.clickRedirect` URL returns 302 to the correct destination, or the composed `client.clickEvent` returns 204 No Content (whichever option your flow uses - not both)
* [ ] Click notification (S2S) : **GET** or **POST** direct to the composed server URL returns 204 No Content
* [ ] Add-to-cart (C2S) : Composed `client.addToCartEvent` fired as event beacon returns 204 No Content
* [ ] Add-to-cart (S2S) : Composed `server.addToCartEvent` called direct to tracking host returns 204 No Content

**Infrastructure & Privacy**

* [ ] Reverse proxy : C2S tracking requests forwarded through your domain; S2S is not sent through the proxy
* [ ] Headers : `RP-Host`, `X-Forwarded-For`, `X-Forwarded-Request-Path`, `Referer` are present on proxied requests
* [ ] Privacy : No PII present in any parameter or URL
* [ ] HTTPS : All requests use secure connections
* [ ] Product pages : Pages render correctly after click redirect

### Recommended Tools

* Browser developer tools: Network tab to inspect pixel loads and redirects.
* Fiddler or Charles Proxy: Inspect reverse proxy behavior and header forwarding.

### Troubleshooting

| Issue                                     | Check                                                                                                                                                                                    |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pixels fail to load                       | Verify DNS/SSL, confirm proxy path rewrite, check reachability to the Epsilon tracking host.                                                                                             |
| Redirects don't forward                   | Ensure `{RURL}` is URL-encoded, verify proxy preserves query string.                                                                                                                     |
| API returns no content                    | Verify `catalogId` and `urlSlug` match an active brand page campaign.                                                                                                                    |
| Tracking blocked by ad blocker            | Confirm reverse proxy is configured - tracking should route through your domain.                                                                                                         |
| Add-to-cart not tracked                   | Ensure you fire the composed client or server add-to-cart URL after the cart action.                                                                                                     |
| Page throws when loading some brand pages | Likely treating doc/example fields as always required. Log raw module JSON, add guards for optional keys and missing tracking, and confirm the template allows or disables those fields. |
| Theme colors not applying correctly       | Check that `null` theme fields fall back to your style guide defaults, rather than being rendered as literal null values or empty strings.                                               |

## Glossary

**Essential Terms for Brand Pages Integration**

| Term           | Definition                                                                                                                                                                                                                                                                                   | Example                                                          |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| API Key        | Your authentication credential for Epsilon services                                                                                                                                                                                                                                          | `Basic abc123xyz...`                                             |
| Brand Page     | A branded landing page experience on your site                                                                                                                                                                                                                                               | yoursite.com/brands/nike                                         |
| C2S Tracking   | Client-to-Server: Browser-based tracking. Impressions use 1x1 pixels; clicks use a 302 redirect or an event beacon; add-to-cart uses an event beacon.                                                                                                                                        | `<img src="impression-pixel">, navigator.sendBeacon(clickEvent)` |
| S2S Tracking   | Server-to-Server: Backend tracking (GET or POST to the composed tracking URLs)                                                                                                                                                                                                               | Your server → Epsilon server                                     |
| Content Module | Individual content blocks (hero, text, products, etc.)                                                                                                                                                                                                                                       | Hero banner, product grid                                        |
| Module Tags    | Optional string labels on a module (e.g., `["header"]`) set in the template. Used by retailers for layout routing, analytics, or mapping to their own components. Omitted from the response when empty.                                                                                      | `"tags": ["header"]`                                             |
| Theme          | Always present on success in the API response: nested `colors` (background + seven text roles) and `buttons` (`primary` / `secondary` with `background` and `text`). All theme color fields are required (hex6). See [Theme Object](/integration/reference/brand-page-apis.md#theme-object). | "theme": { "colors": { ... }, "buttons": { ... } }               |
| Impression     | When a brand page is viewed by a user                                                                                                                                                                                                                                                        | Page load = 1 impression                                         |
| Click          | When a user clicks on brand page content                                                                                                                                                                                                                                                     | CTA button click                                                 |
| Conversion     | When a user adds a product to cart from brand page                                                                                                                                                                                                                                           | Add to cart action                                               |
| Reverse Proxy  | Routes tracking through your domain to avoid ad blockers                                                                                                                                                                                                                                     | `yoursite.com/epsilon/` → Epsilon                                |
| URL Slug       | The brand identifier in the URL path                                                                                                                                                                                                                                                         | `nike` in `/brands/nike`                                         |
| Catalog ID     | Your unique product catalog identifier                                                                                                                                                                                                                                                       | Provided by Epsilon                                              |
| Macro          | Response placeholders (`{TS}`, `{RURL}`) in `tracking.params` that you replace at runtime;                                                                                                                                                                                                   | `{TS} → 1737485823910`                                           |
| IAB TCF        | Interactive Advertising Bureau Transparency & Consent Framework                                                                                                                                                                                                                              | GDPR compliance standard                                         |
| PII            | Personally Identifiable Information (never send this!)                                                                                                                                                                                                                                       | Email, phone, real name                                          |
| Cache-busting  | Adding timestamps to prevent cached responses                                                                                                                                                                                                                                                | `?ts=1737485823910`                                              |

### Technical Acronyms

| Acronym | Full Term                          | What It Means                          |
| ------- | ---------------------------------- | -------------------------------------- |
| RMN     | Retail Media Network               | Epsilon's advertising platform         |
| CTA     | Call-to-Action                     | Clickable buttons/links                |
| JSON    | JavaScript Object Notation         | Data format for API requests/responses |
| HTTPS   | HTTP Secure                        | Encrypted web protocol                 |
| GDPR    | General Data Protection Regulation | EU privacy law                         |
| TLS     | Transport Layer Security           | Encryption protocol                    |
| DNS     | Domain Name System                 | Internet address system                |
| SSL     | Secure Sockets Layer               | Encryption protocol                    |
| RFC     | Request for Comments               | Technical standards documents          |
