Confirmation emails: what to send, with examples
How to send a confirmation email: sign-up, order, booking and subscription examples, what each should say, the subject lines to use and how to send one with Boundry.
A confirmation email is a message you send straight after someone does something, to confirm it happened or to confirm that the address they gave is theirs. Send one whenever a person signs up, places an order, books a time, changes an account setting or joins a list, and write it so the reader can see what happened and what to do next without opening anything else.
There are two jobs hiding under that name, and they need different emails. Mixing them up is the most common mistake: an address confirmation asks the reader to do something, while an action confirmation tells them something is done.
What is a confirmation email?
A confirmation email is a transactional email: one message, triggered by one action the recipient took, that they expect to arrive within seconds. Because it is triggered by the person and not scheduled by you, it is a different kind of mail from a newsletter or a promotion. Our guide to what transactional email is covers the wider category.
- Address confirmation: proves the person owns the address. Sign-up verification, double opt-in for a list, and confirming a changed email address are all this kind. It contains one link or code and nothing else the reader has to think about.
- Action confirmation: records that something was done. An order confirmation, a booking confirmation, a subscription confirmation, a cancellation confirmation. It contains the details the reader may need later.
- Often one email does both. A sign-up email that says 'welcome, confirm your address to start' is an address confirmation with a short welcome around it.
Types of confirmation email, with examples
These are example subject lines and the content each email needs. Treat the wording as a starting point and use your own product's voice.
- Sign-up confirmation. Subject: 'Confirm your email address for Acme'. Body: one sentence on what they signed up for, one button with the confirmation link, the time the link expires, and a line saying to ignore the email if it was not them.
- Order confirmation. Subject: 'Your Acme order #1042 is confirmed'. Body: what they bought, the total and currency, the delivery or access details, the billing address if relevant, and how to get help.
- Booking or appointment confirmation. Subject: 'Booked: Tuesday 14 July, 10:30am'. Body: the date, time and time zone, the place or link, how to reschedule or cancel, and what to bring.
- Subscription or double opt-in confirmation. Subject: 'Please confirm your subscription'. Body: what they will receive and how often, a confirm button, and where to unsubscribe later. Do not send the content until they confirm.
- Account change confirmation. Subject: 'Your Acme password was changed'. Body: what changed, when, and what to do if it was not them. This one doubles as a security alert.
- Cancellation or refund confirmation. Subject: 'Your Acme subscription is cancelled'. Body: the date it ends, whether anything is owed or refunded, and how to come back.
What to include in a confirmation email
- A subject line that names the action and the thing. The reader is often scanning for it later, so 'Your order #1042 is confirmed' beats 'Thanks!'.
- A sender name people recognise, from a domain you have authenticated. A confirmation from a different or unfamiliar domain looks like phishing.
- The key detail in the first lines: the order number, the booking time, the code. Do not make people scroll for it.
- One clear next step, as a real link or button. For address confirmation this is the only thing in the email that matters.
- A plain-text version alongside the HTML one, so the email reads in every client and the link is always visible.
- A line for the wrong person: 'If you did not create this account, you can ignore this email.' It protects people whose address someone else typed.
- A way to get help, such as a reply address that a person reads.
- Nothing promotional. Marketing content in a confirmation lowers how well it is treated and makes the message harder to use.
How to send a confirmation email
Send it from your server in response to the event, not from the browser, and send it straight away. Sending it as soon as the event occurs means the person does not need to retry. The flow for an address confirmation looks like this:
- Create the account or order in your database and mark the address as unconfirmed.
- Generate a random token, store a hash of it with an expiry (an hour to a day is common) and tie it to that user.
- Send the email with a link containing the token to a page on your own domain.
- When the link is opened, show a confirmation page without changing anything. When the person submits it (a POST), check the token and expiry, mark the address confirmed, and invalidate the token so it works once.
- Offer a way to resend, and limit how often, so the form cannot be used to flood someone's inbox.
That is why the link should open a page that asks for a click before it changes anything. Some mail scanners follow every link in a message, and a link that confirms on a plain GET request can be triggered by the scanner rather than the person.
Send a confirmation email with Boundry
With Boundry you send it with one call to the emails API from the JavaScript, Python, Go, Ruby or PHP SDK, or with POST /emails directly. The example below uses the JavaScript SDK and sends from a domain you have verified in your project. Create the token and store it yourself first, as above.
import Boundry from "boundry-sdk";
const client = new Boundry({
apiKey: process.env["BOUNDRY_API_KEY"],
});
const link = `https://acme.com/confirm?token=${token}`;
await client.emails.send({
from: "Acme <accounts@mail.acme.com>",
to: user.email,
subject: "Confirm your email address for Acme",
html: `<p>Confirm your address to finish setting up your Acme account.</p>
<p><a href="${link}">Confirm email address</a></p>
<p>This link expires in 1 hour. If you did not sign up, ignore this email.</p>`,
text: `Confirm your address to finish setting up your Acme account: ${link}\n\nThis link expires in 1 hour. If you did not sign up, ignore this email.`,
});Boundry projects are bound to one region, and the Sydney region (ap-southeast-2) is the one live today, so the message and its delivery record are stored there. That matters for a confirmation email because it carries a person's address and often their name.
After sending, Boundry reports what happened to the message as events: email.delivered when the recipient's server accepts it, and email.bounced when it does not. Subscribe a signed webhook to those events to find out when a confirmation never arrived, and show the user a message about the address rather than leaving them waiting.
The sending documentation lists every field the emails API accepts. Read the sending docs
Why a confirmation email does not arrive
- The address has a typo. Show the address back on the page ('We sent an email to ava@northwind.com.au') and let the person correct it.
- The domain is not authenticated. Publish SPF and DKIM records for your sending domain and a DMARC policy, so receivers can tell the email is yours.
- It is in the spam folder. Mention checking spam on the page, and keep the email short, plain and free of marketing content.
- It bounced. A hard bounce is a permanent failure for that message. Check the diagnostic code: invalid addresses, policy rejections and authentication failures need different fixes. See the bounce guide for what each code means.
- It was sent too late or too often. Send immediately, and throttle resends.
Bounce codes and what to do about each one are in the email bounces guide. Email bounces, explained
If you are still picking a provider for these messages, the checklist covers what to compare. Choosing a transactional email API
Confirmation emails are one of the core transactional email types. What is transactional email?
Frequently asked questions
What is a confirmation email?
A confirmation email is a message sent straight after someone takes an action, to confirm it happened or to confirm that the address they gave is theirs. Sign-up verification, order confirmations and booking confirmations are all confirmation emails.
What should a confirmation email say?
Name the action in the subject line, put the key detail (order number, booking time, code) in the first lines, give one clear next step, tell the wrong person they can ignore it, and say how to get help.
What is the difference between a confirmation email and a verification email?
A verification email asks the reader to prove they own the address, usually with a link or code. A confirmation email more broadly records that an action, such as an order or booking, was completed. A sign-up email often does both.
How soon should a confirmation email be sent?
Straight away, within seconds of the action. People are waiting on it and will retry or abandon the task if it is late.
Is a confirmation email a transactional email?
Yes. It is triggered by an action the recipient took and they expect it, which is what makes an email transactional. Keep promotional content out of it.
Why is my confirmation email going to spam or not arriving?
The most common causes are a mistyped address, a sending domain without SPF, DKIM and DMARC set up, promotional content in the message, and a bounce from the recipient's server. Check the delivery events for your message to see which.
How do I send a confirmation email with Boundry?
Call the emails API (POST /emails, or emails.send in an official SDK) from your server with a verified sending domain, the recipient, a subject, and an HTML and plain-text body containing your confirmation link.