---
title: Retention.com
slug: retentioncom
docTags: 
createdAt: 2026-02-04T22:58:49.022Z
---

**Retention.com** is a visitor identification and retargeting platform that matches anonymous website visitors to contact records for email and direct mail remarketing. This destination loads the Retention.com pixel in the browser and forwards page views, identify events, order data, and product interactions. There is no server-side component.

# Getting Started

This is a device-mode destination. The Retention.com pixel is loaded automatically — no manual script installation is required. You will need:

- **Site ID** — your Retention.com site ID, found in your Retention.com account settings.

# Connecting to the Retention.com CDP Destination

:::BlockQuote
**Warning:** Before connecting destinations in the Chord CDP, please verify with all Destination owners that all **non-Chord CDP** configured destinations are **disabled**. Running external destinations alongside configured Chord CDP destinations **can result in duplicate events downstream.**
:::

1. Log into the Chord data platform.
2. Navigate to the CDP.
3. Click the **"Add"** button next to Destinations.
4. Select **Retention.com** from the destination catalog.
5. Enter the destination name and your **Site ID**.
6. Click **"Create"** to connect.

# Events

# Event Mapping

| Chord Event       | Retention.com SDK Call                             |
| ----------------- | -------------------------------------------------- |
| `page`            | `geq.page()`                                       |
| `identify`        | `geq.suppress(email)`                              |
| `Email Captured`  | `geq.suppress(email)`                              |
| `Order Completed` | `geq.trackOrder(orderData)`                        |
| `Product Added`   | `geq.addToCart(productData)`                       |
| `Product Viewed`  | `geq.event("Viewed Product Reclaim", productData)` |

# Page Events

Fires a Retention.com page view call.

**Retention SDK call:** `geq.page()`

No additional attributes are sent with page events.

# Identify Events

Suppresses Retention.com anonymous visitor collection for known users. When a user is identified with an email, Retention.com stops collecting anonymous data for that email.

**Retention SDK call:** `geq.suppress(email)`

| Parameter | Chord Source (Priority Order)                                | Notes                              |
| --------- | ------------------------------------------------------------ | ---------------------------------- |
| `email`   | `properties.email` > `context.traits.email` > `traits.email` | Event is skipped if no email found |

# Email Captured

Suppresses Retention.com collection when an email is captured (same behavior as Identify).

**Retention SDK call:** `geq.suppress(email)`

| Parameter | Chord Source (Priority Order)       | Notes                              |
| --------- | ----------------------------------- | ---------------------------------- |
| `email`   | `properties.email` > `traits.email` | Event is skipped if no email found |

# Order Completed

Sends an order tracking call to Retention.com.

**Retention SDK call:** `geq.trackOrder(orderData)`

| Retention Attribute | Chord Source (Priority Order)                                | Notes                                |
| ------------------- | ------------------------------------------------------------ | ------------------------------------ |
| `order_number`      | `properties.order_id`                                        |                                      |
| `order_amount`      | `properties.total` > `properties.value`                      | Defaults to `0`; converted to string |
| `order_email`       | `properties.email` > `context.traits.email` > `traits.email` |                                      |

# Product Added

Sends an add-to-cart event. Uses the first product from `properties.products[]`, or falls back to extracting product data from root-level `properties`.

**Retention SDK call:** `geq.addToCart(productData)`

| Retention Attribute | Chord Source (Priority Order)                                                                                                                 | Notes               |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
| `Name`              | `properties.products[0].name` > `properties.name`                                                                                             |                     |
| `Price`             | `properties.products[0].price` > `properties.price`                                                                                           | Converted to string |
| `ProductID`         | `properties.products[0].product_id` > `properties.products[0].sku` > `properties.products[0].id` > `properties.product_id` > `properties.sku` |                     |
| `Categories`        | `properties.products[0].category` > `properties.category`                                                                                     |                     |
| `ImageURL`          | `properties.products[0].image_url` > `properties.image_url`                                                                                   |                     |
| `URL`               | `properties.products[0].url` > `properties.url`                                                                                               |                     |
| `Brand`             | `properties.products[0].brand` > `properties.brand`                                                                                           |                     |

# Product Viewed

Sends a product viewed event using Retention.com's Reclaim feature.

**Retention SDK call:** `geq.event("Viewed Product Reclaim", productData)`

Same attributes as **Product Added** above.

# Initialization

The plugin loads `https://s3-us-west-2.amazonaws.com/jsstore/a/{siteId}/ge.js` on the first event received. The plugin manages SDK loading state (`fresh` → `loading` → `loaded`/`failed`) to prevent duplicate script loads. Concurrent events during loading are queued and processed after initialization completes. If the script fails to load, subsequent events are silently dropped.

# CSP Requirements

If your site uses a Content Security Policy, allow the following domains. Note that `script-src` covers where the SDK file is downloaded from, while `connect-src` covers where the SDK sends tracking data to at runtime — these are different hosts and both must be allowed.

| Directive     | Domain                                          | Purpose                                                                                                        |
| ------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `script-src`  | `https://s3-us-west-2.amazonaws.com`            | Downloads `ge.js` (the Retention.com SDK)                                                                      |
| `connect-src` | `https://*.execute-api.us-west-2.amazonaws.com` | Outbound event, order, and suppression calls to Retention.com's tracking API                                   |
| `connect-src` | `https://alocdn.com`                            | Per-account configuration fetch                                                                                |
| `connect-src` | `https://pro.ip-api.com`                        | Geo/VPN validation (only if `enable_geo_check` or `enable_vpn_check` is enabled in your Retention.com account) |
| `connect-src` | `https://a.usbrowserspeed.com`                  | Fingerprint fallback for anonymous visitor resolution                                                          |
| `connect-src` | `https://b-code.liadm.com`                      | LiveIntent identity resolution (only if enabled in your Retention.com account)                                 |

Verify against your Retention.com account's current configuration — additional domains may be required if you have optional features enabled that aren't listed above.

***

**Updated 6 Apr 2026**
