Integration · Polar

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.

Revenue · last 10 days
How it works

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
Top channels · 30 days
Newsletter4,212$8,420
Facebook3,108$5,140
YouTube1,927$3,860
Direct1,512$1,910
Subscriptions + one-time

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)
Revenue · last 10 days
Same dashboard

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
Top channels · 30 days
Newsletter4,212$8,420
Facebook3,108$5,140
YouTube1,927$3,860
Direct1,512$1,910
Setup

Polar + TrackRev in 3 steps.

A pixel on your site, a read-only Polar token, a webhook URL. Two minutes.

1

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.

Your site (once)
<script async
  src="https://trackrev.io/p.js"
  data-workspace="ws_..."
  data-cookie-domain=".yoursite.com"></script>
2

Pass the visitor id through Polar checkout

Polar's create-checkout call accepts acustomer_metadataobject — drop the visitor id in there.

Polar SDK / REST
// 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",
});
3

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 → Developers → Tokens
# 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 → Settings → Webhooks
# Polar Dashboard → Settings → Webhooks → Add endpoint:

https://api.trackrev.io/webhooks/polar/ws_xxxx

# Events:
order.created
subscription.created
subscription.updated
subscription.canceled
refund.created
What TrackRev tracks from Polar

The 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.

Polar + affiliate program

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
Top channels · 30 days
Newsletter4,212$8,420
Facebook3,108$5,140
YouTube1,927$3,860
Direct1,512$1,910

Polar integration FAQ

Webhooks land in seconds. If a webhook is delayed or replayed, the hourly API poll backfills any missed orders within the next sync window. You won't lose a sale to a webhook flake.

Connect Polar. Find out which channel actually drives subs.

Webhook + API safety net. Free tier covers 1,000 events / month. No card to start.