Tebex revenue by source, matched to real players

Connect your Tebex store to MCAnalytics with one signed webhook. Every delivery is checked against your network's secret, the buyer is matched to a player by their premium UUID and never by username, and the money is credited to the join address that player first came through. A purchase that cannot be matched stays visible as Unmatched and still counts in your totals. Refunds and chargebacks come back off, and the yearly report gives you twelve calendar months of gross, refunds, net and buyers, counting each purchase once.

Sample data: the MCAnalytics Revenue page with Tebex revenue by source, the unmatched payments line, and refunds called out
Revenue, Revenue by source · Sample data, not a live network

How it works

  1. Connect the store

    In Settings, paste the webhook secret from your Tebex creator panel and press Connect store. Paste the address it prints into Tebex as a webhook endpoint.

  2. Pick three events

    Subscribe the endpoint to payment completed, payment refunded and dispute opened. A delivery that fails the signature check is refused.

  3. Match by premium UUID

    The buyer's premium UUID finds the player on your network, and the amount goes to the source that player first joined through, however long ago that was.

  4. Read Revenue and Growth

    Revenue per source on Growth, the full ledger on Revenue, and a yearly report you can download as CSV.

What you see on the dashboard

  • Revenue by source

    Matched purchases credited to the join address each buyer first arrived through, with their share of the total.

  • Matched, unmatched and refunds

    Matched revenue, unmatched revenue and refunds side by side, so you see how much of the store you can trace back to a source.

  • Yearly report

    Twelve calendar months in UTC with gross, refunds, net, purchases, buyers, first time buyers and average order. One table per currency, never converted.

  • Revenue by package

    Each package with its revenue, buyers, refunds, and how often it was a buyer's first purchase.

Why a username is never enough

A username can change hands, and on an offline mode server anyone can type any name. A purchase credited to the wrong player is worse than one credited to nobody, so MCAnalytics matches only on the premium UUID that Tebex reports.

That has a cost worth knowing. A buyer who has not joined yet, or who buys from a Bedrock or cracked account without a premium UUID, lands in Unmatched. When that premium buyer joins later, the purchase moves to them and to their source on its own.

On a cracked network behind a Velocity proxy, a buyer who owns the game and logs in through premium login with nLogin, FastLogin or LibreLogin is matched too. The proxy keeps their Mojang UUID next to their cracked name, taken from nLogin's record of the premium login or from the profile Mojang signed, never guessed from the name.

Questions

Why not match purchases by username?

Usernames get reused and, on offline mode servers, anyone can claim one. A purchase credited to the wrong player moves money to the wrong source, so only the premium UUID is used.

What happens to a purchase that cannot be matched?

It stays in an Unmatched group, counted in your totals and never attached to the nearest guess. If the buyer joins your network later with that premium account, the purchase is matched then.

Are refunds and chargebacks taken off?

Yes. Refunds and chargebacks are subtracted, and the Net column of the yearly report shows what you kept after them.

How is the yearly report counted?

Each purchase counts once, even when the package grants on several servers. Months are calendar months in UTC, and a store that charges in more than one currency gets one table per currency, never a converted total.

Is the webhook safe?

Each network has its own webhook address and its own secret, and every delivery is checked against that secret before a single field is read. If the secret leaks, rotate it in the dashboard.

Read the docs

All features

Set it up on your network.

$1 for the first month, once per network, then from $4.99 a month. Community is free under 50 players, with no card.