Skip to content
View this page in Deutsch?Switch

Know which ads bring paying customers.

Whichpaid links every visit to the order it led to, so you know which channels, campaigns and pages make money. Hosted in the EU. Works without cookies.

Sign in
Whichpaid is invite-only right now.
This is the demo shop with demo data.
app.whichpaid.com/share/demoDemo data
ChannelsLast 30 days
ChannelVisitorsRevenue
Paid Search2,697€28,430
Organic Search2,312€12,493
Direct2,975€16,858
AI Assistant428€4,068
Visitors
2,697
Paid Search
Revenue
€28,430
Paid Search
Revenue / visitor
€10.54
Paid Search
Revenue / visitor
€5.40
Organic Search

The clickable live demo is being prepared.

HOW IT WORKS

From first click to paid order in 3 steps

app/layout.tsx
<script defer
  src="/k7x/s.js"
  data-site="a1b2c3d4e5f6"
  data-api="/k7x/e/"></script>
01
Add one script

One line in your page head, served from your own domain so ad blockers leave it alone.

WhichpaidNot connected
Send orders from 4 sales channels.
Connect to Whichpaid
Medusa admin
02
Connect Medusa

Click "Connect to Whichpaid" in your Medusa admin and assign each sales channel to a website.

Paid Search2,697€28,430
Organic Search2,312€12,493
Direct2,975€16,858
03
See revenue per channel

Every list shows visitors and revenue side by side. Paid Search: 2,697 visitors, €28,430.

REVENUE

Revenue by channel, campaign and page

Each row shows visitors and the money they brought. Revenue per visitor tells you what one visit from that source is worth.

Paid Search brought 34% of revenue with 26% of visitors.

See it in the demo →
ChannelVisitorsRevenue
Paid Search2,697€28,430
Organic Search2,312€12,493
Direct2,975€16,858
AI Assistant428€4,068
Paid Search · Revenue / visitor: €10.54
CUSTOMERS

Know every customer and their lifetime value

First channel, every order and every refund on one timeline. Names and emails stay in your shop.

Customer Q2K5: 4 orders, €998.06 net, first came from Paid Search.

See it in the demo →
Customer 4F2ANet lifetime value
€998.06
  • Arrived via Google Ads · Brand SearchSep 12
  • Order #10102 · €79.80Sep 18
  • Order #10234 · €39.90Oct 3
  • Refund -€39.90Oct 5
GOOGLE ADS

Send real values to Google Ads

Export a file in one click, or let Whichpaid upload new orders every 15 minutes. Refunds correct the value.

Uploaded 1,284 conversions this month · 0 errors.

See it in the demo →
Google Ads✓ Automatic upload active
Uploaded 1,284 conversions · 0 errors
  • Success48 conversions12 min ago
  • Success52 conversions27 min ago
  • Waiting6 iPhone clicks, up to 72 htoday
LIVE

Watch visitors live

A globe with everyone on your site right now and a feed of pages, goals and orders. Buyers get a petrol ring.

Visitor 7F3A from Bern placed an order of €39.90.

See it in the demo →
Watch visitors live

Made for the person running your ads

Invite your Ads manager with their own role: they see revenue and exports, never customer details.

One-click export in Google's format

A Data Manager file with purchases and later value changes in one file.

Automatic daily upload, no API project needed

Google fetches a scheduled HTTPS file, or Whichpaid uploads every 15 minutes.

Refunds and chargebacks correct the value

A refund sends the new net value. A chargeback sets it to zero.

iPhone clicks included

Whichpaid keeps gclid, gbraid and wbraid until the purchase, so Google can match iPhone sales too.

Ask your AI agent about your revenue

Connect Claude, ChatGPT, Codex or Cursor via MCP, or use the CLI.

Not technical? Your agent can also install Whichpaid for you and asks before every change. Set up Whichpaid with your AI agent →
Which campaign brought the most new customers in the last 30 days?
D1 Brand brought 37 new customers, weekly-digest 22.
CampaignNew customersRevenue
D1 Brand37€12,275
weekly-digest22€5,167
D1 Generic19€7,333
Read-only access · MCP · mcp.whichpaid.com/mcp

Not technical? Start here

Let your AI agent do the setup, for example Claude Code, Codex or Cursor. You copy one prompt and say yes when it asks.

Do it with your AI agent

Not technical? Copy this prompt into your AI agent, for example Claude Code, Codex or Cursor. It does the steps and asks you before it changes anything.

Prompt · replace the highlighted parts
You are helping me add Whichpaid to my website {{domain}}. Whichpaid shows which ads bring paying customers.
My Whichpaid site ID is {{site_id}}.
1. Find out how my website is built and where the <head> of every page is rendered.
2. Serve the Whichpaid script from my own domain: forward /k7x/s.js and /k7x/e/ to https://e.whichpaid.com, as described on docs.whichpaid.com/install/{{framework}}.
3. Add this to every page: <script defer src="/k7x/s.js" data-site="{{site_id}}" data-api="/k7x/e/"></script>
4. Change nothing else. Show me every change before you save it, and publish only after I say yes.
5. When it is live, open my website once and tell me to check app.whichpaid.com/{{site_number}} for "Receiving data".

What your agent needs

  • Access to your website's code
  • Permission to publish a new version

What you do yourself

  • Say yes when the agent asks
  • Open your website once after publishing
How you know it worked: Whichpaid shows 'Receiving data' within a minute.
Never paste passwords into the chat. Your agent never needs them for Whichpaid.
Something not working? Copy the troubleshooting prompt
Troubleshooting prompt
Whichpaid shows no data for {{domain}}. Please check, without changing anything yet:
1. Does https://{{domain}}/k7x/s.js load?
2. Does every page contain the script tag with data-site="{{site_id}}"?
3. Are requests to https://{{domain}}/k7x/e/ answered with status 202?
Tell me what you found and what you would change, then wait for my yes.
Open this page as Markdown for your agent →

Works with your stack

Shops & payments

  • MedusaAvailable
  • ShopifyComing soon
  • WooCommerceComing soon
  • StripeComing soon
  • PayPalComing soon
  • PaddleComing soon
  • Lemon SqueezyComing soon
  • Payments APIComing soon

Websites

  • HTMLAvailable
  • Next.jsAvailable
  • ReactAvailable
  • VueAvailable
  • WordPressAvailable
  • WebflowAvailable
  • Google Tag ManagerAvailable
  • npmAvailable

Privacy by default, not by banner

Two tracking modes

Basic counts per day without storage. Full adds multi-day journeys after consent.

Your data stays in the EU

Servers in Germany. No transfer to third countries.

Separated per customer

Every customer's data is separated at database level.

Built for audits

DPA, subprocessor list and security.txt are public.

Privacy and legal details →

Simple pricing that grows with your traffic

Starter
Price coming soon
  • 1 website
  • Revenue from Medusa
  • Google Ads export
GrowthMost popular
Price coming soon
  • 5 websites
  • Automatic Google upload
  • API, MCP and CLI
Business
Price coming soon
  • Unlimited websites
  • Session replay
  • Priority support

Plans and prices are not final yet.

See full pricing →

Questions and answers

Do I need cookies?

No. Basic mode counts visitors per day without storing anything on the device.

Is it GDPR and Swiss DPA ready?

Yes. Hosting in Germany, a DPA for every customer and only shortened IP addresses.

How does revenue get in?

The Medusa plugin sends every order, refund and chargeback to Whichpaid.

Which shops work?

Medusa today. Shopify, WooCommerce, Stripe and PayPal are coming soon.

How does the Google Ads upload work?

Start with a one-click file, or let Whichpaid upload new conversions every 15 minutes.

What happens with refunds?

Reports and Google values switch to the new net amount.

Can my Ads manager get access without seeing customer data?

Yes. The Ads manager role sees revenue and exports, never names or emails.

Do ad blockers block Whichpaid?

Not when the script runs from your own domain, which the setup does for you.

What does the script weigh?

About 3 kB compressed.

Can I use it with AI agents?

Yes, through MCP, the CLI or the API, read-only by default.

What happens if I exceed my plan?

We keep collecting and tell you.

Can I export or delete my data?

Yes. Export as CSV or through the API; deletion is one click in settings.

Why not just a typical analytics tool?

Why not just a typical analytics tool?WhichpaidTypical web analytics
Revenue in every report✓Extra setup
Works without cookies✓Rarely
Real values to Google Ads✓Manual
Refunds correct the values✓No
Hosted in the EU✓Depends
Access for AI agents✓No

Find out which visits turn into money

Request access

We reply within two working days.

We use your details only to answer this request and delete them after 90 days. Privacy