Lantern Analytics for Paddle
Paddle analytics: which channels bring your paying customers
Connect Paddle Billing to Lantern with a read-only API key and see revenue, renewals and refunds by channel, referrer, campaign and country.
What Paddle can't tell you
Paddle runs your billing as merchant of record. Lantern shows the marketing side: which Google search, launch post or AI answer led to each transaction.
Lantern is web analytics for founders. Its script records where every visitor comes from: Google, Reddit, a campaign, or an AI assistant like ChatGPT. Connect Paddle and each payment is credited to the channel, referrer, campaign, country and landing page that first brought that customer, even when they paid days or weeks later.

How Lantern connects to Paddle
- API key: A Paddle API key with read permission on Transactions and Adjustments only. Lantern imports your last 90 days.
- Webhook: Optional: a notification destination under Developer tools → Notifications, with its secret key pasted into Lantern.
- History on connect: The last 90 days.
Webhook events to subscribe to: transaction.completed, adjustment.created, adjustment.updated. Everything is set up from your site's Settings → Revenue panel, which shows the webhook URL and the exact steps.
Set it up
- Start a free trial and add your website. Paste the setup prompt into your coding agent, or add one script tag.
- Pass the visitor id to Paddle: put
lantern_visitor_idin customData in Paddle.Checkout.open (stored as custom_data). If the customer is signed in, addlantern_user_idwith the id you pass toidentify. - Open Settings → Revenue → Paddle in Lantern and connect it.
Paddle.Checkout.open({
items: [{ priceId: "pri_123", quantity: 1 }],
customData: {
lantern_visitor_id: window.lantern?.visitorId?.(),
lantern_user_id: user?.id ?? "",
},
});Renewals and refunds don't need tagging. They share the customer and subscription of the first payment, so Lantern credits them to the same channel.
Good to know
- custom_data set at checkout stays on the subscription, so renewals carry it too.
- Refunds are approved adjustments, subtracted from the transaction they belong to.
Questions
Does Lantern support Paddle Classic?
Lantern reads Paddle Billing's API and webhooks.
Can I add the visitor id without a server?
Yes. Paddle.js opens checkout in the browser, so you can pass customData straight from the page.
Other payment providers
Lantern also connects to Razorpay, Cashfree, Stripe, Dodo Payments, Polar and Lemon Squeezy. Connect more than one to the same site and Lantern adds them up.