Skip to content

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.

Lantern's Sources card with a revenue column next to visitors for each channel: Organic Search, Direct, Social, AI, Referral, Email and Paid
Revenue by channel on Lantern's dashboard, next to the visitors each channel sent.

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

  1. Start a free trial and add your website. Paste the setup prompt into your coding agent, or add one script tag.
  2. Pass the visitor id to Paddle: put lantern_visitor_id in customData in Paddle.Checkout.open (stored as custom_data). If the customer is signed in, add lantern_user_id with the id you pass to identify.
  3. Open Settings → Revenue → Paddle in Lantern and connect it.
Paddle.js, opening checkout in the browser
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.