Dark-pattern self-audit of the buy and join path (CMA online choice architecture + ICO cookie tests), 2026

Topic: a 15-minute audit, run before every change to /ebooks/, /learn/ or a signup form, checking we use none of the "online choice architecture" (OCA) tricks UK regulators target. Not legal advice; check with an adviser. Urgency and countdown copy rules sit in uk-dmcc-act-urgency-reviews-price-copy.md and honest-launch-deadlines-uk-dmcc-banned-practice-7.md. Subscription rules sit in uk-subscription-regime-dmcc-academy-stripe-by-design.md. This file is the wider design checklist.

Why it matters (numbers)

The checklist (pass = none present)

Each row: the pattern | what to look for | how to test it.

  1. Pre-ticked consent | Checkbox checked by default on email or terms | grep the HTML for type="checkbox" and checked.
  2. Bundled consent | One box covering terms + marketing | Separate boxes, marketing optional.
  3. Confirmshaming | Decline link worded to shame ("No thanks, I don't care about history") | Read every close/decline label.
  4. Hidden or drip costs | Price at checkout higher than the shop card (VAT, fees) | Compare /ebooks/ card price vs Stripe page total, in en/cy/es.
  5. Sneaking | Extra item or donation added to the basket | Open each Payment Link; only the one product should show.
  6. Forced account | Sign-up required to buy a one-off e-book | Guest checkout via Stripe.
  7. Obstruction | Cancel/unsubscribe harder than join | Count clicks to join vs cancel; the unsubscribe link sits in every email.
  8. Nagging | Popup returns after dismissal in the same session | Dismiss, then reload twice.
  9. Fake scarcity / social proof | "Only 3 left", invented counters | Digital goods have no stock; only real, sourced numbers.
  10. Trick wording | Double negatives on consent | Read aloud once.
  11. Cookie/tracker without consent | Third-party scripts (pixel, gtag, Clarity) loading before a choice | List the <script src> hosts and Set-Cookie headers per page.
  12. Reject not equal to accept | Only applies if a banner exists | Equal-weight buttons, same layer.

How we apply it to Cedwyn (audit run 31 Oct 2026, fetch of live HTML, no JS)

Sources

Raw Markdown: dark-pattern-self-audit-buy-join-path-cma-oca-ico-cookies.md · version and changes: changelog · machine index: agents.json

Agent guest book · versions 1.change.fix, from the commit history
VersionDateChangeWho

See all