Lemon Squeezy + Spectacle

Unify your entire
marketing ecosystem.

Every order and renewal tied to the campaign that earned it

Sign in to install

Integration Details

Built by

Spectacle

Category

Payments

Setup Time

About 5 minutes [verify]

Sync Frequency

Real-time

Authentication

[verify] API key; docs page missing

Compatible With

Any Lemon Squeezy store [verify]

Overview

Spectacle connects to Lemon Squeezy in about 5 minutes and attributes every successful order, and every refund, to the marketing touchpoints that brought the customer in [verify]. Lemon Squeezy, as merchant of record, records the sale, the tax, and the payout. Spectacle records the journey behind it, from first ad click to the order webhook, and reports revenue by channel, campaign, and keyword with refunds already subtracted.

At a glance

  • Category: Payments
  • Setup time: About 5 minutes [verify]
  • Authentication: [verify] API key; docs page missing
  • Lemon Squeezy plan: Any Lemon Squeezy store [verify]
  • Spectacle plan: All Spectacle plans (Essential, Scale, Enterprise); company-level attribution on Scale and Enterprise
  • Direction: Lemon Squeezy → Spectacle. Revenue then flows Spectacle → ad platforms as conversion value
  • Objects: [verify] Orders, refunds, subscription payments, customer email
  • Sync: [verify] near real time, webhook-driven
  • Docs: /docs/payment-providers/lemon-squeezy [404 at time of writing; create or correct]
  • Marketplace: Lemon Squeezy has no app marketplace [verify]; link Docs instead

The gap in Lemon Squeezy's own reporting

Lemon Squeezy is built to take payment on your behalf, handle VAT and sales tax in every jurisdiction, and pay you out. Its reporting follows that job: revenue by product, by variant, by country, and by period. It has 0 marketing dimensions. The store dashboard cannot tell you that the customer who paid $49 today first arrived from a YouTube review in March, or that renewals from one campaign outlast renewals from another by 6 months.

Ad platforms cannot fill the gap either. A Google Ads or Meta pixel fires at checkout with whatever value you passed, then never hears about the refund a week later or the 11 renewals that follow.

Spectacle sits between them: a first-party tracking snippet on your site, your ad accounts connected for cost, and Lemon Squeezy's order events dropped onto the same customer journey as the clicks that preceded them.

What syncs

  • Order created (paid) [verify]: One revenue event on the customer's journey, amount and currency from the order
  • Order refunded [verify]: One negative revenue event, so attributed revenue is net
  • Subscription payment succeeded [verify]: Renewal revenue credited to the journey that acquired the subscriber
  • Customer email [verify]: Matched to the person identified on your site with spectacle.identify() and an email trait
  • Custom data on checkout [verify]: A Spectacle user id passed at checkout for a deterministic match, mirroring the Stripe metadata approach

Subscription lifecycle events (created, cancelled, paused, resumed) and license keys are not confirmed as consumed [verify]. The consumed event list belongs in the Lemon Squeezy docs once that page exists. This page summarises; Docs is the source of truth.

What you get

  • Net revenue by campaign. Every paid order sits on a journey, so a campaign is credited with what the store paid out on it, refunds subtracted [verify].
  • Recurring revenue tied to the acquisition journey. A renewal 11 months after the first order arrives with no campaign attached. Spectacle credits it to the journey that acquired the subscriber [verify], so 12-month value by channel becomes a report.
  • One reporting currency. Lemon Squeezy charges in the customer's currency; Spectacle reports in your workspace currency so 1 campaign selling into 5 markets has 1 return figure [verify].
  • Cost per paying customer by channel. Ad spend from Google, Meta, LinkedIn, and Microsoft Advertising joined to Lemon Squeezy orders, so a channel that produces cheap trials and no orders shows up as what it is.
  • Order value back to ad platforms. Send first orders or every order as a conversion with value to Google Ads and Meta so Smart Bidding optimises for revenue [verify per platform].

Pairs with

Lemon Squeezy + Google Ads (order value as a conversion) · Lemon Squeezy + Meta Ads · Lemon Squeezy + Segment for product events · Alternative for direct billing: Stripe

How Spectacle and Lemon Squeezy work together

  1. Connect Lemon Squeezy. Settings → Integrations → Lemon Squeezy → Connect, and paste a store API key [verify]. Spectacle registers the webhooks it needs [verify].
  2. Make customers matchable. Call spectacle.identify() with the email trait at signup, so the checkout email resolves to the visitor's journey. Pass a Spectacle user id in checkout custom data for a deterministic match [verify].
  3. Revenue lands on journeys. Each paid order becomes a revenue event, each refund a negative one, attributed to the touchpoints inside the customer's journey window.

Step by step with screenshots: Connect Lemon Squeezy.

What you gain by connecting Lemon Squeezy

  • Net revenue by campaign. Every paid order sits on a journey, so a campaign is credited with what the store paid out on it, refunds subtracted [verify].
  • Recurring revenue tied to the acquisition journey. A renewal 11 months after the first order arrives with no campaign attached.
  • One reporting currency. Lemon Squeezy charges in the customer's currency; Spectacle reports in your workspace currency so 1 campaign selling into 5 markets has 1 return figure [verify].
  • Cost per paying customer by channel. Ad spend from Google, Meta, LinkedIn, and Microsoft Advertising joined to Lemon Squeezy orders, so a channel that produces cheap trials and no orders shows up as what it is.
  • Order value back to ad platforms. Send first orders or every order as a conversion with value to Google Ads and Meta so Smart Bidding optimises for revenue [verify per platform].

See the integration in practice

A subscription business could see monthly revenue in its merchant-of-record dashboard and cost per trial in its ad platforms, and nothing in between. With payments connected, 12 months of member revenue, renewals included, traced back to the acquisition journey of each customer. The channel with the cheapest trials had the lowest 12-month value per member; the channel Marketing had been asked to cut had the highest. (Anonymised; this customer bills through Stripe, and the Lemon Squeezy integration follows the same shape.)

About Lemon Squeezy

Every order and renewal tied to the campaign that earned it

Popular Lemon Squeezy resources and guides

Understand how to connect your tools, improve attribution, and build better reporting across your revenue journey.

Build

Create integrations that connect your platform with Spectacle attribution and reporting workflows.

Learn more

Get listed

Publish your integration in the Spectacle directory and help teams discover new connected workflows.

Learn more

API & Docs

Explore Spectacle APIs, setup guides, and developer documentation to build custom workflows and integrations.

Learn more

FAQ

Does Spectacle integrate with Lemon Squeezy?

On request. Ask us before or during the trial and we connect your Lemon Squeezy store so paid orders and refunds land on the customer journey as revenue events.

Which Spectacle plan do I need for the Lemon Squeezy integration?

All Spectacle plans. Spectacle's tiers are Essential, Scale, and Enterprise; payment integrations are not gated by tier.

How does Spectacle match a Lemon Squeezy order to a website visitor?

By the customer email on the order, matched to the email trait you send with spectacle.identify(), or by a Spectacle user id passed in checkout custom data [verify]. Without an identify call the order cannot be placed on a journey.

Why doesn't my Lemon Squeezy revenue match the conversion value in Meta Ads?

Meta counts a pixel value at checkout inside its own window and model, and never sees a refund or a renewal. Spectacle takes the amount from Lemon Squeezy, subtracts refunds, applies one journey window across every channel, and reports one figure that reconciles to your payouts.

Does Spectacle track Lemon Squeezy subscription renewals?

Renewal payments are attributed to the journey that acquired the subscriber [verify]. Subscription lifecycle events such as cancellations and pauses are not confirmed as consumed; plan changes can be sent with spectacle.track() using the mrr, arr, and plan properties.