> 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/integration-architecture.md).

# Integration Architecture

{% 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/integration-architecture) in the new Integration APIs space of our documentation.
{% endhint %}

## Integration Components

**Required Components**

1. API Client – Fetches brand page content.
2. Content Renderer – Displays modules on your site. Handles modules and fields that may be missing or empty without throwing; falls back or hides UI blocks when optional creative data is absent.
3. Tracking Handler – Composes tracking URLs from `trackingTemplates` and per-slot `trackers.<slot>params`, then fires C2S and/or S2S events.
4. Reverse Proxy – Routes tracking through your domain.

This section describes the high‑level runtime sequence for serving and tracking.

## Integration Flow

**Tracking Options (Choose One)**

| Method                     | When to Use                                                                                                                                                                                       |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **(Client-to-Server) C2S** | Standard web implementation: browser‑based impression pixels plus click redirects or event beacons (clicks and add-to-cart). This approach is strongly recommended by Epsilon for most retailers. |
| **(Server-to-Server) S2S** | Use when your architecture requires server‑side event firing, client‑side pixels are unreliable, or you want server‑side confirmation in addition to C2S.                                         |

{% hint style="info" %}
**A reverse proxy is required only for C2S (browser) tracking. S2S calls go directly to the Epsilon tracking host using URLs you compose from `trackingTemplates.server`** **`+`** **`trackers.<slot>params` (same recipe as C2S, without `BASEURL`). Do not route S2S calls through a reverse proxy or modify the template host or path.**
{% endhint %}

<br>
