---
updatedAt: 2026-08-26T19:48:12.000Z
agentTools:
  projectIndex: https://dev.kevel.com/llms.txt
---

# Send Merchant data in Purchase Events

Each purchase you send to Kevel can record a **Merchant** — the seller or sales channel behind that line item — via the optional `merchantId` parameter. Setting it enables [merchant-aware attribution](https://dev.kevel.com/docs/attribution-overview#merchant-aware-attribution) and performance reporting on merchants.&#x20;

Recording `merchantId` on your purchases unlocks:

* **Merchant-aware attribution in the Kevel Ad Server** — the purchased Merchant can be used as<br />an attribution condition, so sales are credited to the right seller. See [merchant-aware attribution](https://dev.kevel.com/docs/attribution-overview#merchant-aware-attribution) for details.&#x20;
  * Merchant-aware attribution is configured on the Ad's attribution settings **in addition to**<br />sending `merchantId` in the purchase event.&#x20;
* **Merchant reporting in the Kevel Ad Server** — Merchant becomes a native reporting dimension. You can break attributed purchased line items and purchased GMV down by the **purchased** Merchant, and compare it against the **promoted** Merchant (the seller of the advertised product).&#x20;
* **Merchant & ROPO reporting in Console** — a Campaign's attributed purchases broken down by Merchant ID or name. See [Merchant & ROPO reporting](https://dev.kevel.com/docs/merchant-ropo-reporting).

## The `merchantId` parameter

`merchantId` is an optional string on the [Purchase Event:](https://dev.kevel.com/reference/purchase-event)

```
GET https://e-{networkId}.adzerk.net/c/{networkId}/purchase
      ?userKey={userKey}
      &productId={productId}
      &timestamp={ISO-8601}
      &quantity={quantity}
      &price={price}
      &merchantId={merchantId}      # optional — the Merchant for this line item
```

Tips:&#x20;

* Send **one Purchase Event per line item**. Set `merchantId` on each so every purchased item carries the Merchant it belongs to.&#x20;
* Use **stable, consistent** values — the same Merchant should always send the same `merchantId`, in order to enable grouping by both IDs and names in reporting.&#x20;

**If Kevel Audience emits your purchases:** Audience sends one Purchase Event per line item when it detects an order. Map the order's **source / channel** to `merchantId` in your Audience purchase configuration so the in-store/online (or seller) value flows through automatically. See[ Attribution for Kevel Ad Server](https://docs.audience.kevel.com/collect/kevel-attribution).

## Example: Marketplace seller

Set `merchantId` to the **seller or storefront that fulfilled the line item**. On a marketplace, that lets Console attribute sales to individual sellers and split first-party vs. third-party inventory.

```
# Line item fulfilled by seller "northgoods"
GET /c/{networkId}/purchase?userKey=abc123&productId=SKU-9912
      &timestamp=2026-08-25T16:27:20Z&quantity=2&price=45.00
      &merchantId=northgoods&transactionId=ORDER-55231
```

## Example: In-store vs. online sales

For brick-and-mortar retail, use `merchantId` to record **where the purchase happened** rather than which seller made it. Pick a small, fixed set of values — e.g. `in-store` and `online`, or your physical-store and web-store identifiers — and send the right one on each purchase.

```
# An in-store purchase
GET /c/{networkId}/purchase?userKey=abc123&productId=SKU-4410
      &timestamp=2026-08-25T10:02:00Z&quantity=1&price=560.96
      &merchantId=in-store&transactionId=POS-88120
```