Thank You Page Examples

A good thank you page confirms what just happened, says what arrives next and when, and offers exactly one useful next step. Below are fifteen original designs for orders, sign-ups, bookings, downloads, donations and more, each written in plain HTML and CSS you can edit here and copy into your own site.

Match the next step to what the visitor just did
Visitor just...ConfirmBest single next step
Bought somethingOrder number, items, delivery estimateTrack order or create an account
Joined a newsletterWhich address, how often you sendCheck inbox to confirm, or read a starter post
Booked a timeDate, time, place or video linkAdd to calendar
Downloaded a fileFile name, a backup download linkRelated guide or tool
Sent a contact formReply time, a copy of their messageBrowse answers to common questions
DonatedAmount, receipt by emailShare or set up a monthly gift

Updated

Most visitors reach a thank you page at the moment they trust you most, then leave because the page says nothing. These examples are built for that moment. Each one is a complete, editable snippet for a fictional business, sized to drop into a page, and each shows a different way to steer the visitor toward the step that matters next.

Thank you page checklist

After a purchase

1. Order confirmed with a big order number

The number is the first thing support will ask for, so it gets the largest type after the heading.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #f0fdf4; border: 1px solid #bbf7d0 }
  .num { font: 700 26px ui-monospace, monospace; letter-spacing: 1px; margin: 6px 0 12px }
  .btn { background: #15803d; color: #fff }
</style>
<div class="ty"><h2>Order confirmed</h2><p>Thanks, Priya. A receipt is on its way to [email protected].</p>
  <div class="num">#HB-20481</div><p>Two loaves, ready for pickup tomorrow from 7am.</p><a class="btn" href="#">View or change order</a></div>

2. Shipping timeline

Three steps show where the order is and set the delivery window before anyone has to ask.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fff; border: 1px solid #e5e7eb }
  ol { display: flex; gap: 8px; padding: 0; list-style: none; margin: 12px 0 }
  li { flex: 1; padding: 8px; border-radius: 8px; background: #f3f4f6; font-size: 13px; text-align: center }
  li.on { background: #1d4ed8; color: #fff }
  .btn { background: #1d4ed8; color: #fff }
</style>
<div class="ty"><h2>Your order is in</h2><p>Estimated delivery: Thursday 16 to Saturday 18 October.</p>
  <ol><li class="on">Received</li><li>Packed</li><li>On its way</li></ol><a class="btn" href="#">Track parcel</a></div>

3. Guest checkout to account

A guest buyer already typed an email, so the page offers a password field to keep the order history.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fafaf9; border: 1px solid #e7e5e4 }
  label { display: block; font-size: 14px; margin-bottom: 6px }
  input { width: 100%; box-sizing: border-box; padding: 9px; border: 1px solid #a8a29e; border-radius: 8px; margin-bottom: 10px }
  .btn { background: #292524; color: #fff; border: 0 }
</style>
<div class="ty"><h2>Paid. Thank you!</h2><p>Want to track this and future orders? Add a password and you are done.</p>
  <label for="pw">Password for [email protected]</label><input id="pw" type="password"><button class="btn">Save my account</button></div>

4. Related add-on, below the confirmation

The offer sits under the confirmation details and relates to what was bought, so it reads as help rather than a hard sell.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fff; border: 1px solid #e5e7eb }
  .add { display: flex; gap: 12px; align-items: center; padding: 12px; border-radius: 10px; background: #fef3c7 }
  .add div { flex: 1 }
  .btn { background: #b45309; color: #fff; font-size: 14px }
</style>
<div class="ty"><h2>Your tent is booked for dispatch</h2><p>Order #T-7712. Arrives in 3 to 5 working days.</p>
  <div class="add"><div><strong>Matching footprint groundsheet</strong><br>Ships in the same box if added within an hour.</div><a class="btn" href="#">Add</a></div></div>

After a sign-up

5. Check your inbox

Double opt-in lists need this step. Naming the sender and subject line helps people find the email quickly.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #eff6ff; border: 1px solid #bfdbfe; text-align: center }
  .mail { font-size: 40px; line-height: 1 }
  small { color: #6b7280 }
</style>
<div class="ty"><div class="mail" aria-hidden="true">&#9993;</div><h2>One more step</h2>
  <p>We sent a link to <strong>[email protected]</strong> from Garden Notes, subject "Confirm your subscription".</p>
  <small>Nothing there after five minutes? Check spam or <a href="#">send it again</a>.</small></div>

6. Welcome with a starter read

Once someone is subscribed, point them at the best thing you have already published instead of making them wait for the next issue.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fff; border: 1px solid #e5e7eb }
  .card { display: block; padding: 12px; border-radius: 10px; background: #f5f3ff; color: #4c1d95; text-decoration: none; margin-top: 8px }
</style>
<div class="ty"><h2>You're on the list</h2><p>Garden Notes arrives every other Sunday. Start with the most-read issue:</p>
  <a class="card" href="#"><strong>Planting garlic in October</strong><br>Six minute read</a></div>

7. Free trial started

A short three step setup list turns an empty account into progress, with the first step marked as the place to begin.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #0f172a; color: #e2e8f0 }
  .ty p { color: #cbd5e1 }
  ol { margin: 0 0 12px; padding-left: 20px }
  .btn { background: #38bdf8; color: #0f172a }
</style>
<div class="ty"><h2>Your 14 day trial is live</h2><p>Three things to try first:</p>
  <ol><li>Import your client list</li><li>Send your first invoice</li><li>Turn on payment reminders</li></ol><a class="btn" href="#">Import clients</a></div>

After a booking or a message

8. Appointment with add to calendar

Date, time and place in a compact block, with calendar and reschedule links right next to them.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fff; border: 1px solid #e5e7eb }
  dl { display: grid; grid-template-columns: 70px 1fr; gap: 4px 10px; margin: 0 0 12px }
  dt { color: #6b7280 } dd { margin: 0 }
  .btn { background: #0f766e; color: #fff }
</style>
<div class="ty"><h2>See you on Friday</h2><dl><dt>When</dt><dd>Fri 17 Oct, 10:30 to 11:15</dd><dt>Where</dt><dd>Dock Street Physio, room 2</dd><dt>With</dt><dd>Ana Ruiz</dd></dl>
  <a class="btn" href="#">Add to calendar</a> <a href="#">Reschedule</a></div>

9. Discovery call booked with prep questions

A short prep list makes the call more useful and quietly sets expectations for both sides.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fdf4ff; border: 1px solid #f5d0fe }
  ul { margin: 0 0 12px; padding-left: 20px }
</style>
<div class="ty"><h2>Call booked for Tuesday at 2pm</h2><p>The video link is in your calendar invite. To make the 20 minutes count, think about:</p>
  <ul><li>How many pages your site has today</li><li>Your launch date, if you have one</li></ul><a href="#">Need to move it?</a></div>

10. Message received with reply time

Repeating the message back proves it arrived, and a real reply window stops people sending it twice.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fff; border: 1px solid #e5e7eb }
  blockquote { margin: 0 0 12px; padding: 10px 12px; border-left: 3px solid #9ca3af; background: #f9fafb; color: #374151 }
</style>
<div class="ty"><h2>Message sent</h2><p>We answer within one working day, usually sooner.</p>
  <blockquote>Do you deliver to Westbrook on Saturdays?</blockquote><a href="#">Read delivery questions and answers</a></div>

11. Quote request with a reference

A reference number and a named person make a quote request feel handled rather than lost in a queue.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fffbeb; border: 1px solid #fde68a }
  .ref { font: 600 15px ui-monospace, monospace }
</style>
<div class="ty"><h2>Quote request received</h2><p>Reference <span class="ref">Q-3391</span>. Tom will visit or call within two days to measure up.</p>
  <p>Have photos of the roof? Reply to the confirmation email and attach them.</p></div>

After a download, donation or event sign-up

12. Download with a backup link

Browsers sometimes block automatic downloads, so a visible link and the file size cover the case where nothing appeared.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fff; border: 1px solid #e5e7eb }
  .file { display: flex; justify-content: space-between; padding: 10px 12px; border-radius: 8px; background: #f3f4f6; margin-bottom: 12px }
</style>
<div class="ty"><h2>Your checklist is downloading</h2><div class="file"><span>launch-checklist.pdf</span><span>320 KB</span></div>
  <p>Did not start? <a href="#">Download it directly</a>. Next, try the matching guide on writing your homepage.</p></div>

13. Donation with impact and receipt

Saying what the gift does and confirming the receipt beats a generic thanks. The monthly option is offered once, gently.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #ecfeff; border: 1px solid #a5f3fc; text-align: center }
  .amt { font-size: 32px; font-weight: 700; margin: 4px 0 }
  .btn { background: #0e7490; color: #fff }
</style>
<div class="ty"><h2>Thank you for your gift</h2><div class="amt">$40</div><p>That covers a week of meals for one shelter guest. Your receipt went to [email protected].</p>
  <a class="btn" href="#">Make it monthly</a></div>

14. Event registration with a ticket

A ticket shaped block holds the details people look for on the day: date, doors and their name.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #fff; border: 2px dashed #6366f1 }
  .t { display: grid; grid-template-columns: 1fr auto; gap: 6px; font-size: 14px; margin-bottom: 12px }
  .btn { background: #4f46e5; color: #fff }
</style>
<div class="ty"><h2>You're registered</h2><div class="t"><span>Riverside Makers Fair</span><strong>Sat 25 Oct</strong><span>Name on the list: Dee Mills</span><span>Doors 10am</span></div>
  <a class="btn" href="#">Add to calendar</a></div>

15. Waitlist with a referral nudge

A waitlist is the one place a share prompt fits, because inviting friends gives the visitor something they want.

<style>
  .ty { max-width: 460px; margin: 0 auto; padding: 22px; border-radius: 14px; font-family: system-ui, sans-serif }
  .ty h2 { margin: 0 0 6px; font-size: 22px }
  .ty p { margin: 0 0 12px; color: #374151 }
  .ty .btn { display: inline-block; padding: 10px 16px; border-radius: 8px; text-decoration: none; font-weight: 600 }
  .ty { background: #111827; color: #f9fafb }
  .ty p { color: #d1d5db }
  .link { display: flex; gap: 6px }
  .link input { flex: 1; min-width: 0; padding: 8px; border-radius: 6px; border: 0 }
  .btn { background: #f59e0b; color: #111827; border: 0 }
</style>
<div class="ty"><h2>You're number 412 on the waitlist</h2><p>Each friend who joins with your link moves you up 10 places.</p>
  <div class="link"><input aria-label="Your invite link" value="https://example.com/r/k9f2" readonly><button class="btn">Copy</button></div></div>

Why the page after the form matters

A form submission or checkout is the one time you know exactly what someone wanted. The page that follows can calm doubts, prevent support emails and start the next relationship step, or it can be a dead end that just says thanks.

Write the page as the answer to the visitor's next question. After paying, that is when the parcel arrives. After booking, it is where to go and how to reschedule. After a download, it is whether the file actually saved.

Accessible confirmation

Give the page a clear heading such as Order confirmed rather than a lone icon, and avoid relying on colour alone for success. If you show the confirmation inline instead of on a new page, place it in an element with role="status" so screen readers announce it politely without moving focus.

How it works

  1. Scroll the examples by situation: purchases, sign-ups, bookings, downloads and messages, then donations and events.
  2. Edit the code beside any example and the result frame updates as you type. Scripts are switched off in the frame.
  3. Copy the snippet, swap in your own wording and colours, and place it on the page your form or checkout sends people to.
  4. Run through the checklist above the examples before you publish, so the page answers what visitors will be wondering.

Tips

Frequently asked questions

What should a thank you page say?

Three things: a confirmation of exactly what happened, what the visitor should expect next and when, and one clear action to take now. Everything else is optional.

Should a thank you page be indexed by search engines?

Usually not. Add <meta name="robots" content="noindex"> to the head. Google notes that if robots.txt blocks the page, its crawler never sees the noindex rule, so do not block the same page in robots.txt as well.

Is a thank you page better than an inline success message?

A separate page has its own address, which makes conversion tracking simple and gives you room for a next step. An inline message keeps people in place, which suits small forms like a comment box. Both should confirm what happened in words.

What makes a good order confirmation page?

The order number in large type, a short summary of items and total, the delivery or pickup estimate, the email address the receipt went to, and a single link to track the order or manage it.

Can I upsell on a thank you page?

Yes, if the offer clearly relates to what they just did and it does not push the confirmation details down. A matching accessory or a referral reward is far more welcome than a generic sale banner.

Related: 404 page examples, Contact us page examples, Empty state examples, How to add a contact form, Sitemap and robots examples.

Start for free or see all free tools. We.Inc is free to start, with no card needed. AI building is on paid plans from $20 a month.

More in Guides

We.Inc is an AI-powered website builder you can resell under your own brand. Launch a branded client dashboard, bill on Stripe Connect, and deliver AI-generated websites in minutes. White-label plans start at $99 a month for 25 client sites, with a 7-day free trial and no per-site fees.

Product

Who It's For

Features

Resources

Company

View Sitemap