GUIDE / WEB STORE RETENTION

Web store retention: the second purchase is the business

Most web store revenue comes from players who buy again. How to measure repeat purchase by cohort with the order webhook you already have, the four offers that bring players back, what to schedule each week, and the mistakes that train players to wait for discounts.

Updated

The first web purchase is the expensive one: you paid for it with a channel, an offer and a leap of faith by the player. Every purchase after that is nearly free. So the question that decides whether a web store pays is not "how many players tried it" but "how many came back". This guide is about the second purchase, and the third.

Measure it first: cohorts from the webhook

You don't need a new tool. Every paid order already reaches your backend as a signed order.paid webhook with the order ID, player ID, pack, price, currency and time (reference), and order.refunded carries the same order ID. Keep them in a table and you have everything below.

Question Query
Repeat rate Of players whose first web order was in month M, the share with a second web order within 30 and 60 days
Time to second purchase Median days between a player's first and second web orders
Web share of a player's spend Web orders ÷ (web + in-app orders) per player, before and after their first web order
Cannibalisation In-app spend per player in the 60 days before and after their first web purchase
Offer effect Repeat rate of players whose second order used an offer vs those whose didn't

Three cohorts (the last three months of first-time web buyers) are enough to see the shape. Build the table once; it's also the source for attribution.

Why players don't come back

The reasons are the same four everywhere.

  1. Nothing changed. The store looks exactly as it did last time. There's no reason to check.
  2. The discount is permanent. A store that's always 20% cheaper becomes a utility: players use it when they were going to buy anyway, and never visit otherwise.
  3. It's hard to get back to. The player found the store once through a push. Without a link in the game, Discord or their inbox, they can't find it again.
  4. The first purchase was bad. Slow delivery, a confused return to the game, or a pack that didn't feel like the game. One bad first purchase is usually the last.

The fourth is a launch problem (checklist). The first three are retention design, below.

Four offers that bring players back

All four exist in the Appside Studio and change without a release (live ops guide).

1. Timed offers that end. An offer with a start and end time in UTC. The end is the point: "ends Sunday" is a reason to come back this week. Run one every week, on the same day, so returning becomes a habit.

2. Bundles that rotate. A bundle is a pack that doesn't exist in the app. Change it weekly. Players who've learned that the web store has something new will check it.

3. The next-purchase bonus. After a player's first web purchase, a bonus on the second, limited per player. In Appside a promo code has a per-player limit, a total limit and a window; a "welcome back" code with a per-player limit of one does this.

4. Targeted offers. An offer only for players at a level, in a spender tier, in a country, or new players. Your backend puts those attributes into the signed player token; the store shows each player what's meant for them. A whale and a first-week player shouldn't see the same store.

A weekly rhythm

Retention is a calendar, not a feature. The cheapest version:

Day Change
Monday New bundle goes live; last week's ends
Wednesday Push to players with no web order in 14 days: this week's bundle
Friday Weekend timed offer, ends Sunday 23:59 UTC
Monthly A code for players who bought in the app but not on the web in 30 days

Set all of it on Monday morning; the start and end times do the rest.

What not to do

Appcharge's version of this

Appcharge's post on the subject (January 9, 2025) frames the same journey as first visit, repeat visit, first purchase and repeat purchase, and reports, from its own partners rather than an external study, that 80–100% of daily purchases come from repeat purchasers. That number is the point of this page: the repeat purchase is the business. Where that post leans on VIP account managers sending personalised deals, the version above is one you run yourself, from the Studio and your own order table, for 3.9% per successful payment.

Create your store free. No card needed.

Frequently asked questions

What is a good web store repeat purchase rate?

Measure your own before you compare. Count, per monthly cohort of first web buyers, the share who buy on the web again within 30 and 60 days. If the 30-day number is under a third, the store has a reason-to-return problem, not a traffic problem.

How do I measure web store retention without an analytics suite?

From the order.paid webhook. Every order carries the player ID, pack, price and time, so a table of orders per player is all you need for cohorts, repeat rate and time between purchases.

Which offers bring players back to a web store?

Timed offers that end, bundles that change weekly, a bonus for the next purchase after the first, and offers targeted at the player's level or spender tier. The common thread is a reason to come back this week, not a permanent discount.

Do permanent web discounts hurt retention?

Yes. A store that is always 20% cheaper trains players to buy on the web only when they were going to buy anyway. A store whose offers change gives them a reason to visit.

Does Appside have cohort reports?

The Studio shows test revenue today and over seven days, refunds, the top pack and the app → store → checkout → paid funnel. Cohorts and repeat rates come from your own order table, built from the webhook, which is where your in-app data already lives.

Sources

Related

SEE IT YOURSELF

Build your store
before the first call.

Try the live demo ↗Explore Studio
LET’S TALK

Book a demo

Connect with Oded to arrange a walkthrough of Appside.

Contact Oded on LinkedIn ↗