> 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/email-and-marketing/emotive.md).

# Emotive

**Emotive** is an SMS marketing platform. This destination sends completed orders from Chord's servers to Emotive's Orders API. It handles one event, `Order Completed`. There is no browser component.

## Getting started

You need an **API token**. Your Emotive contact provides it. Chord sends it to Emotive in the `Authorization` header as `Token <your token>`. Paste in the token as Emotive gave it to you.

## Settings

* **Destination Name** (required): a name to tell this destination apart.
* **API Token** (required): the API token from your Emotive contact.
* **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 **Emotive** from the destination catalog, using the settings above. See [Connect a destination](/activate/event-streaming/connect-a-destination.md) for the full steps.

## Events

Only [`Order Completed`](/collect-data/tracking-plan/order-completed.md) track events are sent. Chord ignores every other event, including `identify`, `page` and other track events.

## Event mapping

| Chord event                                                         | Emotive event                | Notes                                                                |
| ------------------------------------------------------------------- | ---------------------------- | -------------------------------------------------------------------- |
| [`Order Completed`](/collect-data/tracking-plan/order-completed.md) | `POST /ecommerce/v1/orders/` | Skipped, and an error is logged, if the order fails the checks below |
| *(any other event)*                                                 | *(ignored)*                  | Not forwarded                                                        |

## Order fields

| Chord source (priority order)                                        | Emotive field     | Notes                                                                                          |
| -------------------------------------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------- |
| `properties.order_id` > `properties.orderId`                         | `order_id`        | Required                                                                                       |
| `properties.order_date` > `timestamp`                                | `order_date`      | Sent as `YYYY-MM-DD HH:mm:ss` in UTC. Uses the current time if the value is missing or invalid |
| `properties.total_price` > `properties.total` > `properties.revenue` | `total_price`     | Defaults to `0`                                                                                |
| `properties.currency`                                                | `currency`        | Only sent when present                                                                         |
| `properties.subtotal_price` > `properties.subtotal`                  | `subtotal_price`  | Only sent when present                                                                         |
| `properties.total_tax` > `properties.tax`                            | `total_tax`       | Only sent when present                                                                         |
| `properties.total_shipping` > `properties.shipping`                  | `total_shipping`  | Only sent when present                                                                         |
| `properties.total_discounts` > `properties.discount`                 | `total_discounts` | Only sent when present                                                                         |

Number fields accept values written as text, such as `$99.99` or `1,299.00`. Chord strips currency symbols and commas before sending.

## Line items

Chord sends one line item for each entry in `properties.products`.

| Chord source (priority order) | Emotive field   | Notes                  |
| ----------------------------- | --------------- | ---------------------- |
| `title` > `name`              | `product.title` | Required               |
| `sku` > `product_id`          | `product.sku`   | Required               |
| `price`                       | `price`         | Defaults to `0`        |
| `quantity`                    | `quantity`      | Only sent when present |
| `variant_id` > `sku`          | `variant_id`    | Only sent when present |
| `variant_title` > `variant`   | `variant_title` | Only sent when present |

## Customer data

| Chord source (priority order)                                                                                                                          | Emotive field         | Notes                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------- | ------------------------------------------------------------------------------ |
| `properties.phone` > `context.traits.phone` > `traits.phone`                                                                                           | `customer.phone`      | Required. Converted to E.164 format; see [Phone formatting](#phone-formatting) |
| `properties.email` > `context.traits.email` > `traits.email`                                                                                           | `customer.email`      | Only sent when present                                                         |
| `properties.first_name` > `properties.firstName` > `context.traits.first_name` > `context.traits.firstName` > `traits.first_name` > `traits.firstName` | `customer.first_name` | Only sent when present                                                         |
| `properties.last_name` > `properties.lastName` > `context.traits.last_name` > `context.traits.lastName` > `traits.last_name` > `traits.lastName`       | `customer.last_name`  | Only sent when present                                                         |

## Phone formatting

Emotive requires phone numbers in E.164 format (for example `+18005550100`). Chord converts the number using the customer's country. It reads the country from the `address` object on the order, or from the customer's address traits if the order has none. It then tries the `country` trait and `properties.country`. If no country is present, `US` is assumed. The country must be a 2-letter code such as `US` or `GB`. A full country name can't be converted.

## Validation

Chord skips an order, and logs an error, if any of these is true:

* There is no `order_id`.
* There is no phone number, or the phone number cannot be converted to E.164.
* There are no products.
* A product has no title or no SKU.

## Errors and retries

If Emotive returns a server error (status 500 or higher), Chord retries the request. Other error responses are not retried. See [Errors and retries](/activate/event-streaming/errors-and-retries.md).


---

# 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/email-and-marketing/emotive.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.
