Polar orders, attributed to the channel that drove them.
A read-only Polar token, the customer_metadata field carrying your TrackRev visitor id, and a webhook on order.created. Subscriptions and one-time sales land in the same channels table as Stripe, Paddle, and Lemon Squeezy.
Webhook first, API poll as the safety net.
Polar's webhook lands order.created in seconds. The hourly API poll reads the orders endpoint and backfills anything the webhook missed — so a webhook flake or a retry storm never costs you a sale.
- Webhook signed with your Polar secret, idempotent on Polar event id
- Hourly poll reconciles against the orders + subscriptions REST API
- Out-of-order events resolve to the latest subscription state, not the first
| Newsletter | 4,212 | $8,420 |
| 3,108 | $5,140 | |
| YouTube | 1,927 | $3,860 |
| Direct | 1,512 | $1,910 |
Both Polar product types, one attribution model.
Polar's one-time digital products and recurring subscriptions are both first-class. Renewal orders carry the original subscription's customer_metadata back through to TrackRev, so a Newsletter signup that becomes a $96 annual subscription credits Newsletter on every renewal.
- order.created handles one-time product sales
- subscription.* events track the recurring lifecycle (active, canceled, past_due)
- Recurring multiplier configurable per program (one-time, N months, lifetime)
Polar revenue sits next to your Stripe, Paddle, and Lemon Squeezy numbers.
No separate analytics surface per processor. The channels table shows total revenue across every connected billing system, with a per-source filter when you need it. Switch attribution models — last-touch, first-touch, linear — and Polar revenue re-attributes alongside the rest.
- Single channels table across Stripe + Paddle + Polar + Lemon Squeezy
- Per-processor filter when you need to reconcile against Polar's dashboard
- Webhook fires sale.created out to your warehouse with the source flag set
| Newsletter | 4,212 | $8,420 |
| 3,108 | $5,140 | |
| YouTube | 1,927 | $3,860 |
| Direct | 1,512 | $1,910 |
Polar + TrackRev in 3 steps.
A pixel on your site, a read-only Polar token, a webhook URL. Two minutes.
Drop the first-party pixel
One script tag, sets a first-party cookie on your apex domain. Exposeswindow.trackrev.visitorId()for your Polar checkout to consume.
<script async
src="https://trackrev.io/p.js"
data-workspace="ws_..."
data-cookie-domain=".yoursite.com"></script>Pass the visitor id through Polar checkout
Polar's create-checkout call accepts acustomer_metadataobject — drop the visitor id in there.
// Create-checkout — drop the TrackRev visitor id in customer_metadata.
const checkout = await polar.checkouts.create({
product_id: "prod_xxx",
customer_email: user.email,
customer_metadata: {
trackrev_visitor_id: window.trackrev?.visitorId() ?? null,
},
success_url: "https://yoursite.com/thanks",
});Paste a read-only API token + webhook URL
Scoped to orders, subscriptions, and customers — read access only. The webhook URL is workspace-scoped and signed.
# Polar Dashboard → Settings → Developers → New token
# Scopes (read-only):
# orders:read
# subscriptions:read
# customers:read
# Paste the polar_oat_... token into TrackRev → Integrations → Polar# Polar Dashboard → Settings → Webhooks → Add endpoint:
https://api.trackrev.io/webhooks/polar/ws_xxxx
# Events:
order.created
subscription.created
subscription.updated
subscription.canceled
refund.createdThe Polar data we sync.
One-time orders
Every order.created webhook is matched on customer_metadata or email, then credited to the originating click.
Subscriptions
Subscription lifecycle events — created, updated, canceled — keep renewal revenue tied to the original click.
Refunds
refund.created reverses revenue and any pending affiliate commissions on the next sync tick.
Hourly reconcile
API poll backfills any orders the webhook missed — no manual replays, no permanently lost sales.
Multi-currency
Native currency stored per order, USD via daily ECB rate for cross-currency channel totals.
Email fallback
Missing customer_metadata? Email-to-visitor binding catches the attribution anyway.
Run an affiliate program on Polar without a second tool.
Pro-tier TrackRev workspaces flow Polar orders through the same commission engine as Stripe and Paddle. A partner's tagged TrackRev link drops the visitor id into Polar's customer_metadata; the webhook closes the loop; the commission row writes itself. Refunds via refund.created reverse pending commissions before payout.
- Commissions accrue from real Polar orders, not raw clicks
- Recurring commissions follow Polar subscription renewals
- Refunds + cancellations reverse pending payouts automatically
- Monthly payouts via Stripe invoice, PayPal Payouts, or manual CSV
| Newsletter | 4,212 | $8,420 |
| 3,108 | $5,140 | |
| YouTube | 1,927 | $3,860 |
| Direct | 1,512 | $1,910 |
Polar integration FAQ
Connect Polar. Find out which channel actually drives subs.
Webhook + API safety net. Free tier covers 1,000 events / month. No card to start.