Goals and revenue
Revenue attribution
Revenue attribution connects each completed purchase with the buyer's visits, campaigns and affiliate. Send one goal only after the purchase succeeds.
Purchase and conversion tracking
window.stickybeak("purchase", {
revenue: 49.0,
currency: "USD",
order_id: "ord_1042",
});
Use server-verified order values, never query-string values.
| Property | Rule |
|---|---|
revenue or amount | Required; normal units, from more than 0 to 10,000,000. Rounded to two decimals. |
currency | Optional three-letter ISO code. Invalid or missing values use the site's currency. |
order_id, transaction_id or orderid | Recommended. One order per ID per site, so refreshes cannot duplicate it. |
Any goal carrying revenue or amount becomes an order. Keep both off checkout-start events; value is safe. Provider amounts in cents need dividing by 100, except zero-decimal currencies.
Currency
Set ⚙ Settings → General → Revenue currency before your first sale; it starts as AUD. Orders in other currencies are converted on arrival with the latest European Central Bank reference rates. The original and converted amounts are kept.
An unavailable rate leaves the order in the count but out of revenue totals. Changing the reporting currency does not reconvert past orders.
Where it appears
- Attribution window and reporting currency
- Switch between last-touch and first-touch credit
- Attributed revenue and prior-period change
- Visitors who completed a purchase
- Visitors, orders and revenue by channel
- Recent orders with first and buying visits
| View | Shows |
|---|---|
| Revenue | Revenue, orders, conversion rate, average order, revenue per visitor and channel attribution |
| Recent orders | The latest 25 orders with first visit, buying visit, affiliate and country |
| Goals, Campaigns and Affiliates | Revenue beside the conversion or link that earned it |
The Revenue card ignores page filters. Orders are never archived. Switch between first- and last-touch credit; see Attribution models.
Payment providers
| Provider | Browser signal |
|---|---|
| Stripe | Verified Checkout Session or PaymentIntent on your return page |
| Lemon Squeezy | Checkout.Success overlay event |
| Paddle | checkout.completed event |
| Polar | Verified checkout on your success page |
| PayPal | Completed capture returned to your page |
| Shopify checkout | Purchases are not supported |
Not recorded
- Renewals, refunds and chargebacks: Stickybeak has no payment webhooks.
- Free orders, free trials and negative amounts.
- Purchases blocked by privacy controls, ignored pages or bot detection.
- Revenue in privacy mode: the goal remains, but its properties are discarded.
localhost purchases are ignored. A live-domain test counts as a real order, so use a recognisable amount.

