Trust
We Can't Verify a Follow, So We Don't Pretend To
Why no Shopify app can confirm a social follow, what dishonest designs do about it, and why telling the shopper the truth turns out to work better.
There is a question you run into about ten minutes after deciding to trade discounts for social actions: how do you know they did it?
The answer is that you do not. Not reliably, not at scale, and not without asking the shopper for things they should not give you.
It is worth being precise about why, because the constraint shapes everything downstream.
Why the check is not available
Social platforms do not expose “is this person following this account” to third-party applications. That is a deliberate privacy position, and it is the right one. Reading a shopper’s follow graph would mean identifying them on that platform and querying their relationships, which is a considerable amount of personal data to collect in exchange for three percent off a jumper.
There are things that look like workarounds. You can ask the shopper to log in with the platform, which most will refuse and which collects far more than you need. You can ask for a screenshot, which is trivially faked and creates a support queue. You can watch whether they clicked the link, which tells you they opened a tab and nothing more.
None of them is verification. They are theatre with different production budgets.
What dishonest designs do
There are broadly three bad answers, and they are common enough to name.
The first is implying a check that is not happening. The interface says “Verifying…”, spins for a moment, and marks it done. Nothing was verified. The shopper is being lied to in a small way, and the merchant is being lied to in a larger one, because they think they bought a follow.
The second is the screenshot queue, which shifts the cost onto the merchant. Now somebody is looking at pictures of phone screens to decide whether to approve a three percent discount. The labour costs more than the discount.
The third is collecting far too much — a platform login, a token, a scope that reads the shopper’s account — in exchange for a small reward. That is a genuinely bad trade for the shopper, and an awkward thing to explain in a privacy policy.
The honest answer, and why it works
The alternative is to say it. Directly, in the widget, in the shopper’s own language:
Heads up: I can’t actually check any of these. I’m taking your word for it. Fair enough?
And then give them a real choice about it.
This feels like it should be a disaster. It is not, for three reasons.
Most people are honest when you make honesty legible. Being told plainly that you are being trusted is a surprisingly strong prompt. It is the opposite of the adversarial framing where the shopper is trying to beat a system — there is no system to beat, just a person asking.
The worst case is already priced in. If you set each reward at a level you would happily give to anyone who asked, then a shopper who claims without doing costs you exactly what you had already decided to spend. Add a cap on the total stack and the worst case for any order is a number you chose. The honesty is not a risk you are absorbing; it is a cost you budgeted.
It makes the verified things more valuable. When some rewards run on trust and others are checked by checkout, saying so lets you treat them differently. You can be tighter with the trust ones and genuinely generous with a basket goal, because one of them is real and the other is a gesture.
Label both kinds
The practical consequence for anyone building this: label every reward as one or the other, in the merchant’s admin and in the shopper’s widget.
A merchant setting up a campaign should be able to see, at a glance, which of their rewards are enforced and which are given on trust. That is the information they need to price them. Hiding the distinction — presenting all twenty options in one undifferentiated list — is the same dishonesty as the fake verification spinner, just aimed at the merchant instead of the shopper.
The version we ended up with has fourteen rewards granted on trust and six verified by checkout, and it says so on every card. It is a slightly less impressive-sounding product than one that claims to verify everything. It is also true, which turns out to be the more useful property.