# Commerce

> Send your shop's products, orders and carts to Emailit to see the revenue your emails bring, personalize content with products and coupons, and reach buyers and abandoned carts. Alpha: open to the Emailit team only.

Commerce connects your online shop to Emailit. Once your products, orders and carts are in Emailit, you can see how much revenue each campaign and automation brings, put products, coupon codes and carts into emails, segment contacts by what they buy, and start automations when someone orders or leaves a cart behind.

> **Commerce is in alpha:** Commerce is open only to the Emailit team while we test it. See [Who can use Commerce](#who-can-use-commerce).

## Who can use Commerce

During the alpha, Commerce is available to Emailit platform admins only. A workspace Admin role isn't enough.

| Where | Emailit team | Everyone else |
| --- | --- | --- |
| Dashboard | **Email Marketing → Commerce**, revenue in campaign reports, A/B tests won by orders or revenue, the **Products & coupons** picker, purchase triggers in automations, commerce events in webhooks and the **Purchases** card on contacts | **Commerce** in the menu shows **Soon** and can't be opened. The rest is hidden, but a campaign or automation that already uses a commerce feature still shows it. |
| API and MCP | The products, orders, carts, coupons and commerce APIs, revenue in [campaign statistics](/docs/api-reference/campaigns/stats/), and the commerce MCP tools | `403` with `error: "commerce_alpha"`. Campaign statistics leave out `commerce`. |
| API keys and the tracking script | They work in workspaces owned by an Emailit platform admin. | `403` with `error: "commerce_alpha"`. The tracking script's `product`, `cart` and `purchase` commands are rejected with the same message, and page views are ignored. |

Campaigns and automations that already use a commerce feature keep working for everyone in the workspace.

## What you can do

| Feature | Where |
| --- | --- |
| Revenue from email, top products and top campaigns | **Email Marketing → Commerce** |
| Revenue, orders and conversion rate per campaign, and A/B tests won by revenue | [Campaign reports](/docs/campaigns/reports/), [A/B testing](/docs/campaigns/ab-testing/) |
| Product grids, recommendations, unique coupon codes and the cart in emails | [Products, coupons and the cart](/docs/campaigns/products-and-coupons/) |
| Segments by orders, spend, churn risk, products bought or viewed, carts and coupons | [Segments](/docs/api-reference/segments/create/#activity-rules) (also in alpha) |
| Automations for abandoned carts and new orders | [Automation triggers](/docs/automations/triggers/) |
| Take buyers out of a sequence, or branch on what they bought | [Exit conditions and goals](/docs/automations/exits-and-goals/), [Condition (If/Else)](/docs/automations/steps/#condition-ifelse) |
| A purchase profile on each contact | The contact's page in the dashboard |

## Get your shop's data in

| Data | How it gets to Emailit |
| --- | --- |
| **Products** | The [Products API](/docs/api-reference/products/), or the tracking script's product views, which add products that aren't in your catalog yet. |
| **Orders** | The [Orders API](/docs/api-reference/orders/create/) from your shop's backend, with a full access key or an **Events Only** key. The tracking script's purchase command works too, but browsers can block it. |
| **Carts** | The tracking script on every cart change, or the [Carts API](/docs/api-reference/carts/upsert/). |
| **Product views and site activity** | The [tracking script](/docs/events/tracking-script/) of [Event tracking](/docs/events/). |

[Connect your shop](/docs/commerce/connect-your-shop/) covers the API and the tracking script.

An order with an email address that isn't a contact yet creates the contact. The contact isn't subscribed to any audience unless the order says the buyer accepts marketing, so campaigns don't reach buyers who didn't opt in.

## How orders are credited to emails

Each new order is credited to the campaign or automation email the buyer last **clicked** within the click window before the order (5 days by default). Without a click, it's credited to the email they last **opened** within the open window (1 day by default). Clicks win over opens because some email apps load images, and so count an open, without anyone reading the email.

- The window counts from the click or open, not from when the email was sent: someone who clicks a week-old campaign and buys the next day counts.
- Visitors who arrive from an email link carry a signed identity, so the purchase is credited even when it's placed in another browser session, as long as the click is in the window.
- Orders imported with [`historical`](/docs/api-reference/orders/batch/) aren't credited to emails and don't start automations.
- Revenue is the order total minus refunds. Canceled orders don't count.

Each credited order shows **Credited to** with the campaign or automation and whether it came from a click or an open.

## Settings

**Email Marketing → Commerce → Settings** has:

| Setting | Default | Allowed values |
| --- | --- | --- |
| **Currency** | USD | A three-letter currency code, used for orders and carts that don't name one. |
| **Click window (days)** | 5 | 1 to 30. |
| **Open window (days)** | 1 | 0 to 30. 0 credits clicks only. |
| **Cart abandoned after (minutes)** | 60 | 15 to 10,080. A known contact's cart that stays unchanged this long becomes abandoned. |

The settings page also has the tracking script snippets and an example order request. In the API, use [Retrieve commerce settings](/docs/api-reference/commerce/get-settings/) and [Update commerce settings](/docs/api-reference/commerce/update-settings/).

## The Commerce pages

- **Overview** shows, for the last 7, 30 or 90 days: **Revenue**, **Revenue from email** (split into campaigns and automations), **Orders** with the average order value, **Customers** (new and returning), revenue per day, carts (active, abandoned, abandoned value and recovered), **Top products** and **Top campaigns by revenue**. Amounts are per currency, and the main currency is shown first.
- **Products**, **Orders**, **Carts** and **Coupons** list what Emailit has, with search and filters. Select an order to see its items and the email it's credited to.
- **Settings**, see above.

### Abandoned carts

A cart becomes **Abandoned** when it belongs to a known contact, has items and hasn't changed for the abandonment delay. Emailit then emits [`cart.abandoned`](/docs/webhooks/events/cart/abandoned/), which can start an [abandoned cart automation](/docs/automations/recipes/#abandoned-cart-reminder). A cart becomes **Converted** when an order names it with `cart_id`, or when the same contact places an order.

### Purchase profile

A contact with orders, carts or site activity has a **Purchases** card on their page: orders, total spent, average order, last order, expected next order, last activity on your site, time zone, **Churn risk**, their open cart, recently viewed products and recent orders.

**Expected next order** is the last order plus the contact's average time between orders, from the second order on. **Churn risk** compares the time since the last order with that gap (at least 14 days), or with 90 days for one-time buyers: **low** within it, **medium** up to twice as long, **high** after that.

## Events

Commerce records what happens in your shop as system events, in the same place as every other event. They show on **Email API → Events** (scope **System**), in the contact's activity, in the [Events API](/docs/api-reference/events/list/), in [webhooks](/docs/webhooks/) and in automations:

| Event | When |
| --- | --- |
| [`order.placed`](/docs/webhooks/events/order/placed/) | An order is stored for the first time, except historical imports. Starts **Placed an order** automations, and ends runs with that exit condition. |
| [`order.updated`](/docs/webhooks/events/order/updated/) | A stored order changes, for example its status or a refund. |
| [`cart.updated`](/docs/webhooks/events/cart/updated/) | A cart is created, or its items, total, status or contact change. Sending the same cart again doesn't fire it. |
| [`cart.abandoned`](/docs/webhooks/events/cart/abandoned/) | A cart is abandoned. A cart that changes and goes idle again fires it again. Starts **Abandoned a cart** automations. |
| [`product.viewed`](/docs/webhooks/events/product/viewed/) | The tracking script records a product view, from a contact or an anonymous visitor. |

`cart.updated` and `product.viewed` come from site traffic, so a webhook that receives **All events** doesn't get them. Subscribe to them by name, the same as [workspace and custom events](/docs/webhooks/event-types/#workspace-and-custom-events). Commerce events also update [tracked segments](/docs/segments/tracked/) with purchase, cart or product view rules within about a minute.

## Next steps

  - [Connect your shop](/docs/commerce/connect-your-shop/): Send orders from your backend and add the tracking script.
  - [Products, coupons and the cart](/docs/campaigns/products-and-coupons/): Personalize emails with your catalog.
  - [Coupons](/docs/commerce/coupons/): Unique codes for every recipient.
  - [Automation recipes](/docs/automations/recipes/): Abandoned cart and thank-you flows.

---
Source: https://emailit.com/docs/commerce/
