Tebex already shows store sales, packages, coupons and creator code activity. Connect it to ServerStats when you need to answer a different question: what did buyers do on the server before and after paying? A signed webhook records each sale, then ServerStats matches the buyer's game ID to the pseudonymous player ID used by its agent where the IDs agree. The Tebex panel remains the authority for settlement, taxes and payouts.
Connect Tebex to ServerStats
- Install the ServerStats agent for your game and sign in as an organisation owner or admin. In Store connections, add a Tebex store. Copy the unique webhook URL shown there.
- In the Tebex creator panel, open Developers → Webhooks → Endpoints. Copy the webhook secret and save it in the ServerStats connection.
- Add an endpoint in Tebex with the copied URL. Select
payment.completed,payment.refunded,payment.dispute.opened,payment.dispute.won,payment.dispute.lost,recurring-payment.startedandrecurring-payment.renewed. You can also selectpayment.declinedto observe failed checkouts. - Tebex sends a validation webhook immediately. ServerStats answers it; if you saved the secret after creating the endpoint, use Tebex's Validate action to retry. You can send a test webhook from Tebex with a real transaction ID and check the connection status in ServerStats.
Tebex signs deliveries with X-Signature; ServerStats verifies the signature before ingesting a purchase. Repeated deliveries do not create duplicate sales. The app shows whether the endpoint validated, whether signed events arrived, and whether a first purchase was recorded. See Tebex's webhook documentation for its endpoint, validation and event definitions.
What you can measure
On Operator and Network, the Store view combines gross, refunded, chargeback and net revenue with paying share, average order, ARPU, ARPPU, first-purchase conversion and revenue per player-hour. Breakdowns include package, server, store provider, currency and Tebex creator code. A payment reversal reduces net revenue; a won dispute restores it. Subscription renewals are included in recurring revenue.
You can also see a buyer's playtime alongside their spend. For Minecraft Java, Velocity and Hytale, the first hostname a player used can group lifetime value by join source. This is join-hostname attribution, not proof that a particular tracked link click caused a sale. It works best when you give campaigns distinct hostnames and compare both activity and spend over time. Read the Tebex revenue guide for the metrics and example Store screens, or compare ServerStats with Tebex's own statistics.
Older payments and matching limits
If webhooks are new but your Tebex store has history, Operator and Network can import up to 90 days of payments made before your first webhook. The app asks for one game server secret key from your Tebex panel. The import stops at the first webhook, so it does not overlap live events.
Buyer matching needs the same ID on both sides: a Minecraft Java or Hytale UUID, or SteamID64 on a supported Steam game. An offline-mode username cannot establish that match. FiveM requires serverstats_id_type fivem; Bedrock purchases currently remain unlinked. The payment still appears in store totals when it cannot be linked to a player. Webhooks are accepted on Free, while the Store analytics view requires Operator or Network.
ServerStats does not store the buyer email, name, IP or address in Tebex's payload. It reads the payment, package, currency, coupon and creator code fields and hashes the game ID. If you sell across multiple stores, you can connect PayNow or CraftingStore as well.