BidWall

What I collect

Privacy Policy

I sell rectangles for money. That business does not need to know who you are, so this site does not try to find out. Below is everything it records — including the parts that are less flattering than “nothing at all”.

Last updated 21 August 2026

01 — Cookies

No tracking cookies, and therefore no banner

This site sets no tracking cookies. Not first-party, not third-party, and not one rebranded as strictly necessary.

There is no cookie banner because there is nothing to consent to. If you have been trained to hunt for the reject-all button, you can stop looking.

The only cookie this site ever sets is the session cookie for the admin console I use to moderate listings, and it is only set when I log in. Nothing on this site sets a cookie for a visitor.

02 — Analytics

What I measure about visitors

Visitor measurement uses privacy-friendly, cookieless analytics. There are two providers, and neither of them sets a cookie:

  • Vercel Web Analyticscounts page views in aggregate, as part of the hosting.
  • Plausibleproduces the live visitor count shown in the strip along the bottom of the board.

Both are aggregate counters. Neither assigns you an identifier, neither builds a profile of you, and neither can follow you to another website.

Plausible earns one extra sentence, because it is the one third-party script this site loads: your browser fetches it from Plausible and it reports a page view. That is the whole interaction. The visitor numbers printed on the board are read back out of Plausible by my server, not by you.

I measure at all because advertisers reasonably want to know the board is being looked at — and because a number like that only means something if it comes from somewhere that is not me. An aggregate count answers the question completely, so nothing more granular is collected.

03 — Product events

The eight events stored in my own database

Separately from the analytics above, this site writes its own product events into its own database. There are eight of them, and this is all eight:

  • billboard_viewsomeone loaded the board.
  • advertisement_clicksomeone clicked a tile.
  • profile_viewsomeone opened a listing’s profile page.
  • website_outbound_clicksomeone clicked through to an advertiser’s own site, which happens via a redirect on this domain.
  • checkout_started, checkout_completed, checkout_canceledthe three possible ends of a purchase.
  • payment_reverseda payment was refunded or charged back, and a listing’s total came down to match.

A row holds the event name, the listing slug and id where a listing is involved, and a small amount of metadata such as how many tiles were on the board or the dollar amount of a checkout.

What a row does not hold: no IP address, no user agent, no cookie, no device or browser fingerprint, and no account id, because there are no accounts. Nothing in these rows identifies you, and nothing in them lets me stitch two rows together into a session or a person.

Two of them are counted up and published. Each listing’s tile clicks and click-throughs appear on its profile page, and the click count also appears on the tile itself once the tile is big enough to print it. What is published is the total and nothing else. A total cannot be taken apart into the people who made it, and these rows could not name them in the first place.

Clicking one tile several times during a visit is counted once. That is decided in the page while you are on it and never written down, so it costs you nothing stored on your device and tells me nothing about you.

04 — Rate limits

The one place an IP address is touched

Three endpoints here accept anonymous writes: starting a checkout, uploading a logo, and recording a tile click. Left open, all three are an invitation. The click endpoint accepts that one event and nothing else — everything else on the list above is written by the server at the moment it knows the thing happened, and none of it is taken from a browser.

So when a request hits one of them, I store a short key derived from the requesting IP address together with a timestamp, and count how many times that key appears inside a window. Checkout allows eight attempts in ten minutes; the other two have their own limits.

Topping up an existing listing is counted a second time, five in fifteen minutes, under its own key. That request asks whether the email address it carries is the one on the listing, and anything that answers a question like that can be asked over and over by someone working through guesses. The limit is what stops it becoming a way to find out which address a company registered with.

Those rows are used for counting and nothing else. They are not linked to a listing, a payment, or an analytics event, and a row outside its window is not counted for anything. I am telling you about this because a policy claiming I never touch an IP address while quietly rate-limiting would be a lie.

05 — Advertisers

What I store if you buy a spot

Buying a spot is the only way this site holds anything about you at all.

  • Public, on your tile and profilecompany name, tagline, logo, domain, your company and founder handles on X, your total contributed, your rank, and how many times your tile has been clicked and clicked through.
  • Stored but never shownyour Stripe customer id, plus the amount and timestamp of each payment.
  • Your email address, which is doing three jobsit is where Stripe sends the receipt and the invoice; it is the only thing that proves a listing is yours, because there are no accounts here and matching that address is what separates you from someone who typed your URL when you come back to top up; and, if you asked for it, it is where the one email described in the next section goes. It is never published, never shown on your tile or profile, and it is not on the board data your browser downloads.
  • Whether you asked for that emaila yes or no, when it was last sent to you, and a random token that unsubscribes you. The token is generated for the row and has nothing to do with your address, so it cannot be worked out from one or used to look one up.

I do not store your card number and I never see it. Stripe is the payment processor and Stripe, not me, is the party that handles card data.

06 — Rank emails

The one email I send, and only if you ask for it

This page used to say I send no marketing email and run no mailing list. That is no longer quite true, and quietly leaving the old sentence up was not an option, so here is exactly what changed and exactly how far it goes.

There is now one automatic email that is not a receipt. If your listing falls out of the top ten, or falls past the cut and stops being drawn, I can email you to say so. A receipt is sent because you paid. This is sent because paying again would undo what happened, which makes it marketing however plainly it is written — so it is treated as marketing rather than dressed up as a service message.

  • Off unless you tick itthere is an unticked checkbox beside the email field when you pay, and that box is the only thing anywhere that switches this on. Leaving it alone never changes a choice you already made.
  • Two triggers, not every rank changeleaving the top ten, and no longer being drawn. Positions move on this board whenever anyone pays; going from #43 to #44 sends nothing, because it is not news.
  • At most one a weeknever within two days of a payment of your own, and worked out once a day rather than every time somebody pays — so a busy day that moves you five times is one email about where you ended up, not five about how you got there.
  • One click to stopevery one of them carries a link that unsubscribes you the moment it is opened. No login, no confirmation screen, nothing to fill in. It stops the email and touches nothing else: your listing, your total, your rank and your ability to top up are exactly as they were.

If one of these hard bounces, or you report one as spam, I stop sending to that address permanently and automatically, on every listing it is attached to. That is self-interested as much as it is polite — the receipts leave from the same place.

That is the entire extent of it. There is no newsletter, no product announcements, no “we have updated our terms”, and your address is never sold, shared or handed to anyone to mail you on my behalf. Everything else from me is still a reply to something from you.

07 — Processors

Who else touches any of this

Six, and not one of them is an ad network.

  • Stripepayments and checkout. It is the controller of your card data, it collects your billing details, and it receives the email address you gave me so it can charge the right person and send the receipt.
  • Supabasethe database holding listings, payments, and the anonymous events above, plus storage for uploaded logos.
  • Vercelhosting, and one of the two cookieless counters above.
  • Plausiblethe cookieless analytics behind the visitor figures on the board.
  • Resenddelivers the rank email in the section above, and only that. It receives your address and the text of the message when one is sent, and it tells my server back whether the message bounced or was reported. If you never tick the box, it never sees you.
  • Logo providerslogo.dev, or Google’s and DuckDuckGo’s favicon services when no logo.dev key is configured.

The logo providers deserve a note, because this is the part most sites get wrong. Tiles never point at them directly. My server fetches the logo and serves it back from this site’s own endpoint, so your browser never talks to a logo provider at all. Visitor IP addresses are not handed to icon services, and no third party learns which tiles you looked at.

08 — Retention

How long I keep it

Honestly: indefinitely, by design.

Placement on this board is permanent. A listing that stays up forever is a record that stays stored forever — that is the same fact said twice, and pretending otherwise would be dishonest. Payment records stay as well, because rank is calculated from them and because a business is expected to keep its financial records.

The anonymous events accumulate as aggregate counts. They do not describe a person, so there is nothing about them that gets safer with age.

If “I keep it until you ask me not to” is not acceptable to you, do not buy a spot. As a visitor, there is nothing of yours to keep in the first place.

09 — Your rights

Removal, correction and erasure

Email contact@bidwall.lol. There is no form and no account settings screen, so mail is the mechanism.

You can ask me to:

  • take your listing off the board;
  • correct your name, tagline, logo, website or handles;
  • change the email address on your listing, or erase it;
  • stop the rank emails — though the link in any of them is faster than I am, and works without asking me;
  • tell you what I hold about your listing.

Send it from an address I can connect to the listing and include your domain, because the domain is the key everything here is stored under.

Erasing the address has a consequence, so I will say it before you ask rather than after. It is the only proof the listing is yours. Erase it and nobody can top that listing up any more, including you — the tile and everything paid for it stay exactly where they are, but climbing would have to go through me by hand. If what you actually want is a different address, ask for that instead and nothing is lost.

Two limits, stated up front. I cannot erase what Stripe holds — Stripe is a separate controller with its own retention obligations, and that request has to go to them. And I keep the record of a payment even after a listing comes down, because financial records have to exist.