A web store with no traffic is a nicely designed page. The store itself takes a day; the work that makes it pay is sending players to it, again and again, from places where they already are. This guide ranks the nine channels by what they cost and how well you can measure them, and shows what to set up in Appside for each one.
Create your store free, then come back and pick the first three channels.
First, the rule that changed everything: link from the game where you can
For years the main problem with web stores was that you couldn't mention them inside the app. That's no longer true everywhere.
- iOS, United States. Since the court order of April 30, 2025 in Epic v. Apple, apps distributed in the US may link to external purchases, and Apple may not take a commission on them. Our iOS link-out page keeps the current state of that order, with dates.
- Google Play, United States. Enrolled developers can link US players to purchases outside Google Play under the external content links program. Fees apply to purchases within 24 hours of the link, at a lower rate than Play billing. Our Google Play fees page has the table from Google's own help pages.
- Elsewhere. The EU, Japan, the UK and other regions each have their own rules and fee schedules. Treat every region as a separate decision.
Where you can link, the in-game shop is your best channel by a distance: the player is already deciding to buy. A "Buy on the web, get 20% more" line next to the pack, opening the store with openStore(playerToken), needs no new audience at all. Where you can't, the eight channels below carry the load.
The nine channels, ranked
| # | Channel | Cost per visit | Measurable? | Set up in Appside |
|---|---|---|---|---|
| 1 | In-game link (where allowed) | None | Yes, by player | openStore() or a payment link per pack |
| 2 | Push notification | None | Yes, with a code | Timed offer + promo code |
| 3 | Email newsletter | None once you have the list | Yes, with a code | Promo code with a window |
| 4 | Discord / community | None | Partly | Pinned store link, server-only code |
| 5 | Support team | None | Yes | Code the support team can give |
| 6 | Creators and streamers | Per deal | Yes, one code per creator | Code with a total limit |
| 7 | Social posts | None, slow | Partly | Store link on a custom domain |
| 8 | Live events | High | Yes, with QR | Code printed on the QR |
| 9 | Paid ads | Per click | Yes, by landing link | Landing on one pack's payment link |
1. The in-game link
Where the rules allow it, put the web offer where the player is already looking: the shop screen. Two options, both three lines of code:
- Open the whole store with
openStore(playerToken), so the player lands signed in, in your game's colors, with the offers meant for them. - Open checkout for one pack with
purchase(sku, playerToken). This is a payment link: one tap, one pack, the player comes back with a return link.
The player token is signed by your backend, so there's no second login, which is the first place players drop off.
2. Push notifications
A push with a timed offer ("Weekend bundle: 25% more Star Shards on the web, ends Sunday") is the cheapest traffic you'll get. In the Studio, an offer has a start and end time in UTC, so the push and the offer end together. Pair it with a promo code that only that push mentions and you know exactly what the push did.
3. Email
If you don't have a list, start collecting one now: a sign-up at first launch and a "loyalty club" prompt after the first purchase are the two spots that work. Once you have it, each newsletter carries one promo code with a window. Codes in Appside have a per-player limit, a total limit and an optional start and end, so an email code can't leak into a forum and run forever.
4. Discord and your community
Pin the store link. Give the server its own code. Announce new bundles there first, an hour before the push, so the community feels early. The store link should be on your own domain (Appside lets you verify a custom domain with a CNAME), because a link to your domain is trusted and a link to a third-party domain is "is this real?"
5. Support
Every support ticket about a purchase is a chance to say "you can also buy on the web store at yourgame.com/store, with a bonus". Train the team, give them a code to hand out, and count it.
6. Creators and streamers
The classic. Each creator gets one code with a total limit and a window; the code is the measurement. In Appside a code gives a percentage or fixed discount on the packs you choose, so a creator's code can apply to a starter bundle and nothing else.
7. Social
Slow, free, cumulative. Post the store when there's something to post: a new bundle, a web-only pack, a seasonal event. Don't post the store for its own sake.
8. Events
If you run them, a QR code on the badge, the stage and the merch that opens one pack's payment link with an event-only code. The highest cost per visit on this list, and the highest conversion, because the player is standing there with the game open.
9. Paid ads
Last, on purpose. Paid traffic to a web store only pays when the pack margin covers the click, which it can, because the web store fee is a fraction of the app store fee. Send the click to one pack, not the home page, and compare the cost per paid order to the same pack in-app.
Measure every channel the same way
You don't need a tracking suite for this. Three things do it:
- One promo code per channel. Codes have limits and windows, so each one is its own experiment.
- The signed webhook. Every paid order reaches your backend as
order.paid, with the order ID, player ID and pack. Your backend already knows how that player arrived; join the two. - The Studio's test metrics. Revenue today and over seven days, refunds and the top pack, plus the app → store → checkout → paid funnel, tell you whether the problem is traffic (few store visits) or conversion (visits that don't pay). The conversion checklist handles the second case.
What to set up this week
- Publish the store on your own domain.
- Create a first-purchase offer, so every channel has the same reason to click.
- Create three codes: one for your Discord, one for support, one for the next newsletter.
- If you're in the US on iOS or enrolled on Google Play, add the in-game link to the shop screen.
- Read the funnel after seven days and fix the weakest step before adding a channel.
Appcharge's own advice on this subject (its blog post of April 11, 2024) lists social media, newsletters, real-life events and brand collaborations. Those are channels 3, 7 and 8 here. The list above adds the ones that have changed the picture since: in-game links where courts and platforms now allow them, push, support, creators with limited codes, and a way to measure all of them without an account manager.
Create your store free. No card needed to start; 3.9% per successful payment.