Geolocation for free-to-play and prediction

Get the gating in place while it's still free.

The hard part of geolocation is the client work and the app-store release, not the policy. Do it now, run checks without enforcing, and your paid tier launches with a policy edit instead of a rebuild.

Flat monthly pricing by active players. A small free product pays a small fee.

POST /v1/check8 ms
decision   ALLOW
would_block false
region     US-OH · Franklin County
activity   contest_entry · free
policy     v2026.10.02
signals    gps ✓  accuracy 18 m  mocked ✗  vpn ✗
check_id   chk_91be…44d0
The problem

Free today means paid later, and paid means a release.

Nothing in a typical free-to-play app collects a device location. Adding it later means a permission prompt, a payload on every entry, a review cycle, and waiting for players to update before you can enforce. That timeline, not the policy, is what delays a paid tier.

01

The release sets the timeline

Old app versions can't send a fix, so enforcement has to wait for adoption of the new build. Shipping the client work early moves that wait to a time when nothing depends on it.

02

You don't know your map yet

Where are your players, really? IP gives a rough answer. Device locations from real checks give a real one, by county, before you decide which states a paid tier opens in.

03

Eligible states live in the app

If your onboarding reads a compiled list of state codes, opening a state is a release. It should be a policy edit.

04

Spoofing shows up before money does

Players who use fake GPS or VPNs for free contests will do it for paid ones. Running checks now shows you how many there are while there's nothing at stake.

What BoundsCheck does for free-to-play

Integrate once, learn from real checks, enforce on launch day.

  • Check without enforcingEvery entry is checked and recorded while your app refuses no one. You see your traffic by state and county, what would have been blocked under a given policy, and how much spoofing exists.
  • Eligible-states endpointOnboarding reads the live list from BoundsCheck, with ETags so it only re-downloads on change. Opening a state for the paid tier is a policy edit.
  • Free and paid handled separatelyPolicy has separate rules for free and paid contests. Allow free everywhere, restrict paid by state and format, all in one rule set.
  • Client code you ship onceA small location payload with each check. Web script and iOS and Android SDKs Roadmap. The same payload serves free contests today and paid ones later.
  • Enforce on launch dayWhen the paid tier launches, start acting on the decisions you've been recording. Opening a state is a policy edit, not a release.
  • Spoofing and VPN signalsThe fake-GPS flag, VPN and hosting ranges, IP-versus-GPS distance, impossible travel, stale locations and timezone mismatches, all recorded from day one.
  • Audit trail from the startEvery check is stored with its inputs and reasons. When the paid tier opens, you already have months of history showing the control was in place.
  • Pricing that fits a free productFlat monthly fee by active players, unlimited checks. Checking every free entry costs nothing extra.
FAQ

Questions free-to-play operators ask.

Our contests are free. Do we need geolocation yet?

Not to run free contests. But most free-to-play products plan a paid tier, and the hard part of geolocation is the client work: location permission, a device fix on each entry, and an app-store release. Doing that while the product is free means launch day for the paid tier is a policy change, not a rebuild.

What do we learn by running checks before we charge anything?

A picture of your real traffic by state and county, how many entries would be blocked under a given policy, and how many devices show spoofing or VPN signals, all from the decision log. You learn what enforcement would cost before it costs anything.

Can we show the eligible-states list in onboarding?

Yes. BoundsCheck serves an eligible-states endpoint derived from your policy, with ETags so your app only re-downloads it when policy changes. Your onboarding screens read it instead of a compiled list, so adding a state never needs a release.

Is pricing different for free products?

Pricing is a flat monthly fee based on monthly active players, with unlimited checks. A free product with a small active base pays a small fee. There is no per-check charge, so checking every entry before you enforce does not run up a bill.

Planning a paid tier?

Tell us where you are in the process and roughly how many active players you have. We'll show you what the decisions would look like on your traffic and what the client work involves.