A wishlist is a list of things someone has already decided they want.
Esta página solo existe en inglés. La interfaz que la rodea sigue tu idioma.
This page is for the person who decides whether Wishless joins a shop’s affiliate programme, and for the partner manager who decides whether to take us on as a publisher. It says where your product appears inside the product, how every outgoing click is attributed, what our crawler does and does not do, and how to switch it off from your own side, with a mailbox at the shop’s domain itself.
Every item here sits in somebody’s list, not in a feed
We publish no visitor, click or conversion figures on this page. Where a number would have been persuasive, here is the mechanism instead — and you can check every part of it.
Somebody put it in a list
A page of yours becomes an item when it ends up in somebody’s list — most often as a link a person pasted, sometimes as a page we read for them from what they described, sometimes as a row from a small catalogue we curate by hand. Whichever way it arrives, that page was read by our server, never taken from a feed: we take no product feeds, and the merchant’s own page is the only source of data about the product. A position with no link at all — a wish still to be found, or a cash fund — has no button and sends you nothing.
It can carry a date
A list carries an occasion, and the owner can put a calendar date on it — a birthday, a wedding, a baby shower, a housewarming. When there is one, it is not inferred from behaviour: the owner typed it, because the list exists to be handed to friends before that day.
Somebody else pays
A list is made to be handed to other people. The page a friend opens is a different surface from the owner’s own editor, and the two are counted apart in our log. The friend arrives knowing who the gift is for, which of the items are still free, and often with a budget and a date. That is the whole difference between this traffic and browsing.
One page, read once, and shown in 6 places.
Each one is a surface in our own click log. The word under every end of the ribbon is the literal value that click writes into that log.
Title, image, description and price, taken from the page a person pasted. The photo is then served from our own domain through /img/p/{product}, so your CDN is never hotlinked.
Two of those deserve a sentence more. What a Concierge pick can be is decided by our own code: GiftConcierge::candidates() filters on budget, availability, reservation state and any open group gift, and hands over at most 40 items. Which of those the model puts forward, and in what order, is decided by the model — and every id it returns is checked back against that same set. When the model is not called at all, the order is our code’s own. A shop cannot be placed into the picks, because there is no place in the code where commission rate is read. An alternative comes from three deterministic sources in a fixed order: a re-check of the same page, then a neighbouring item of the same list, then the curated seed catalogue. There is no product search in this project, so nothing can be pulled in from outside those three.
The affiliate route is chosen at click time
Nothing a person shares carries an affiliate link. A shared list is /w/{slug}; the button inside it is /out/{item} on our domain, and the decision to route through a network is taken inside that redirect, from our record of your shop as it stands at that moment.
What we record. Four dimensions describe every outgoing click, and every click is written to our own journal the same way: the item’s click id and the surface in their own columns, the occasion and the list read back through the list the click belongs to. Only a click routed through a network carries the four out of the redirect, packed into our own track code; a plain 302 carries none of them.
sid
The item’s click id, minted when the item was created and unchanged for the rest of its life. Of the four, this is the one that travels to you.
s1
The surface it was clicked from: one of the words above, exactly as they are spelled there.
s2
The occasion the list was made for, as one of
birthday, wedding, baby, holiday, graduation, housewarming.
A list made without one records as general, which is the value we see most.
s3
The list itself, so clicks from one shared link stay countable as one link.
What reaches you. One value: sid, in whatever single sub-id parameter your programme provides — it is clickref in one network, subid, afftrack or u1 in others. The surface, the occasion and the list stay on our side, keyed to that id, which is what lets any line in your report be joined back to them — by asking us, not by reading a second field. Nothing about the person travels with it: no name, no mailbox, no list link.
A list link sits in a family chat for a week and a reminder sits in a mailbox for months. Neither of them rots, because the decision has not been made yet: there is no signature to expire and no deeplink to re-sign.
The consequence you can use: on the day your shop moves into a programme, every list already shared starts earning as soon as our merchant table catches up — without anybody touching those lists. No re-import, no migration, nobody asked to re-add anything. One row changes in our merchant table, and links sent out weeks ago route through the network from then on. That row is what the redirect reads at click time. We re-walk the catalogue every night and come back to each shop on the eighth night after its last check, so left alone the change reaches your clicks within eight days; tell us the day you go live and we re-check your domain the same hour. Either way nothing is asked of your side.
Two courtesies, stated plainly rather than buried. If your offer does not cover the visitor’s country, we send them straight to your page instead of letting the network drop them on a homepage — the sale is still yours, only a commission that was never going to exist is gone. And a click we judge suspicious is still written to our ledger and still goes out, as a plain 302 past the network: a deleted click is a disagreement between your report and ours that nobody can explain afterwards.
What you will see in your own log
One page, once, because a person asked for it — and then that same page again now and then, to see whether the price moved.
WishlessBot names itself and points at the page that explains it:
Mozilla/5.0 (compatible; WishlessBot/1.0; +https://wishless.ai/bots)
What it does not do. It does not crawl: no link-following, no sitemap walking, no discovery. It does not keep your pages — the extracted fields are stored, raw HTML is not retained in production. It does not collect prices into a comparison catalogue, and it takes no product feeds from anybody.
One case where it is not our address. When the free load we make ourselves does not come back as a usable product page — an anti-bot wall or a challenge page, but also a timeout, a server error, or a page whose HTML carries no price — that same page is requested once more through a third-party unblocking service. And when a direct load to your host was refused within the last 24 hours, the next link a person pastes skips our own request and goes straight through that service, so for that page it can be the only request you see. Either way it is one such request for the page a person asked for, never a second visit of our own and never a background price re-check. It arrives from their pool of addresses and carries their signature, not ours, so it is not a line you can recognise as WishlessBot, and our per-host counter neither counts it nor holds it back. What does not change: your robots.txt and your opt-out are both checked before it, by the same code that would have made the direct load, so a page we are not allowed to read is not read this way either.
The pace. Your robots.txt decides whether we load the address a person handed us: we read it before that first request, and a path it disallows is never requested — the refusal is the whole outcome, not a step we retry another way. Two honest edges: if your page answers with a redirect we follow the chain without asking again, so the rules are applied to the link we were given rather than to every hop; and if robots.txt is unreachable we read that as no restriction, the way the standard says to. Against a single host, loads start at least 2 seconds apart and — background price re-checks counted in — hold to at most 60 per clock hour. Both are what our own counter enforces; on the rare occasion the counter cannot be reached, a load goes through rather than waiting, so read them as a pace we hold rather than a guarantee riding on every single request. One load can leave several lines in your log in a row: when your shop answers with a redirect, we follow it, at most 5 hops, and that chain is one load walking to the page it was sent for. Some of what reaches you sits outside the count as well, among it the robots.txt read before a page and the fetch of a product photo — once per product when it works, with one spare address tried if that one is gone, and repeats if your CDN turned us away.
The unblocking request described above sits outside it too, and does not come from our addresses at all.
Your images. The product photo is fetched once and afterwards served from our own domain at /img/p/{product}. The address comes from our database by item, never from a query parameter — a proxy that takes a URL in the request is an open relay, and we would rather not run one against your bandwidth or anybody else’s.
The full description lives on Sobre WishlessBot, which is the address printed in the user-agent above.
You can switch us off yourself
Not a request we promise to consider. A switch that works today, on your side of the table.
Give an email address that sits on your shop’s own domain — orders@yourstore.com for yourstore.com. A confirmation link goes to that mailbox — unless three of them have already gone out for your domain in the last day, or the address cannot speak for the host by itself: a mailbox one level below it, like ops@mail.yourstore.com for yourstore.com, or a domain we hold as a public mail service. Those requests wait for a person instead, and nothing about your shop changes while they wait. Follow it, throw the switch, and WishlessBot stops for yourstore.com, for www.yourstore.com, for de.yourstore.com and for every other name ending in it, from that second on.
Immediately means immediately: the block sits in the page fetcher itself, so it covers every branch of the pipeline, including the background price re-checks, and including a link that reaches you through somebody else’s redirect. A request from an address outside your domain is decided by hand and switches nothing off by itself. Afterwards, a link to your shop pasted into Wishless gets a note offering to add the item by hand.
For a timestamped log of our requests to your host, ask for it in the notes field of the same form.
How a list finds more people
No coefficient, no funnel chart. Four things the product does, each of which you can see for yourself.
- One list is opened by many people That is what a list is for. The owner sends one link to everybody invited, and every one of them lands on the same page with your product on it.
- Occasions bring the same people back A date in someone’s address book, once it points at a shared list, brings a mail 14, 7, 3 or 1 day before it — the windows that reader keeps. The same friends come back on a fixed schedule, not when an ad catches them.
- Adding your page takes one step A bookmarklet on the visitor’s bookmarks bar hands the page they are looking at to a tab of ours, already read and one click from a list — your own tab is never closed.
- Only public lists are ever indexed An unlisted list is private content that happens to have a link. It is never in our sitemap and never in the index — one predicate decides that in all four places it matters.
8 interface languages, 9 markets
Which country programmes you would need to open for us, and in what language the person on the other end is reading.
Markets
- Germany DE
- Austria AT
- Switzerland CH
- France FR
- Italy IT
- Spain ES
- Netherlands NL
- United Kingdom GB
- United States US
Interface languages
- English en
- Deutsch de
- Français fr
- Español es
- Italiano it
- Nederlands nl
- Polski pl
- Português pt
Language and currency are two independent axes. The language comes from the visitor’s own choice; the currency comes from the visitor’s country. No price is ever converted. We hold no exchange rate for prices, and an invented rate is a price that will not be there at your checkout. Where an offer states its own currency, that currency wins over the country map — the number on the card is the number the page said.
What we need from you, and what we will not claim
Three things, and they are small
A programme we can join — directly or through a network you already work with. A deeplink format that accepts one pass-through sub-id: we send the item’s click id in it, and the surface, the occasion and the list stay on our side keyed to that id, so any line in your report can be joined back to them. And not blocking WishlessBot — and if you must stop it, the form rather than a subnet ban, because the form stops it everywhere at once and a ban only stops the address you found.
That is the whole list. There is no pixel to install, no SDK, no feed to export and no template to fill in: we read your public product pages the way a person would, and we link people back to them.
What we will not claim
- We do not sell display advertising. There are no banners here, no CPM, no ad formats and no audience segments. If that is what you are buying, we are the wrong publisher.
- We take no product feeds. The only source of data about a product is the merchant’s own page, loaded because a person pasted its link.
- Placement in a list cannot be bought. Lists are ordered by their owners. Concierge picks are chosen by our code on budget, availability and reservation state, never on commission rate.
- Shops that pay us nothing look identical. A shop with no programme is added, shown, reserved and clicked exactly like a shop with one: the same row, the same button, the same place in the list. The only difference on the row itself is the badge — a shop the network catalogue knows gets its logo, every other shop a letter plate — and the badge follows the catalogue, not the commission: a shop we are paid nothing for can carry a logo. The other visible mark is the disclosure line under a list that holds at least one commissioned link, which the law requires and which we show only where such a link is actually there. Nothing in the code that orders or picks items reads a commission rate.
- We publish no visitor, click, conversion, EPC or partner counts on this page, and there is no logo wall and no case study, because we would have to invent them. A manager who catches one invented number discounts the whole page, including the parts that are true.
Every claim above describes code that is running right now, and the numbers on this page — the user-agent, the pace, the redirect ceiling, the 6 surface codes, the reminder windows, the market and language lists — are printed from our configuration at the moment the page is rendered. They cannot quietly stop being true: they would have to change on the page first.
Check us before you answer
Three pages that are live right now, and one address that is already printed on our legal pages.