Skip to main content
This page explains what happens when revenue attribution is on. The short version: one identifier rides along from the click to the sale, and matching that id at both ends is what ties a payment back to a post.

The one-identifier idea

The post lives on one surface (X, LinkedIn, TikTok) and the sale happens on another (Stripe, Gumroad, Shopify). The two never talk, so the link between “this post” and “this payment” is normally lost. seenpaid makes one id survive the whole journey:
That id is cp_tid, the seenpaid tracking id.

The chain, step by step

1

A tracked link is minted

When you publish, seenpaid replaces your URL with go.seenpaid.com/r/<id> (redirect mode) or appends ?cp_tid=<id> to your own URL (own-URL mode). The id is unique to that post and platform. On Instagram and TikTok the tracked link goes on your bio page.
2

A click is recorded

In redirect mode the /r/<id> hop logs the click and forwards the visitor to your page with cp_tid in the URL. In own-URL mode the pixel on your page reports the click.
3

The id is kept on your site

The pixel stores cp_tid first-party, in both a cookie and localStorage, so it survives a visitor who lands on your homepage, browses to pricing, and buys later. It then attaches the id to your Stripe checkout as client_reference_id. For a Payment Link opened straight from the tracked link, no pixel is needed.
4

A payment fires

Your payment provider sends seenpaid a webhook for the completed payment: Checkout Session, Payment Link, direct charge or subscription invoice on Stripe, or the equivalent sale event on Gumroad, Lemon Squeezy, Whop, Shopify, Paddle, Polar or Dodo Payments.
5

The sale is matched to the post

seenpaid reads the id, finds the click it belongs to, and finds the post behind it. The revenue now belongs to that post.

The reporting window

Results summarises a rolling window of 7, 30 or 90 days (30 by default). Totals count only matched payments and clicks inside the window; “vs previous period” compares against the equal-length window just before it.

Why some rows say Direct or Unknown

  • Direct: a click with no referrer (typed URL, in-app browser, stripped referrer). Still a real, attributed click.
  • Unknown: seenpaid couldn’t resolve that dimension (no geolocation, unrecognised device).
  • None: the link carried no UTM tag for that field.
A large Direct share is normal for social traffic.

What counts as revenue

Completed checkouts and payment links, direct charges, recurring subscription invoices. Refunds and chargebacks are subtracted back out, so a post’s earnings reflect money you kept.

Honest by design

seenpaid never invents a match. A payment with no tracking id, or one that doesn’t resolve to a click, is recorded as revenue but left unattributed, not credited to a random post. There is no “probable” tier based on referrers, time windows or fingerprinting; a modelled number beside a real one would make the real one doubtful. The Sales traced to a post figure on Results shows exactly what share of your payments was traceable.

Privacy

  • First-party only. cp_tid is stored on your own domain; seenpaid uses no third-party cookies and no cross-site tracking network.
  • The pixel does nothing on a direct visit. No tracked link, no id, nothing to store.
  • The matching field is an opaque id, not personal data. seenpaid does not guess a buyer from their email.

Track your sales

The one tag that carries cp_tid into checkout.

Connect a revenue source

Stripe and seven other payment tools.