# Privacy policy

> What Square Town (square.pov.town) stores — no accounts, no trackers, Stripe for payments, per-square click and view counters, a few localStorage keys — and how to get removed.

Source: https://square.pov.town/privacy

Square Town (square.pov.town) has no user accounts, no advertising, no analytics trackers and no cookies of its own. This page lists everything the site does store or send elsewhere, so you don't have to guess.

> **TL;DR** — We store the URL you put on the wall, its coordinates and counters (clicks, views, kisses). Stripe handles payment and holds your card details, not us. Your browser keeps a few preferences and your deed links in localStorage. Some favicons load straight from Google. We don't sell or share anything.

## What we store, and why

| Data | Where it comes from | Why | How long |
|---|---|---|---|
| The URL/domain of each square, its coordinates, price paid, timestamps | You, at purchase (or an admin seeding sites) | To draw the wall and run the game (evictions, decay) | Until removed or the wall is reset |
| Deed token (a random secret) | Generated at purchase | The only proof of ownership — no accounts | Same as the listing |
| Clicks (`/go/:id`), views (card opened), kisses — as **counts**, per square, per day | Anyone using the wall | The 3D towers, boards and the deed analytics | Indefinitely, aggregated; no per-visitor records |
| Live-feed events (buys, evictions, kisses, unlocks) as text lines | The mechanics above | The feed on the wall and `/stats` | Indefinitely (public by design) |
| Stripe Checkout session id and payment amount | Stripe | To mark a square paid when the webhook arrives | Same as the listing |
| Messages sent through the [contact form](/contact) (kind, optional email, domain, text) | You | To answer takedowns and questions | Until handled, then deleted periodically |

**We do not store**: IP addresses in the database, names, card numbers, browsing history, or anything about who kissed or clicked what. Kisses are anonymous; the anonymous client id sent with a kiss only stops your own browser playing the animation twice and is not stored.

## What your browser stores (localStorage)

`fw_theme` (light/dark), `fw_sound` (on/off), `fw_feed` (feed panel open/closed), `fw_hint` (controls hint seen), and `fw_deeds` — the deed links of squares bought in this browser, so the "My deeds" button can find them. That last one matters: if you clear site data, only your bookmarked deed URLs remain. Nothing here leaves your device except when you open a deed link.

## Third parties

- **Stripe** processes payments. Your card details, email and receipt go to Stripe under [Stripe's privacy policy](https://stripe.com/privacy). We receive a session id, the amount and the metadata we sent (listing id).
- **Cloudflare** hosts the site (Workers, D1, Durable Objects) and, like any host, sees connection metadata (IP, user agent) in transit; Cloudflare may set its own security cookies. See [Cloudflare's privacy policy](https://www.cloudflare.com/privacypolicy/).
- **Google's favicon service** (`www.google.com/s2/favicons`) is where favicons come from. The 3D wall loads icons through our own proxy (`/favicon/:domain`), so Google sees our server, not you. Some parts of the interface — the buy-modal preview, the boards and the square card — load icons directly from Google, so in those moments your browser requests an image from Google and Google sees your IP address and the domain of the icon. If that bothers you, block `google.com` image requests; the wall still works.
- Outbound clicks go through `/go/:id`, a redirect that increments a counter and adds `utm_source=square.pov.town` to the destination URL, so the site you visit can see the visit came from Square Town.

We do not use Google Analytics, Meta pixels, ad networks or any third-party tracking script.

## Real-time updates

The wall keeps a WebSocket open to receive live events (buys, evictions, kisses). This carries only the public event text and listing ids; nothing about you.

## Rate limiting and abuse

To stop trolls spamming kisses or checkouts, our server applies per-IP rate limits at the edge. The IP is used for that decision in memory and is not written to our database.

## Your rights

Whether or not the GDPR applies to you, you can:

- **Have a site removed** from the wall — send a [takedown request](/contact) or email [peter@theill.com](mailto:peter@theill.com); domain owners can always get their domain removed.
- **Ask what we hold about a domain or a deed** — it's the table above; the [API](/api) shows most of it publicly.
- **Delete your data** — removal of a square deletes its record from the live wall; counters and feed lines that mention the domain may remain as history. Contact-form messages are deleted once handled.

We don't hold anything that identifies a person unless you typed it into the contact form, and we won't use that email for anything but replying.

## Children

Square Town is not directed at children and buying requires a payment card. Don't put a child's personal site on the wall without a guardian's consent.

## Changes

We'll update this page if we start storing something new; the `updated` date at the top changes when we do. Substantive changes are announced on the [blog](/blog/).

## FAQ

### Do you use cookies?

Not ours. Preferences and deed links live in your browser's localStorage. Cloudflare may set security cookies at the edge; Stripe sets its own on the checkout page.

### Do you know who bought a square?

No. We store the domain, the coordinates, the deed token and the Stripe session id. Stripe knows who paid; we don't, unless you tell us in the contact form.

### Are clicks tracked per visitor?

No. `/go/:id` adds one to a counter for that square (total and per day) and redirects. No visitor id, no fingerprint, no IP stored.

### Can I be on the wall without Google seeing anything?

The 3D wall itself loads icons through our proxy. A few UI elements load them straight from Google's favicon service; blocking image requests to google.com in your browser removes even that.

### How do I get my domain off the wall?

Use the [contact page](/contact) → "Takedown". We may ask for proof you control the domain, then remove it. No refund to whoever bought it.
