Endpoint
Payload
Each
order_items[] entry:
What’s inside the video-view / add-to-cart signals
whatmore_video_view and whatmore_add_to_cart are JSON-encoded strings (not objects) —
the App SDK / widget produces them and you pass them straight through from localStorage. You
don’t build these by hand. Decoded, the string is an array of small objects:
A successful call returns HTTP 200 with an empty body (
{}). An item that matches no
video signal is simply left unattributed — it is not an error.
Ready-to-use snippet (web)
On a web storefront the video widget records viewed / added-to-cart products intolocalStorage. Call this once on your order-confirmation page — it reads those signals and
reports the order:
orderItems from your order (product_id, item_id, sku, price, quantity,
currency per line), then call sendOrderTrackingRequest({ orderId, orderItems, storeId, token }).
How attribution works
- Whatmore matches each order item to the SDK signals by
product_id(yourclient_product_id). - Attribution is therefore per line item — items driven by a video are attributed; items bought independently are not. A single order can mix both.
whatmore_video_viewandwhatmore_add_to_cartcarry thewidget_infothat identifies which surface/video is credited.
Idempotency & retries
- Orders are de-duplicated by
order_id. If an order is submitted twice, the duplicate is rejected with HTTP 404 (Order Id already exists.) rather than double-counted. - This makes retries safe: re-sending the same
order_idafter a network failure cannot create a duplicate. Use a stableorder_idand treat the duplicate response as success. - Full status-code list is on Errors & Conventions.
Send one tracking call per completed order. The
whatmore_video_view / whatmore_add_to_cart
strings are produced by the App SDK and passed through your checkout — see
App SDK → attribution.