---
title: "Per-product Seller Center funnel and channel mix"
method: POST
path: "/seller-center/products"
tags: ["Seller Center"]
---

# Per-product Seller Center funnel and channel mix

`POST /seller-center/products`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/seller-center/products`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

One row per product for the window, from the Seller Center product-performance rollup.

`funnel` walks impression → click → add-to-cart → order, and `channels` splits the product's GMV across the seller's own video and live content, creator (affiliate) video and live, the product card, and the shop tab (with its own impression / visitor / conversion counts).

Every total is a SUM over the window's daily rows and every rate is recomputed as SUM(numerator) / SUM(denominator) — never an average of the daily rate columns, which would weight a quiet day the same as a peak one. A rate is `null`, not `0`, when its denominator is zero.

Sort with `sort_by` (one of ['gmv', 'orders', 'items_sold', 'customers', 'impressions', 'clicks', 'add_to_cart', 'affiliate_gmv', 'shop_tab_gmv', 'refunds']) and `sort_dir`; page with `page` / `page_size`. Defaults to the last 30 days ending yesterday; max range 90 days. Single-shop only — set `x-shop-id` to a specific shop ID. An empty result is a normal 200 response: Seller Center collection is per-shop and still rolling out.

## Request body

- SellerCenterProductsRequest
  - `start_date` string, date, nullable: First day of the window (inclusive). Defaults to 30 days back.
  - `end_date` string, date, nullable: Last day of the window (inclusive). Defaults to yesterday.
  - `product_id` string, nullable: Restrict to a single product.
  - `sort_by` string: Sort column. One of: ['gmv', 'orders', 'items_sold', 'customers', 'impressions', 'clicks', 'add_to_cart', 'affiliate_gmv', 'shop_tab_gmv', 'refunds'].
  - `sort_dir` 'asc' | 'desc': Sort direction.
  - `page` integer: 1-based page number.
  - `page_size` integer: Products per page (max 200).

## Response `200`

Successful Response

- SellerCenterProductsResponse
  - `shop_id` integer, required
  - `currency_code` string, nullable
  - `start_date` string, required
  - `end_date` string, required
  - `data` SellerCenterProduct[], required
    - `product_id` string, required
    - `product_name` string, nullable
    - `product_status` integer, nullable
    - `cover_image_url` string, nullable
    - `days_with_data` integer, required: Days in the window that had a Seller Center row for this product.
    - `sales` ProductSales, required
      - `gmv` number, required
      - `orders` integer, required
      - `sku_orders` integer, required: SKU-level orders (a multi-SKU order counts once per SKU).
      - `items_sold` integer, required
      - `customers` integer, required: SUM of daily unique buyers; repeat-day buyers are counted twice.
      - `aov` number, nullable: Window GMV / window orders. Null when there were no orders.
      - `refunds` number, required
      - `items_canceled_and_returned` integer, required
    - `funnel` ProductFunnel, required: Impression → click → cart → order, SUMmed over the window.
      - `impressions` integer, required: Product-detail impressions (page views).
      - `unique_viewers` integer, required
      - `clicks` integer, required
      - `unique_clickers` integer, required
      - `ctr` number, nullable: clicks / impressions. Null when there were no impressions.
      - `add_to_cart` integer, required
      - `add_to_cart_rate` number, nullable: add_to_cart / clicks. Null when there were no clicks.
      - `orders` integer, required: SKU orders — the funnel's terminal step.
      - `click_to_order_rate` number, nullable: orders / clicks. Null when there were no clicks.
    - `channels` ProductChannels, required: GMV attribution by the channel the sale came through.
      - `seller` ProductSellerChannel, required
        - `video_gmv` number, required
        - `live_gmv` number, required
      - `affiliate` ProductAffiliateChannel, required
        - `gmv` number, required
        - `video_gmv` number, required
        - `live_gmv` number, required
      - `product_card` ProductCardChannel, required
        - `gmv` number, required
      - `shop_tab` ProductShopTabChannel, required
        - `gmv` number, required
        - `listing_impressions` integer, required
        - `page_views` integer, required
        - `unique_visitors` integer, required
        - `customers` integer, required
        - `items_sold` integer, required
        - `ctr` number, nullable: page_views / listing_impressions on the shop tab.
  - `pagination` PublicApiCorePaginationPaginationMeta, required: Pagination metadata returned in responses.
    - `total_count` integer, required
    - `page` integer, required
    - `page_size` integer, required
    - `total_pages` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) - [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/63ce74b30b5a?raw)
