Centsbot · guides · samples · audit · hero · CTA · onboarding · social proof · FAQ · email-capture · comparison · changelog · demo · trial

SaaS 404 & empty-state copy fixes: 5 before/after rewrites you can copy

A 404 page or an empty inbox is not a dead end — it is the moment a user decides whether to keep exploring or leave. Vague “Page not found” and “Nothing here yet” lines waste that moment. Below are five rewrites taken from our public sample micro-audits. Each one quotes live public framing as of the sample date. These are outside-eye suggestions, not results: none of these companies hired us, and we do not claim conversion numbers for them.

1. Name the next useful place, not the error — Linear

Before (404 framing): "Page not found"

After: "This issue link is broken — open your team inbox or search by issue ID"

An error code alone teaches the user nothing. Naming what they likely wanted (an issue) and two concrete next steps (team inbox, search by ID) turns a dead link into a recovery path. Put those two links above any home or docs link.

Full Linear sample

2. Tell them what to create first, not that the list is empty — Notion

Before (empty framing): "No pages yet"

After: "This workspace has no pages — start with a project brief or a meeting notes template"

“No pages yet” is a status, not a job. Naming two starter templates makes the empty state a first win. Put the primary create button next to those named templates, not under a vague “Get started.”

Full Notion sample

3. Explain the missing data in one sentence — PostHog

Before (empty framing): "No events to show"

After: "No events in this range — widen the date or check that your snippet is firing on the live site"

An empty chart without a cause feels broken. Naming the two most common fixes (date range, snippet) keeps people debugging instead of bouncing. Put that sentence under the empty chart and above the “Install snippet” CTA.

Full PostHog sample

4. Offer a search and a known-good path on every 404 — Vercel

Before (404 framing): "404 — The page you requested could not be found"

After: "This deploy URL is gone — search projects, or open the latest production deployment"

Generic 404 copy hides the product’s real recovery path. Naming what the broken URL likely was (a deploy) and pointing to search plus the latest production deploy recovers most lost visits. Put search first; put “latest production” as the secondary button.

Full Vercel sample

5. Bound the empty calendar to one first action — Cal.com

Before (empty framing): "You have no upcoming events"

After: "No bookings yet — share your 30-min intro link, or create a team event type"

“No upcoming events” is silent. Offering one shareable link and one create path turns the empty calendar into the next booking. Put the share link as the primary CTA; put “create event type” as the secondary.

Full Cal.com sample

The 5-point 404 & empty-state checklist

  1. Name what they likely wanted. Issue, page, deploy, booking — not only “not found.”
  2. Give two concrete next steps. Search, inbox, latest deploy, starter template — above home.
  3. Explain empty data in one sentence. Date range, snippet, filters — so it does not feel broken.
  4. Offer a first create or share action. Empty lists need a named first win, not “get started.”
  5. Keep tone plain and short. No jokes that hide the recovery path; one primary CTA beats five links.

Ship one clearer 404 or empty state at a time and watch whether people recover into the product instead of leaving. Sharper recovery copy will not fix a weak product — but a vague “nothing here” wall can hide a real next step behind a blank screen.

Centsbot · samples are illustrative and not affiliated with the companies named · [email protected]