> For the complete documentation index, see [llms.txt](https://docs.chord.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chord.co/activate/event-streaming/destinations/attribution-and-affiliate/impact/impact-browser.md).

# Impact browser

Impact browser loads the Impact Universal Tracking Tag (UTT) in the visitor's browser and fires `identify` and `trackConversion` calls from the page. It complements the server version, [Impact server](/activate/event-streaming/destinations/attribution-and-affiliate/impact/impact-server.md). Use it when you need browser-based attribution through Impact's UTT script. See [Impact](/activate/event-streaming/destinations/attribution-and-affiliate/impact.md) for how the two work together.

## Getting started

You need your Impact account ID. Find it in your Impact account settings or in the UTT snippet Impact gave you. If you report conversions under a custom event type, you also need that numeric event type ID from Impact.

## Settings

* **Destination Name** (required): a name to tell this destination apart.
* **Account ID** (required): your Impact account ID, used to load the UTT script.
* **Event Type ID** (optional): the numeric event type ID passed to `trackConversion` calls. Leave it blank to omit the argument.
* **Conversion Event Names** (optional): event names that trigger a `trackConversion` call. When the list is empty, only `Order Completed` triggers it. When you add names, only those names trigger it, so include `Order Completed` if you still want it. Names are not case-sensitive.
* **Consent Requirements** (optional): the consent categories a visitor must accept before Chord sends data to this destination. See [Consent](/activate/event-streaming/consent.md).

## Connect

Add **Impact (Device Mode)** from the destination catalog, using the settings above. See [Connect a destination](/activate/event-streaming/connect-a-destination.md) for the full steps.

## Event mapping

| Chord event                                                                                 | Impact event                  | Notes                                                         |
| ------------------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------------- |
| `identify`                                                                                  | `ire("identify", ...)`        | Fires on every identify call                                  |
| [`Order Completed`](/collect-data/tracking-plan/order-completed.md) *(or configured names)* | `ire("trackConversion", ...)` | Default trigger; customizable with **Conversion Event Names** |

Page events are not sent to Impact. See [Custom events](#custom-events) for other track events.

## Event details

**Identify**

Fires an identification call that associates the visitor with a customer record.

**UTT call:** `ire("identify", { customerid, customerEmail, customProfileId })`

| Chord source (priority order)                                                            | Impact field      | Notes                              |
| ---------------------------------------------------------------------------------------- | ----------------- | ---------------------------------- |
| `userId` > `anonymousId`                                                                 | `customerid`      | Empty string if neither is present |
| `properties.email` > `properties.emailAddress` > `context.traits.email` > `traits.email` | `customerEmail`   | Empty string if not present        |
| `anonymousId`                                                                            | `customProfileId` | Empty string if not present        |

**Order Completed**

Fires a conversion event with order and product line-item data. The event is skipped, with a console warning, if the event name is not in the list above. An `Order Completed` event with no products is also skipped.

**UTT call:** `ire("trackConversion", eventTypeId, { orderid, customerid, customerEmail, currencycode, orderpromocode, orderdiscount, items }, { verifySiteDefinitionMatch: true })`

Order fields:

| Chord source (priority order)                                                                               | Impact field     | Notes                                                                                   |
| ----------------------------------------------------------------------------------------------------------- | ---------------- | --------------------------------------------------------------------------------------- |
| `properties.cart_id` > `properties.cartId` > `properties.order_id` > `properties.orderId` > `properties.id` | `orderid`        | A cart ID wins over an order ID when both are present. Empty string if none is present. |
| `userId` > `anonymousId`                                                                                    | `customerid`     | Empty string if neither is present                                                      |
| `properties.email` > `properties.emailAddress` > `context.traits.email` > `traits.email`                    | `customerEmail`  | Empty string if not present                                                             |
| `properties.currency` > `properties.meta.i18n.currency`                                                     | `currencycode`   | Defaults to `"USD"`                                                                     |
| `properties.coupon`                                                                                         | `orderpromocode` | Empty string if not present                                                             |
| `properties.discount`                                                                                       | `orderdiscount`  | Defaults to `0`                                                                         |

Line items. Each product in `properties.products[]` maps to one item:

| Chord source (priority order)       | Impact field | Notes                                                        |
| ----------------------------------- | ------------ | ------------------------------------------------------------ |
| `price × quantity`                  | `subtotal`   | Defaults to `0` if price is absent; quantity defaults to `1` |
| `category`                          | `category`   | Empty string if not present                                  |
| `sku` > `product_id` > `variant_id` | `sku`        | Empty string if none are present                             |
| `quantity`                          | `quantity`   | Defaults to `1`                                              |
| `name`                              | `name`       | Empty string if not present                                  |

A product with none of `product_id`, `id`, `sku` or `variant` is left out of `items`.

## Custom events

Chord sends a track event to Impact only if its name is in the **Conversion Event Names** list, or is `Order Completed` when the list is empty. Every other track event is skipped with a console warning. Chord does not forward the event as a custom Impact event.

## Initialization

When the first event is processed, Chord inserts the UTT script (`https://utt.impactcdn.com/{accountId}.js`) into the page and stubs `window.ire`, so calls made before the script loads are queued and replayed automatically.

Chord tracks loading state (`fresh` → `loading` → `loaded`/`failed`) so the script is inserted only once per page. Events that arrive while the script is loading share a single initialization. If the script fails to load, later events on that page are silently dropped.

## CSP requirements

If your storefront uses a Content Security Policy, allow the domain Chord loads the UTT script from, and the domain Impact's script loads from and sends tracking data to:

| Directive     | Domain                             |
| ------------- | ---------------------------------- |
| `script-src`  | `https://utt.impactcdn.com`        |
| `script-src`  | `https://d.impactradius-event.com` |
| `connect-src` | `https://d.impactradius-event.com` |

## Testing and validation

After you connect the destination:

1. Open your storefront in a browser with developer tools open.
2. Place a test order, or trigger the event from the browser console with `window.chord.track("Order Completed", {...})`.
3. In the **Network** tab, look for a request to `utt.impactcdn.com`. It confirms the UTT script loaded.
4. In Chord, open the **Live Events** tab for the destination and check that the event appears without errors.
5. In your Impact dashboard, check the conversion report to confirm attribution was recorded.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.chord.co/activate/event-streaming/destinations/attribution-and-affiliate/impact/impact-browser.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
