Onboarding & Confirmation Dialog Copy
Writing onboarding flows and confirmation dialogs that reduce abandonment, build trust, and respect user autonomy — without resorting to manipulative patterns.
10 min read
The full lesson
Onboarding copy is the first real conversation your product has with a new user. Confirmation dialog copy is the moment just before something irreversible happens. Both have the same core problem: designers and writers tend to optimize them for what the product needs (activation, conversion, task completion) instead of what the user needs (understanding, confidence, control). Getting these two surfaces right takes precise language, honest framing, and a clear sense of what users actually need to know.
Why Onboarding Copy So Often Fails
Most onboarding copy fails for one of three reasons: it says too much, it says the wrong things, or it uses language that serves the company rather than the user.
Says too much. Welcome screens packed with feature lists. Tooltip tours that fire on every element. Four paragraphs of context before a single question. Users in onboarding are anxious to reach the value of the product — every extra word is friction.
Says the wrong things. Onboarding often explains what the product does instead of what the user can accomplish. “Our AI-powered document editor uses natural language processing to streamline your editorial workflow” is about the product. “Create polished reports in half the time — just write and we’ll handle the formatting” is about the user’s outcome.
Uses company language. Phrases like “leveraging synergies,” “best-in-class solutions,” and “unlock your potential” are written for internal decks, not users. The perennial offender: “Welcome to [Product Name]!” — a heading that uses the most valuable real estate in any UI to say something the user already knows.
The Four Jobs of Onboarding Copy
Before writing a single word, decide which job each screen is doing. Onboarding copy has exactly four jobs:
- Orient — Tell users where they are and what kind of tool this is. One sentence. Use this only when the product category is genuinely new or unclear.
- Motivate — Show users the specific outcome they’ll get from completing setup. Lead with the user’s benefit, not your features.
- Instruct — Tell users what to do next. One action at a time. Use an imperative verb and a specific object: “Upload your first document,” not “Let’s get started.”
- Reassure — Address the specific fear users have at this moment — data privacy, commitment, irreversibility. Defuse the hesitation before they have to voice it.
Most onboarding screens should do one job well, not all four poorly.
Writing Effective Welcome and Empty-State Onboarding
The first screen a new user sees sets the tone for the whole relationship. The principles below apply to welcome screens, empty states with onboarding calls to action, and first-run experiences.
Lead with the user’s outcome, not the product’s name
| Weak | Strong |
|---|---|
| Welcome to Notion | Your workspace is ready — start with a blank page or pick a template |
| Get started with Figma | Design your first screen — drag a frame to begin |
| Welcome aboard! | You’re one step away from sending your first campaign |
The strong versions tell the user what happens next and why it matters to them. The weak versions announce the obvious.
Calibrate length to context
Onboarding tooltips: 1–2 sentences maximum. Onboarding modal headers: 5–10 words. Onboarding body copy: 2–3 sentences per screen, never a full paragraph. If you need more words than this to explain a step, the step is too complex — break it up or redesign it.
Use progressive disclosure, not information walls
Progressive disclosure means surfacing information exactly when it’s needed. When a user first opens an empty calendar, explain how to add a single event. Don’t explain recurring events, invites, and calendar sharing all at once. Save those details for the moment each one becomes relevant.
Do
Don't
Permission and Data Request Copy
Asking users for permissions — notifications, location, camera, contacts — is one of the most critical and most botched parts of onboarding. The platform gives users a hard binary: allow or deny. What you write in your own UI, just before that prompt, determines how they respond.
The formula that works:
[Specific capability] so you can [specific user benefit] — [reassurance of what you won’t do].
“Get notified when a teammate comments on your work — we’ll only send alerts you ask for” is more convincing than “Allow notifications to stay updated.” The first version answers the user’s implicit question (“What exactly will you notify me about?”) before they have to ask.
For camera or microphone access, address the fear directly. “Take a profile photo — we never record or store video” speaks to a real concern. Saying nothing leaves users filling in the blank with their worst assumption.
Confirmation Dialog Copy: The Anatomy
A confirmation dialog asks a user to explicitly affirm an action before it runs — most often because the action is destructive, irreversible, or has significant consequences. It is a designed friction point: enough friction to prevent accidents, not so much that it blocks intentional actions.
Every confirmation dialog needs four elements:
- A title that names the action, not the consequence — “Delete project?” not “Are you sure?”
- A body that describes the consequence accurately and specifically — “This will permanently delete the project and all 14 files inside it. This cannot be undone.”
- A primary action button labeled with the action — “Delete project,” not “OK” or “Confirm”
- A cancel path — “Cancel” or “Keep project”
The most common confirmation dialog anti-pattern is the “Are you sure?” title. It’s vague, adds no information, and looks identical to every other dialog in the product regardless of severity. Users learn to dismiss it without reading.
Severity-calibrated language
Not all confirmation dialogs carry the same weight. A user deleting a personal note is different from a user deleting a shared production environment. Calibrate the copy — and the visual design — to the actual severity.
| Severity | Title pattern | Body pattern | Primary CTA |
|---|---|---|---|
| Low (reversible) | “Remove from list?" | "You can add it back at any time." | "Remove” |
| Medium (data loss, recoverable) | “Delete this draft?" | "Your draft will be deleted. Any unsaved changes will be lost." | "Delete draft” |
| High (permanent, shared impact) | “Delete ‘Acme Campaign’?" | "This will permanently delete the campaign and remove access for all 8 team members. This cannot be undone." | "Permanently delete” |
| Critical (billing/account) | “Cancel your subscription?" | "Your account will revert to the free tier on June 30. You’ll lose access to exports, custom domains, and team features." | "Cancel subscription” |
Notice that the primary CTA label escalates in weight and specificity. “Remove” is lighter than “Delete draft,” which is lighter than “Permanently delete.” The verb choice signals consequence.
The button label problem
“OK” and “Confirm” are the two most common confirmation button labels and the two worst. They are generic, interchangeable across any dialog, and tell the user nothing about what will happen when they click.
The rule: the primary button label should complete the sentence “I want to ___.” If the title is “Delete project?” the button should read “Delete project” — not “OK,” not “Yes,” not “Confirm.”
Destructive Action Patterns
Destructive actions — permanently deleting data, revoking access, canceling services, transferring ownership — need extra care. The goal is not to make users second-guess every action. The goal is to make sure that when they act, they act with full knowledge.
Use explicit consequence language
Vague: “This will affect your account.”
Specific: “This will revoke API access for all integrations connected to this account.”
The specific version lets users quickly assess whether the consequence applies to them. Vague language forces users to stop and wonder, which creates anxiety without adding protection.
Call out irreversibility once, clearly
“This cannot be undone” is the right phrase for permanent actions. Use it once, in the body copy, not in the title. Do not repeat it three times — repetition reads as alarm-ringing, which trains users to dismiss it, which defeats the purpose.
Consider a friction-based confirmation for critical actions
For high-stakes actions — deleting an organization, canceling a paid subscription with active team members — a type-to-confirm pattern adds genuine friction: “Type the project name to confirm.” Use this pattern when accidental confirmation would be catastrophic. The mechanism itself signals severity, so you do not need alarming copy on top of it.
Do
Don't
Avoiding Confirmshaming and Manipulative Patterns
Confirmshaming means writing the cancel or decline option to make users feel guilty for not proceeding. It became widespread in email signup modals around 2014–2018 and remains common in subscription cancellation flows. Examples:
- “No thanks, I don’t want to save money”
- “Keep my current terrible plan”
- “No, I’ll stay stressed”
As of 2026, confirmshaming and related deceptive patterns — roach-motel cancellation flows, fake scarcity timers, pre-checked consent — are explicitly targeted by the EU’s Digital Services Act and various national consumer protection regulations. Beyond the legal risk, they damage user trust, generate negative word of mouth, and do not produce durable conversions.
The ethical standard for cancel and decline copy is a neutral, informative label that accurately describes what happens when the user clicks: “Keep my current plan,” “Skip for now,” “Cancel.” These labels respect user autonomy and survive legal scrutiny.
Localization Considerations for Onboarding and Dialogs
Onboarding and confirmation dialog copy creates specific localization challenges that affect both UX and engineering.
Button label length expansion. English button labels are typically 1–3 words. German, Finnish, and other compound-word languages can expand them by 40–100%. A button sized for “Delete project” will overflow with the German equivalent. Design buttons to fit 2x the character count of the English string.
Irreversibility phrasing varies by culture. “This cannot be undone” is natural in English. In many languages, a literal translation sounds stilted or overly alarming. Work with localization partners to find culturally equivalent phrasing that carries the same weight without distorting the tone.
Dialog naming across locales. The word “dialog” translates literally in most European languages but may need alternative framing in right-to-left languages and some East Asian locales. Use a content token approach — store strings as semantic keys tied to context, not to the UI element type — so translators have the surrounding context to make the right choice.
Dynamic values in body copy. “You’ll lose access on June 30” is a localized date reference. Confirmation dialogs that contain dates, prices, or team-member counts should pass these as variables rather than hardcoded strings. That way they localize correctly without requiring a separate copy review for each locale.
Checklist Before Shipping
Run through this list before any onboarding screen or confirmation dialog ships:
- No screen opens with “Welcome to [Product Name]!” as the primary heading
- Every CTA names the specific action (“Add your first project,” not “Get started”)
- Every confirmation dialog title names the thing being acted on (“Delete ‘Q3 Budget’?”)
- Primary confirmation buttons use the action verb, not “OK” or “Confirm”
- Destructive dialogs state the specific consequence, including irreversibility once if permanent
- Cancel/decline options use neutral language — no confirmshaming
- Permission priming copy names the specific use and a user benefit
- Copy has been reviewed for deceptive pattern compliance (pre-checked boxes, guilt-trip framing)
- Button labels have been tested at 2x character count for localization headroom
- Onboarding copy has been tested with real new users to verify comprehension and confidence