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]
Resources
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.
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.
spectacle.identify() and an email traitSubscription 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.
Lemon Squeezy + Google Ads (order value as a conversion) · Lemon Squeezy + Meta Ads · Lemon Squeezy + Segment for product events · Alternative for direct billing: Stripe
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].Step by step with screenshots: Connect Lemon Squeezy.
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.)
Every order and renewal tied to the campaign that earned it
Understand how to connect your tools, improve attribution, and build better reporting across your revenue journey.
Create integrations that connect your platform with Spectacle attribution and reporting workflows.
Learn more
Publish your integration in the Spectacle directory and help teams discover new connected workflows.
Learn more
Explore Spectacle APIs, setup guides, and developer documentation to build custom workflows and integrations.
Learn more
FAQ
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.
All Spectacle plans. Spectacle's tiers are Essential, Scale, and Enterprise; payment integrations are not gated by tier.
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.
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.
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.