Revenue attribution

Connect Shopify orders to experiments — through the Proa app or a manual webhook — and learn how to read the numbers honestly.

Experiments are measured in paid orders, and orders can reach Proa two ways: through the Proa Shopify app, set up when you connect the store, or through a manual webhook you register yourself. Whichever way they arrive, Proa consumes the order identifiers, currency, totals, timestamp, and its own attribution attributes. Customer names, emails, phones, and addresses are never read or stored.

With the Proa app

If the store is connected through the Proa Shopify app, order attribution needs no separate setup: paid orders flow through the app. Connecting also provisions the checkout pixel, which is what adds the checkout steps to the experiment funnel and the coverage among paid orders — Site settings shows whether the pixel is in place, with a Provision pixel button when it is not.

The manual webhook

Without the app, two settings are required, and neither works alone.

1. In the Proa dashboard

Open Site settings → Shopify revenue attribution and set:

  • Webhook secret: your Shopify app's client secret. It is write-only; Proa never displays it back. Losing it means setting a new one.
  • Shop domain: the store's permanent <shop>.myshopify.com domain, never a custom storefront domain.

Why both: Shopify signs webhooks with a secret shared by every store that installed the app, so a valid signature alone only proves "some store". The shop domain is what makes a delivery belong to your store; deliveries that do not match record nothing.

2. In Shopify

Copy the Webhook URL shown on the same card and register it in Shopify admin → Settings → Notifications → Webhooks, as an Order payment webhook, JSON format.

Walk your own checkout once

Themes differ wildly in how they reach checkout. Before trusting the numbers, place one test order through each checkout path your theme offers and confirm it lands attributed.

Two things to expect rather than discover:

  • Dynamic checkout buttons ("Buy it now") skip the cart. While an experiment is running, Proa marks the product's buy form with the shopper's assigned variant — on any page — so Buy it now orders count for the variant the shopper actually saw. Walking both paths once is still how you confirm it holds on your theme; in a template test, walk each template's buy flow.
  • A cart from an earlier visit keeps its attribution if the visitor returns another way.

How to read the report

  • Exposure means the variant was actually seen: visible in the viewport long enough to count, at most once per page view. It is not a person, and two exposures are not two people.
  • Revenue is order-level and directional: "orders carrying this variant produced X". There is no join between the person who saw and the person who bought, and the numbers get weaker the longer your purchase cycle is.
  • Unattributed orders are first class. They are never dropped or guessed at; they are reported as a share right next to the attributed numbers, precisely so you can see how reliable those numbers are. A high unattributed share means "trust these numbers less", not "data was lost".
  • Currency never mixes. A multi-currency shop never has unlike money summed into one row.