> 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/triple-whale.md).

# Triple Whale

Triple Whale is a unified ecommerce attribution and analytics platform. It offers advanced tracking, attribution modeling and real-time insights across channels and customer touchpoints.

Connecting Triple Whale as a destination sends the user-level events and interactions Chord collects directly to Triple Whale. This gives you central attribution, funnel analysis and behavioral insights while keeping your brand's data context.

## Getting started

Triple Whale is a browser destination: Chord loads the Triple Whale pixel on your site and sends events to it from the visitor's browser. Before you connect it:

* Have a Triple Whale account with your store set up. You need the store identifier from the Triple Whale dashboard.
* Remove any Triple Whale script or pixel you added by hand. See [Best practices and conflict avoidance](#best-practices-and-conflict-avoidance).

## Settings

* **Destination Name** (required): a name to tell this destination apart. For example, "Triple Whale - Production".
* **Store Identifier** (required): your store identifier from the Triple Whale dashboard.
* **Platform** (required): the platform your store runs on, either **Shopify** or **Custom**. Defaults to **Shopify**. Choose **Shopify** for a Shopify headless store and **Custom** for other frameworks.
* **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 **Triple Whale** 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                                                                   | Triple Whale event                                              | Notes |
| ----------------------------------------------------------------------------- | --------------------------------------------------------------- | ----- |
| `page`                                                                        | `TriplePixel("pageLoad")`                                       |       |
| `identify`                                                                    | `TriplePixel("Contact", { email, phone, firstName, lastName })` |       |
| [`Product Added`](/collect-data/tracking-plan/product-added.md)               | `TriplePixel("AddToCart", { item, q, v })`                      |       |
| [`Checkout Started`](/collect-data/tracking-plan/checkout-started.md)         | `TriplePixel("checkoutStarted", payload)`                       |       |
| [`Email Captured`](/collect-data/tracking-plan/email-captured.md)             | `TriplePixel("contactSubmitted", payload)`                      |       |
| `Billing Address Updated`                                                     | `TriplePixel("addressSubmitted", payload)`                      |       |
| `Shipping Address Updated`                                                    | `TriplePixel("shippingSubmitted", payload)`                     |       |
| [`Payment Info Entered`](/collect-data/tracking-plan/payment-info-entered.md) | `TriplePixel("paymentSubmitted", payload)`                      |       |
| [`Order Completed`](/collect-data/tracking-plan/order-completed.md)           | `TriplePixel("purchase", payload)`                              |       |
| [`Subscription Created`](/collect-data/tracking-plan/subscription-created.md) | `TriplePixel("NewSubscription", payload)`                       |       |

## Identify events

Sends the visitor's contact details. The event is skipped if none of the four fields is present.

| Chord source (priority order)                                                                        | Triple Whale field | Notes |
| ---------------------------------------------------------------------------------------------------- | ------------------ | ----- |
| `properties.email` > `properties.emailAddress` > `context.traits.email` > `traits.email`             | `email`            |       |
| `properties.phone` > `properties.phoneNumber` > `context.traits.phone` > `traits.phone`              | `phone`            |       |
| `properties.first_name` > `properties.firstName` > `context.traits.first_name` > `traits.first_name` | `firstName`        |       |
| `properties.last_name` > `properties.lastName` > `context.traits.last_name` > `traits.last_name`     | `lastName`         |       |

## Product Added

| Chord source (priority order)                                | Triple Whale field | Notes                           |
| ------------------------------------------------------------ | ------------------ | ------------------------------- |
| `properties.product_id` > `properties.sku` > `properties.id` | `item`             | Empty string if none is present |
| `properties.quantity`                                        | `q`                | Defaults to `1`                 |
| `properties.variant_id`                                      | `v`                | Only sent when present          |

## Checkout and order events

`Checkout Started`, `Email Captured`, `Billing Address Updated`, `Shipping Address Updated`, `Payment Info Entered` and `Order Completed` send the same payload. `Subscription Created` sends it plus `subscriptionId`. Each field is sent only when Chord finds a value. If no field has a value, the call is sent with no payload.

| Chord source (priority order)                                                                     | Triple Whale field     | Notes                                                            |
| ------------------------------------------------------------------------------------------------- | ---------------------- | ---------------------------------------------------------------- |
| `properties.event_id` > `properties.eventId`                                                      | `eventId`              |                                                                  |
| `properties.email`                                                                                | `email`                |                                                                  |
| `properties.phone`                                                                                | `phone`                |                                                                  |
| `properties.first_name` > `properties.firstName`                                                  | `firstName`            |                                                                  |
| `properties.last_name` > `properties.lastName`                                                    | `lastName`             |                                                                  |
| `properties.order_id` > `properties.orderId` > `properties.checkout_id` > `properties.checkoutId` | `order_id`             |                                                                  |
| `properties.products[].product_id` > `.sku` > `.id`                                               | `lineItems`            | A list of product IDs. Products with none of these are left out. |
| `zip` > `postal_code`                                                                             | `address.zip`          | Read from the address below                                      |
| `city`                                                                                            | `address.city`         | Read from the address below                                      |
| `country_code` > `countryCode` > `country`                                                        | `address.countryCode`  | Read from the address below                                      |
| `province_code` > `provinceCode` > `state`                                                        | `address.provinceCode` | Read from the address below                                      |
| `properties.subscription_id` > `properties.subscriptionId`                                        | `subscriptionId`       | `Subscription Created` only                                      |

The address comes from `properties.address`, then `properties.shipping_address`, then `properties.billing_address`. Chord uses the first one that exists.

This payload has no revenue, total or price fields.

## Custom events

Chord does not send other track events to Triple Whale. Only the events in the table above are sent. Other track events are skipped with a console warning.

## Best practices and conflict avoidance

Before you enable Triple Whale through Chord:

* Disable any older or manually added Triple Whale tracking scripts or pixels. They cause duplicate events and inflated data.
* Work with your engineering or analytics team so you have a single source of truth for tracking and user identity. Avoid overlapping tracking solutions.
* Confirm tracking consent and privacy compliance if you manage user data under GDPR, CCPA or similar regulations.

Running parallel tracking outside Chord's configuration can lead to inconsistent analytics, inaccurate attribution or duplicated data.

## Troubleshooting

**I'm seeing duplicate page views or conversions in Triple Whale. What should I check?**

Check that you haven't also installed Triple Whale tracking manually, outside Chord. Duplicate scripts or pixels can cause double-counting.

**Some user attributes or events aren't appearing in Triple Whale. What should I check?**

Make sure your Chord tracking setup includes the signals you need. Also make sure your user identity mapping, such as user ID and email, is populated in Chord before events fire.

**Does Triple Whale overwrite my existing data warehouse or analytics stack?**

No. Triple Whale works as a destination for analytics and attribution data. If you rely on a separate warehouse or BI stack, treat Triple Whale as a complement, not a replacement.


---

# 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/triple-whale.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.
