Lemon Squeezy analytics: revenue by channel
ProductLense connects to Lemon Squeezy and attributes every payment, refund and renewal to the channel, campaign and landing page that first brought the customer. Lemon Squeezy orders, subscriptions and subscription invoices, with refunds from each order.
Lemon Squeezy is a merchant of record: it sells to your customer, collects and remits sales tax and VAT, and pays you the rest. ProductLense records the amount the customer paid and the part the merchant of record kept as the fee, so profit is based on what reaches you.
Setup steps
- In Lemon Squeezy, open Settings → API and create an API key. Note the store id under Settings → Stores.
- In ProductLense, open Settings → Billing connections → Lemon Squeezy and paste the key and store id.
- In Lemon Squeezy → Settings → Webhooks, add a webhook endpoint with the URL ProductLense shows after you save the connection (pattern https://api.productlense.app/api/webhooks/{provider}/{connection_id}).
- Choose a signing secret, tick the events listed below, and paste the same secret into ProductLense.
- ProductLense backfills 12 months of orders and invoices.
Credentials and permissions
| Field | Secret | Where to find it |
|---|---|---|
| API key | Yes, encrypted at rest | Settings → API → create API key. |
| Store ID | No | The numeric store id from Settings → Stores. |
| Webhook signing secret | Yes, encrypted at rest | The signing secret you set when creating the webhook in Settings → Webhooks. |
Webhook
URL pattern, shown with your connection id after you save:
https://api.productlense.app/api/webhooks/lemonsqueezy/{connection_id}Events: order_created, order_refunded, subscription_created, subscription_updated, subscription_cancelled, subscription_payment_success, subscription_payment_refunded, subscription_payment_recovered
Verification: X-Signature header: HMAC-SHA256 of the raw body with your signing secret.
What ProductLense reads
- Customers
- Customers with email.
- Subscriptions
- Subscriptions with status. The subscription object has no price, so revenue comes from orders and invoices.
- Payments
- Orders and subscription invoices.
- Refunds
- The refunded amount on orders and subscription invoices.
- Fees
- Not exposed by the Lemon Squeezy API, so recorded as 0. Profit for this connection is before Lemon Squeezy’s fee.
What ProductLense never touches
- Never creates, changes, refunds or cancels anything: read-only API calls and incoming webhooks only.
- Never moves money, issues payouts, or reads bank account details.
- Never sees full card numbers; providers do not expose them.
- Never sends your customer data to the AI model: Ask and the daily insight see aggregates only.
Match payments to your users
Pass checkout[custom][pl_user_id] in your checkout links to match buyers to visitors by id instead of email.
const url = new URL('https://YOUR_STORE.lemonsqueezy.com/checkout/buy/VARIANT_ID');
url.searchParams.set('checkout[email]', user.email);
url.searchParams.set('checkout[custom][pl_user_id]', user.id);Lemon Squeezy and ProductLense: questions
- Does ProductLense work with Lemon Squeezy?
- Yes. ProductLense connects to Lemon Squeezy with aPI key, store ID, webhook signing secret, backfills 12 months of history, and stays current through signed webhooks plus a nightly reconcile. One connection is included on Starter; Growth and Scale allow every provider at once on the same site.
- What data does ProductLense read from Lemon Squeezy?
- Customers, subscriptions, payments, refunds and fees, read-only. Payments: orders and subscription invoices. Refunds: the refunded amount on orders and subscription invoices. Fees: not exposed by the Lemon Squeezy API, so recorded as 0. Profit for this connection is before Lemon Squeezy’s fee.
- Can ProductLense change anything in my Lemon Squeezy account?
- No. ProductLense only makes read calls and receives webhooks. It never creates, changes, refunds or cancels anything, never moves money, and never sees card numbers. Credentials are encrypted at rest, and the AI features only ever see aggregated numbers, never your customers’ data.
- How does ProductLense match Lemon Squeezy payments to visitors?
- Pass checkout[custom][pl_user_id] in your checkout links to match buyers to visitors by id instead of email. Your site calls identify with the same user id after signup, and ProductLense follows the payment to that visitor’s first touch: source, medium, campaign and landing page.
- How are Lemon Squeezy fees and taxes handled?
- Lemon Squeezy is a merchant of record: it sells to your customer, collects and remits sales tax and VAT, and pays you the rest. ProductLense records the amount the customer paid and the part the merchant of record kept as the fee, so profit is based on what reaches you. Not exposed by the Lemon Squeezy API, so recorded as 0. Profit for this connection is before Lemon Squeezy’s fee.
Connect Lemon Squeezy and see revenue by channel today.
Add the script, connect Stripe or any of 14 other billing providers, and see revenue by channel the same day.