2026-09-07

What happens when a city is too small to show

City-level stats are available as an opt-in, aggregate-only add-on — a city only ever shows up once at least six distinct visitors have clicked from it. Below that, it used to disappear into "Other" completely. Now it falls back to its state, then its country, before it gives up.

The problem with a single "Other"

Most real traffic to most links is spread thin across a lot of different places. If a link gets clicks from twenty different cities and none of them individually clears six distinct visitors, the old behavior folded all twenty into one undifferentiated "Other" bucket — every bit of geographic signal gone, even though a coarser answer (which state, which country) was sitting right there in data the system had already resolved and was already protecting correctly at the city level.

That's not a bug in the anonymity threshold — six distinct visitors is still the right bar for naming a specific city. It's a gap in what happened aftera city didn't clear that bar.

The fix: city, then state, then country

A city's clicks now move through three tiers before landing in "Other":

  • City — shown by name once at least six distinct visitors clicked from it, same as before.
  • State— if the city alone doesn't clear six, its clicks combine with every other sub-threshold city in the same state. If that combined count clears six distinct visitors, the state is shown instead of the city.
  • Country— if the state still doesn't clear six, the country is shown unconditionally. This isn't a new exposure: a plain country breakdown, with no unique-visitor minimum at all, is already shown for every account today. The cascade's last tier just matches that existing behavior instead of inventing a stricter one.

Only a click with no resolvable country at all — a genuine geo-resolution failure, not a small city — still lands in "Other."

What this costs, named plainly

Folding several cities together to check the state-level threshold is a real tradeoff, not a free upgrade. It's the same kind of approximation this system already made peace with for a different reason: unique-visitor counts are summed across calendar days without re-checking whether the same person clicked on more than one of those days, because the hashed identifier used to dedupe visitors intentionally rotates daily for privacy and can't be un-rotated later to check. Extending that same style of approximation across cities within a state is an easier bar to clear than the existing cross-day case — but it's the same category of tradeoff this system was already built around, made explicit rather than left as a surprise.

What didn't change

Every guarantee this feature shipped with originally still holds at every tier: nothing geographic is ever recorded on an individual click record — it only ever exists as a separate aggregate counter with no link back to any specific visit. It's still opt-in, still requires the account to have published its own privacy policy first, and it's still never available for user-attributed links, where a click is already tied to a known recipient.

Frequently asked questions

Does this collect any new data about visitors?

No. City-level analytics already resolved country, state, and city from the click's IP address before this change — that resolution is unchanged. What changed is purely how a city that doesn't clear the anonymity threshold gets displayed: instead of one "Other" bucket, it now has a state and a country tier to fall through first. No new field, no new retention, no new opt-in.

Why does country show up even for a single click?

Because that's already how the plain country breakdown works everywhere else in the dashboard — it's shown to every account by default, gated only by a raw-click threshold that a single click doesn't need to clear for the aggregate to render truthfully at that scale. The city cascade's country tier matches that existing behavior rather than inventing a stricter one, so a link that gets exactly one click from a country still shows "which country," the same way it always has.

Can a small city still be identified indirectly through this?

The same six-distinct-visitor floor still gates both the city and state tiers — a city (or a handful of small cities combined into one state) only shows by name once at least six different people have clicked from it. Folding several small cities into a state before checking that threshold is a real, intentional tradeoff, not a loophole: it's the same category of approximation this system already accepts by summing unique-visitor counts across days without re-checking for repeat visitors, just now also applied across cities within a state.

Do I need to turn anything on to get this?

No. If your account already has city-level click aggregates enabled, the fallback applies automatically — there's nothing new to configure. If you haven't enabled it yet, it's an opt-in toggle in Settings that requires a published privacy policy first, same as before.