See where Stripe revenue came from.

Pass the AttribIQ visitor or session ID into Stripe Checkout. AttribIQ matches payments, renewals and refunds to the known acquisition journey and shows payments it could not match.

Put the bridge in Checkout metadata

The browser sends its attribution object to your backend. Your backend creates the Checkout Session and copies the project, visitor and session IDs into metadata. For a subscription, copy the same IDs into subscription_data.metadata so later invoice events can retain the link.

Normalize billing events before reporting them

The current Stripe receiver handles completed Checkout Sessions, paid invoices, subscription lifecycle events and refunds. It verifies the Stripe signature when the endpoint secret is configured and rejects duplicate deliveries by Stripe event ID.

checkout.session.completed
invoice.paid
customer.subscription.created, updated and deleted
charge.refunded

Leave unsupported matches unattributed

A successful Stripe event does not guarantee a journey match. If the metadata is missing, the payment remains in revenue storage while the attribution fact has no source, campaign or landing page. That is a setup problem to inspect, not a reason to guess.

Minimal Checkout metadata

Create Checkout Sessions on your server. This example shows the fields AttribIQ reads; your own price, tax and payment-method settings remain in your Stripe integration.

Stripe recommends Checkout Sessions for most web payment and subscription flows. Keep webhook signature verification enabled in production.

metadata: {
  attribiq_project_id: attribution.project_id,
  attribiq_visitor_id: attribution.visitor_id,
  attribiq_session_id: attribution.session_id
},
subscription_data: {
  metadata: {
    attribiq_project_id: attribution.project_id,
    attribiq_visitor_id: attribution.visitor_id,
    attribiq_session_id: attribution.session_id
  }
}

Questions buyers ask

Do renewals use Checkout Session metadata?

The initial Checkout event can use session metadata. For later subscription events, put the same identifiers on subscription_data.metadata.

What if Stripe retries a webhook?

AttribIQ stores the Stripe event ID for idempotency. A repeated delivery returns a duplicate status instead of creating another revenue event.

Does a missing ID remove the payment from totals?

No. The revenue event can still be stored. It remains unattributed when AttribIQ cannot find a reliable visit or session.

Test one Checkout Session

Copy the IDs into Checkout and subscription metadata, complete a test payment, then inspect whether the payment has journey evidence or an empty attribution state.