Integrations·Payments

Find the channel behind each Paddle transaction.

Connect Paddle Billing with an API key. Every purchase, renewal and refund then reaches Spreelytics automatically, credited to the channel the buyer came from.

paddle · payments · 30d

purchase · Paid social$59
purchase · Organic search$129
purchase · Direct$29

revenue by channel · last-touch · 30-day window

Organic search 34%Paid social 28%Direct 21%

What it does

Your Paddle revenue, by channel.

Transactions arrive as purchase events and flow into goals, the overview and the acquisition reports.

Transactions on their own

Connecting creates the notification in your Paddle account. Each transaction then arrives by itself, without you sending any revenue events.

  • Purchases and renewals
  • Approved refunds, partial included
  • Counted once, even when Paddle retries

Attributed to a channel

Pass the visitor id in customData when you open the checkout. Paddle.js takes it in the browser, so attribution needs no server code at all.

  • spreelytics_visitor_id in customData
  • Works with the Paddle.js overlay
  • Last-touch or linear, 1–90 day window

One reporting currency

Charge in as many currencies as you like. Each payment is converted once into your reporting currency at the rate for the day it happened, then frozen.

  • Converted at that day’s rate
  • Past revenue never moves
  • The original amount is kept

How it works

Use it in three steps.

  1. 01

    Connect Paddle

    In Settings → Revenue, paste a Paddle Billing API key that can create notifications and read Transactions and Adjustments. Connecting sets up the webhook for you.

  2. 02

    Pass the visitor id

    Open the checkout with customData: { spreelytics_visitor_id: Spreelytics.getVisitorId() }.

  3. 03

    Read revenue by channel

    From the moment you connect, payments land on the Revenue page, with MRR and ARR for subscriptions, and as purchase events in goals, the overview and the acquisition reports.

FAQ

Questions about this one.

What people ask before they switch it on.

What key does it need?

A Paddle Billing API key with Write on Notification settings, and Read on Transactions and Adjustments. Connecting uses it to set up the webhook that delivers your transactions. The read permissions let you import transactions from before you connected. Paddle Classic is not supported.

Where does the visitor id go?

In customData when you open the checkout: Paddle.Checkout.open({ customData: { spreelytics_visitor_id: Spreelytics.getVisitorId() } }). Add spreelytics_session_id beside it if you like.

What if a payment has no visitor id?

It is still recorded and counts toward your totals. It just cannot be traced to a channel. The Channels list counts it as Direct and the Sources list as Direct/None. The URLs and UTM lists leave it out.

Do payments count toward my event allowance?

Each payment counts as one event, the same as a custom event. Refunds do not count. Payments you import from before you connected do not count either.

Can I send payments from my own server as well?

Yes, for payments Paddle does not see. The revenue API is in the docs. If you also send a Paddle payment that way under a different id, it is counted twice.

See your own numbers today.

Free up to 100k events a month · no credit card

Contact

Tell us what you need.

A real person reads these. We usually reply within one working day.

Or email us directly at contact@spreelytics.com.