Usability heuristic

Transparency

Show the full price, terms and data use up front, in plain words, so people know exactly what they are agreeing to.

Transparency The same intro offer of 9 euros for 3 months, twice. In one, the 15 euros a month renewal price sits in pale fine print under the button. In the other, then 15 euros a month is written large right under the offer, above the button. Renewal price buried in fine print Intro offer €9 for 3 months Start now For new subscribers only. After the intro period your plan renews at €15/month until you cancel. Terms apply. 1 Full price next to the offer Intro offer €9 for 3 months Start for €9 Renews automatically. Cancel anytime. then €15/month 1 1 What will it cost after month 3? Answered before the tap, not after
The same intro offer with the €15/month renewal price in pale fine print under the button, and with it written large beside the offer before the user taps.

Transparency means the user can see what a choice costs and what happens next before they commit: the price after a discount ends, what a "free" option turns into, which data goes to which vendor. On this site it covers pricing clarity, fair terms and informed choice. Vague lines like "Verified for your privacy" or "Enable free access" fail it because they hide the real deal behind a reassuring label.

The evidence that hiding costs works in the short term is strong, which is why it needs a rule. In a large field experiment on StubHub, Blake, Moshary, Sweeney and Tadelis (2021) found that showing fees up front instead of at checkout reduced both how many tickets people bought and how expensive they were. The FTC's 2022 dark patterns report lists advertising only part of the total price and burying junk fees as deceptive design. Baymard's checkout research finds that unexpected extra costs are the most common reason shoppers abandon a cart.

In onboarding and paywalls the hidden part is usually the renewal price, the trial end date, or what data you share. Hiding it may lift the first conversion, but it moves the cost to refunds, chargebacks, app store complaints and churn once people find out.

How to use it

  • Put the price after any intro offer next to the offer itself, for example "€9 for 3 months, then €15/month".
  • Name exactly what a trial or "free access" becomes, when it converts, and how to cancel, on the same screen as the button.
  • When asking for data or AI features, say what is shared, with whom, and why, as a separate choice from the core product.

Watch out

  • Technically disclosing terms in grey fine print or behind a sticky footer is not transparency; if the key number is harder to read than the CTA, it is hidden.
  • Labels like "free" for something that auto-converts to paid cross into deception and invite regulatory and store-review trouble.

Related

Transparency in real products 22 working · 22 not

Preset: Names the vendor and the data Preset (working) Names the vendor and the data Sample data and "distinct values" shared "with OpenAI" is a separate opt-in from metadata. OpenAI API: Receipt before paying OpenAI API (working) Receipt before paying "Due today" with item, tax and total leaves no doubt about the charge. Bricks: Plan in plain language Bricks (working) Plan in plain language The chat lists every block and chart type it built and why. Supabase: Price in the copy Supabase (working) Price in the copy "Custom Domains for an additional $10/month per domain" is stated before the upgrade click. Snowflake: Every object listed Snowflake (working) Every object listed Database, warehouse, user, password and role are spelled out, so an admin knows what will change. Snowflake: Default access stated Snowflake (working) Default access stated "By default, Sigma is granted the PUBLIC role" tells admins exactly what Sigma can see. Databricks: Consequence stated first Databricks (working) Consequence stated first "By clicking Next, Databricks will create the following resources" says what Next does before you press it. Databricks: Trial clock and pricing Databricks (working) Trial clock and pricing "14 days left in your Team plan trial" with a Plans & Pricing link, without blocking anything. Databricks: Token disclosure Databricks (working) Token disclosure "A personal access token is generated on your behalf and securely shared with Fivetran" says what will happen to your credentials. Canva: What you keep Canva (working) What you keep Access runs until "April 5, 2025" and you keep your designs, which leaves the door open to come back. Linear: Limits in plain numbers Linear (working) Limits in plain numbers Free shows 10MB, 250 issues and 2 teams, so the reason to upgrade is concrete. Julius: Prompts in the open Julius (working) Prompts in the open Workflow Steps show the exact prompt text, so the AI step isn't a black box. Supabase: Grace period, with a date Supabase (working) Grace period, with a date "Fair Use Policy will apply starting from October 22" gives a concrete deadline instead of an instant cutoff. Podcastle: Timing made clear Podcastle (working) Timing made clear "Downgrade you to a Basic account at the end of your current billing cycle" answers the first worry. Podcastle: Cancel is not hidden Podcastle (working) Cancel is not hidden "Cancel anyway" is the same size as the keep option, which avoids a dark pattern. Semrush: Price after the trial Semrush (working) Price after the trial "7 days free, then $139.95/mo. Unsubscribe anytime." sits next to the button. Lightdash: Honest about limits Lightdash (working) Honest about limits "We only support warehouses that have verified dbt adapters for now". Clerk: First Day Free Clerk (working) First Day Free Users only count as active if they return after 24 hours, so signup spikes don't cost you. Clerk: Add-on gets its own column Clerk (working) Add-on gets its own column The comparison table shows "Pro plan with Authentication add-on" as a column, so you see what it adds. Tinybird: Unit prices in plain sight Tinybird (working) Unit prices in plain sight $0.07 per processed GB, $0.34 per stored GB, listed on the card. MotherDuck: Hover explains the trial MotherDuck (working) Hover explains the trial The tooltip says the trial includes "unlimited access" and ends on 7/7/2024. Holistics: Tooltip explains the trade-off Holistics (working) Tooltip explains the trade-off "Otherwise, only admins have access" says what unchecking costs. Dazzle AI: Vague privacy line Dazzle AI (not working) Vague privacy line "Verified for your privacy" does not say what is verified or why a phone number protects anyone. Slack: Price after the discount is hidden Slack (not working) Price after the discount is hidden Only €9 for 3 months is shown; the price from month 4 is not. Printer app: Vague "free access" Printer app (not working) Vague "free access" "Not sure yet? Enable free access" doesn't say how long it lasts or what it turns into. Measuring app: Free access that isn't Measuring app (not working) Free access that isn't "Free access enabled!" is a 3-day trial that converts to a paid plan. Sober Tracker: Monthly cut off Sober Tracker (not working) Monthly cut off The sticky footer hides most of the Monthly row, so its terms are hard to read. Cursor: Usage in multiples, not units Cursor (not working) Usage in multiples, not units "3x more usage than Pro" only means something if you know what Pro includes. Hex: "Limited" with no number Hex (not working) "Limited" with no number "Limited agent usage" on Free doesn't say how limited, so the loss is hard to judge. OpenAI API: Expiry in the fine print OpenAI API (not working) Expiry in the fine print "Non-refundable and expire one year from purchase" is grey small text under the card. Cube Cloud: Unexplained locks Cube Cloud (not working) Unexplained locks Elasticsearch, OpenSearch and ksqlDB show a lock with no hint of what plan unlocks them. Notion: No price on the button Notion (not working) No price on the button "Upgrade to member" adds paid seats, but the cost per member is nowhere on the popover. Neon: Upgrade to what? Neon (not working) Upgrade to what? The button names no plan or price, so the click is a leap of faith. Grammarly: Annual lock-in in the subhead Grammarly (not working) Annual lock-in in the subhead "for a Year of Grammarly Pro" means a yearly commitment, easy to miss under the big monthly price. Supabase: Two purchases in one Supabase (not working) Two purchases in one The $4 add-on is "unavailable on the Free Plan", so the real cost is a plan upgrade plus $4, and only the $4 is shown. Databricks: Nothing about your setup Databricks (not working) Nothing about your setup The main column repeats the blurb; it never shows which user, warehouse or token was created. Google Cloud: Vague deadline and cost Google Cloud (not working) Vague deadline and cost "After 30 days, your work may be deleted" gives no date and nothing on what activation costs. Nibble: Renewal price in grey Nibble (not working) Renewal price in grey Auto-renewal at full price of €59.97 sits in small, light grey text under the button. Semrush: Sessions list collapsed Semrush (not working) Sessions list collapsed "This account was logged in from:" is folded, so you don't see which devices without a click. MotherDuck: Overage only on paid MotherDuck (not working) Overage only on paid Free shows "None" for extra compute and storage, so users only learn what overage costs once they pay. Google One: No price or plan named Google One (not working) No price or plan named "Upgrade Google One plan" doesn't say what the next tier costs or gives. Holistics: Unclear value metric Holistics (not working) Unclear value metric "3,000 Query Runs" is the limit, but what counts as a run is hidden behind an info icon. Peaka: No saving shown Peaka (not working) No saving shown The toggle doesn't say how much annual saves over monthly. Peaka: Sliders with no prices Peaka (not working) Sliders with no prices "Add extra minutes of query" sliders show units but not what they cost.