Documentation

Dodo Payments guide

Current successful payments with charge_type=renewal are classified as recurring revenue. Older payloads without that field retain the original payment behavior. Official payment schema.

Existing payment.succeeded and refund.succeeded normalization, customer correlation, return-page matching, and settlement fields remain compatible. Payment identity is payment_id; partial/full refund identity is refund_id linked to its payment_id. Missing refund IDs are rejected instead of synthesizing a delivery-based revenue identity. Official webhook overview.

Standard Webhooks verification authenticates id.timestamp.rawBody using the decoded whsec_ secret, HMAC-SHA256 and base64 v1 signatures, with five-minute signed timestamp tolerance. The adapter now uses bounded, fatal UTF-8 decoding and Web Crypto constant-time verification; billing's independent adapter is unchanged.

Static /buy/ links officially accept metadata_*, so the fragment supplies metadata_ml_visitor_id and metadata_ml_session_id only for explicitly configured checkout origin/path pairs. Server-created sessions can set metadata directly. Official payment-link metadata fields.

New settings keep encrypted configuration and the legacy product-filter column synchronized. The legacy Dodo webhook handler remains exported; the existing /api/webhooks/dodo/:siteId still matches the generic route. An optional compatibility subrouter alias is documented in the WS-C report.

Webhook name/email fields no longer populate analytics visitors. Existing identified visitors continue to correlate through customer IDs and explicit metadata. For a historical converted payment with no source receipt, replay its original signed payment to restore source-currency information; pending refunds then reconcile safely. No exchange rate is guessed from an incomplete historical row.

Questions, answered.

How do I use dodo payments with AnalyticFast?

Follow the Dodo Payments 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.