Stripe + Spectacle

See the campaigns behind every payment—refunds included.

One connection adds this tool to your revenue journey—joined with your website, CRM and ad activity from first click to closed-won.

Sign in to install

Integration Details

Built by

Spectacle

Category

Payments

Setup Time

About 5 minutes

Sync Frequency

Real-time

Authentication

OAuth 2.0 (Stripe Connect) or restricted API key

Compatible With

Any Stripe account using Payment Intents

Overview

Spectacle connects to Stripe in about 5 minutes and attributes every successful payment, and every refund, to the marketing touchpoints that brought the customer in. Stripe records the money. Spectacle records the journey behind it, from first ad click to payment_intent.succeeded, and reports revenue by channel, campaign, and keyword with refunds already subtracted.

At a glance

  • Category: Payments
  • Setup time: About 5 minutes
  • Authentication: OAuth 2.0 (Stripe Connect) or restricted API key
  • Stripe plan: Any Stripe account using Payment Intents
  • Spectacle plan: All Spectacle plans (Essential, Scale, Enterprise); company-level attribution on Scale and Enterprise
  • Direction: Stripe → Spectacle. Revenue then flows Spectacle → ad platforms as conversion value
  • Objects: payment_intent.succeeded, refund.created, Stripe Customer email and metadata
  • Sync: Near real time, event-driven
  • Docs: /docs/stripe
  • Marketplace: Stripe App Marketplace

The gap in Stripe's own reporting

Stripe knows your revenue to the cent. It knows nothing about where the customer came from. Stripe's own reporting has 0 marketing dimensions: no channel, no campaign, no keyword, no first touch. The Stripe Dashboard and Sigma can slice revenue by product, country, and payment method, and that is where the questions end.

Ad platforms have the opposite problem. Google Ads and Meta report conversion value from a pixel that fired on a thank-you page, weeks before the money landed and with no idea that a refund followed. So Finance reports one number, Marketing reports another, and the budget conversation runs on the wrong one.

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

What syncs

  • payment_intent.succeeded: One revenue event on the customer's journey, amount and currency from the intent
  • refund.created: One negative revenue event, so attributed revenue is net
  • Payment intent metadata spectacle_user_id: Matched first: the payment lands on that user's journey
  • Stripe Customer metadata and email: Fallback match to the person identified on your site with spectacle.identify() and an email trait
  • Charge billing_details: Guest checkouts without a Stripe Customer are matched on the billing email
  • Subscription renewals: Each renewal arrives as a new payment_intent.succeeded and is credited to the original acquisition journey

Disputes, invoices, and Setup Intents are not consumed today; the docs ask you to get in touch if your checkout uses them. The full matching hierarchy lives in the Stripe docs. This page summarizes; Docs is the source of truth.

What you get

  • Revenue by campaign, with refunds already subtracted. Every successful payment sits on a journey, so a Google Ads keyword or a LinkedIn campaign gets credited with the net cash that landed in Stripe rather than a pixel value fired on a thank-you page.
  • Recurring revenue tied to the acquisition journey. A renewal 11 months after signup arrives with no campaign attached. Spectacle credits it to the journey that acquired the customer, which is how 12-month customer value by channel becomes a report instead of a spreadsheet.
  • One reporting currency across markets. Payments in USD, GBP, and EUR are normalized to your workspace currency so a campaign selling in 3 markets has 1 return figure.
  • Cost per paying customer by channel. Ad spend from Google, Meta, LinkedIn, and Microsoft Advertising joined to Stripe payments, so a channel that produces cheap trials and no payments shows up as what it is.
  • Payments back to ad platforms. Send the first payment, or every payment, as a conversion with value to Google Ads, Meta, and LinkedIn so Smart Bidding optimizes for revenue.

Pairs with

Stripe + Google Ads (payment value as a conversion) · Stripe + Meta Ads · Stripe + HubSpot or Pipedrive for pipeline before payment · Alternative for merchant-of-record billing: Lemon Squeezy

How Spectacle and Stripe work together

  1. Connect Stripe. Settings → Integrations → Stripe → Connect. Authorise the connection over Stripe Connect, or paste a restricted API key; no webhook to configure by hand.
  2. Make customers matchable. Call spectacle.identify() with the email trait at signup, or set spectacle_user_id in the Stripe Customer metadata at creation for the most reliable match.
  3. Revenue lands on journeys. Each payment_intent.succeeded becomes a revenue event, each refund.created a negative one, attributed to the touchpoints inside the customer's journey window.

Step by step with screenshots: Connect Stripe.

What you gain by connecting Stripe

  • Revenue by campaign, with refunds already subtracted. Every successful payment sits on a journey, so a Google Ads keyword or a LinkedIn campaign gets credited with the net cash that landed in Stripe rather than a pixel value fired on a thank-you page.
  • Recurring revenue tied to the acquisition journey. A renewal 11 months after signup arrives with no campaign attached.
  • One reporting currency across markets. Payments in USD, GBP, and EUR are normalized to your workspace currency so a campaign selling in 3 markets has 1 return figure.
  • Cost per paying customer by channel. Ad spend from Google, Meta, LinkedIn, and Microsoft Advertising joined to Stripe payments, so a channel that produces cheap trials and no payments shows up as what it is.
  • Payments back to ad platforms. Send the first payment, or every payment, as a conversion with value to Google Ads, Meta, and LinkedIn so Smart Bidding optimizes for revenue.

See the integration in practice

A subscription business billed through Stripe could see monthly revenue in Stripe and cost per trial in its ad platforms, and nothing in between. With Stripe 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. (Anonymized.)

About Stripe

See the campaigns behind every payment—refunds included.

Popular Stripe 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 Stripe?

Yes. Spectacle connects to your Stripe account from workspace settings and listens to payment_intent.succeeded and refund.created, turning each into a revenue or negative revenue event on the customer's journey. Setup takes about 5 minutes.

How does Spectacle match a Stripe payment to a website visitor?

In this order: the spectacle_user_id metadata on the payment intent, the same key on the Stripe Customer, the Stripe Customer's email, then the charge's billing email for guest checkouts. The email match needs an email trait on your spectacle.identify() call.

Does Spectacle handle refunds and disputes?

Refunds yes: every refund.created subtracts from attributed revenue, so reports are net. Disputes and chargebacks are not consumed today; if your checkout relies on them, ask support.

Why doesn't my Stripe revenue match the conversion value in Google Ads?

Google Ads counts a pixel value at the moment of conversion, inside its own window and model, and never sees a refund or a renewal. Spectacle takes the amount from Stripe, subtracts refunds, applies one journey window across every channel, and reports one figure that reconciles to your Stripe balance.

Does Spectacle track subscription revenue from Stripe?

Renewals arrive as successful payment intents and are attributed to the journey that acquired the customer. Invoices and subscription objects themselves are not consumed; MRR and plan changes can be sent with spectacle.track() using the mrr, arr, and plan properties.