Documentation

Polar guide

Subscribe to order.paid, refund.created, and refund.updated. Standard Webhooks headers authenticate id.timestamp.rawBody with HMAC-SHA256 and base64 v1 signatures. Secrets generated since 2026-09-08 decode the whsec_ suffix; legacy Polar secrets use the entire literal string. The verifier supports both documented key generations and five-minute timestamp freshness. Official delivery/key migration guide.

Paid orders use data.id, total_amount, currency, product_id, customer_id, subscription_id and metadata. Both subscription_cycle and subscription_meter_cycle are classified as recurring revenue; the latter bills usage at the end of a meter period. Order webhook, order lifecycle.

Only successful refund resources count. Use refund id, original order_id, and amount + tax_amount in currency. Do not also subscribe order.refunded for ingestion: that order payload is a cumulative balance and would duplicate refund resources. Refund event, official schema, refund model and totals.

Put ml_visitor_id and ml_session_id in server-created checkout metadata. Hosted links support reference_id and UTMs, but arbitrary metadata query keys were not established. The tracker preserves existing application references and does not auto-tag Polar links. Checkout links.

No live checkout, legacy endpoint, or new endpoint delivery was exercised. Missing refund success status fails closed even if a generated example omits the status field.

Questions, answered.

How do I use polar with AnalyticFast?

Follow the Polar instructions on this page using your own website’s Site ID and configuration. Verify a real event before relying on the reports.

Where can I get setup help?

Contact support@analyticfast.com with the website domain and a redacted description. Do not send API tokens, signing secrets or personal customer data.