Help · Content
Before an email goes out
Previewing
Preview opens the email in a large window over the editor, drawn the way it will arrive. You can draw it as a real person on your list, switch it to the dark palette or to mobile, and mail one copy to somebody. Previewing itself mails nothing.
The right-hand side of the editor always shows the email as you build it. Preview opens the email in a large window over the dimmed editor and makes it the thing itself: you can draw the email as a real person on your list, switch it to the dark palette or to mobile, and mail one copy of it to somebody. On desktop it sits in a reading pane the width of a desktop inbox, under the sender, subject line and preview text a mailbox would show; on mobile it stands in a panel the size of a mobile screen. A campaign's View the email shows it the same way. On a mobile screen the window is the whole screen and shows the email on mobile. Done, the ×, or Escape takes you back to editing.
Previewing itself mails nothing. Drawing the email as somebody, switching to the dark palette, reading it at phone width — none of it reaches anybody on your list. The one control on this screen that puts an email in a real mailbox is Send a test, and it says so before it does it.
Pressing a link in the preview does nothing, and a line under the email says so:
Links work in the sent email.
A preview is for looking. A link that worked here would either open a window your browser may quietly refuse, or carry you out of the editor to a shop page — and neither is what you were doing. Your addresses are unchanged and go out exactly as they were saved; to follow one, send yourself a test.
The unsubscribe link is the one worth saying more about. It is a permanent credential: whoever holds it can opt that person out, and it never expires. So the link drawn on screen carries a sample address rather than a real customer's — a working opt-out has no business sitting inside a design tool, or in a screenshot you share with somebody. It is built to be exactly as long as the real thing, so nothing about the email you are looking at is different. In an emailed test the link is real and signed, and that is where checking your own unsubscribe page belongs.
Sample values, and showing as someone
The strip above the email — in the editor and in Preview — says whose information the email is drawn with. You choose once and it holds everywhere: the preview, the sees: line under a property, and Preview itself. Your choice is remembered for your store in this browser — only which profile it was, never their name or address — and it is checked again each time you open the editor.
With nobody chosen, the strip says:
Showing sample values
The sample values are a stand-in first name and that sample unsubscribe link. The name is long on purpose. The size of an email is measured with it, and a short name would clear an email that a send then refuses — so the measurement stays pinned to the sample whoever you are previewing as, and says so:
This size is always measured with the sample values, so it matches what a send would check.
Choose a profile opens a search over everyone on your list. There is no filter on it at all, because previewing is not sending: what an unsubscribed customer's copy would have looked like is a fair thing to want to see. Search by name or email, and more than one word narrows further in any order — dana @example.com finds the Dana at that domain. The first result is lit and ends in Choose: press Enter to take it, use the arrow keys to move to another, or click any name. Type someone's whole email address and, when it belongs to exactly one profile, that person is chosen for you without a click; the row is marked Exact match whenever the address you typed is theirs. The strip then reads Showing as, with the person's name and address, and you get Change to pick somebody else and Clear to go back to the sample values.
The first entry in that list is not a person: "No profile information". It draws the email as somebody you know nothing at all about — no name, and no value for any property you personalize with — so every one of those words shows its fallback instead. It is how you check that the email still reads well for the part of your list you know least about, which is usually most of it. The strip reads Showing no profile information. Nothing is created and nobody is added to your list by choosing it. The size is still measured with the sample values, for the same reason it always is.
The email is drawn with that person's own first name — including when there isn't one. A profile whose name you never learned is half the reason to preview as somebody at all, so nothing is filled in on their behalf: the block's own fallback word shows instead, exactly as it would in the send. A discount code that each person gets their own of shows SAMPLE20-YOURCODE in the preview for everybody, because the real one does not exist until the email is sent; a discount that gives away your own code shows that code, because it already exists.
Previewing with one of their events
Once you are showing as a person, an Event field sits beside their name. It lists that person's own recent events — their orders, shipments, returns and checkouts first, then everything else, newest first in each — each named by its order number where it has one and its day — Fulfilled Order #1003 · Sep 28. Type to narrow it: fulf finds the fulfilled orders. In a template on its own it lists every kind of event an automation can start with, as it arrives from your store — an order imported from another platform is not listed, because no automation starts from it; in an automation's email, only the kind that starts it.
Choose one and the email is drawn exactly as it would be sent by an automation that event started: every detail from the start event, a block shown or hidden by one of those details, a product block showing that order's items — one card per item ordered, with its quantity, and never a product the order did not have — and a button whose address comes from the event. No event, at the top of the list, puts the preview back the way it was; so does the × in the field, or Escape. A person with no such events says No events to preview with.
In an automation's email, choosing a person chooses their newest event of the kind that starts it at once, and the field names it — that is the order the email is drawn from. Choose No event instead and the email has no event at all: every detail from the start event shows its fallback, and a product block showing the order's items draws sample products from your store, with no quantity. The person's own name and details still fill the rest.
The event belongs to the person, so choosing somebody else clears it. It is not remembered, and nothing about the email changes — but Send a test uses it, so the copy that arrives is the one you are looking at.
If the event you chose can no longer fill the email — it was removed, or the automation now starts with a different event — Event is cleared and a line under it says so. The preview goes back to that person with no event, and a test you were about to send is not sent until you press it again.
Sending a test
Send a test mails a copy of the email to as many as three people at once. It is not a rehearsal. Each copy goes out through the checks a real send goes through — so each one can also be refused, and you are told what happened to each recipient separately.
Add someone opens your team and your list. Choosing a person adds them and leaves the window open, with the search emptied and ready for the next name, so you can add two or three people in a row. Anyone already added says so and cannot be added twice; once three are chosen, everyone else says so too. Press Done when you have everyone.
When every copy goes, the window turns into a short receipt: Test sent, the people it went to, Done to close it, and Send another to go back with the same people chosen. If even one copy was refused or its fate is unknown, the window stays as it was, with a line for each recipient under What happened.
Two controls, two questions
Showing as decides whose information fills the email: the first name, and any property you personalize with. Send a test decides whose inbox it lands in. They are separate on purpose, because "show me what Kim gets" and "send it to these three people" are two different questions.
So whoever receives a test, every copy is drawn with the person you are previewing as — or with the sample values if you have chosen nobody, or with every fallback showing if you chose No profile information. Three people can look at the same copy and talk about the same email. Details from the start event come from the event you chose under Event, if you chose one — the order, its items and its links, exactly as the preview shows them — and the Send a test window names that event, because every copy carries it, the person's shipping address included. With no event chosen, a test has no event either: the start event's details show their fallbacks, exactly as the preview does.
Before your domain is connected, a test goes to your team, from Carpe Messaging
A brand-new store cannot send email to anyone on its list until its own domain is connected (Settings → Domain). Send a test still works before that, so you can see what you built in a real inbox on your first day — but only to your team, at the addresses they sign in with, and from a Carpe Messaging address rather than your own. The window says so before you send:
Until your store's domain is connected, a test can go to your team, at the addresses they sign in with. Once a manager or owner connects your domain in Settings → Domain, tests can go to your list too.
It will come from a Carpe Messaging address, so treat what lands as a look at the design, not at deliverability.
Your team, and nobody else. Add someone offers everyone with access to this store — yourself included — and not your list, which says why where it would be:
Not an option until your domain is connected, because a test would reach them from a Carpe Messaging address rather than yours. A manager or owner connects it in Settings → Domain.
There is still nowhere to type an address. The email arrives from your store's name via Carpe Messaging, and it opens with one line of its own, above your design:
This test came from Carpe Messaging because your store’s domain is not connected yet. Your real emails will come from your own domain.
That is the whole of what it means. The email shows you exactly what you built — the layout, the typefaces, the images, how it looks on mobile — and it tells you nothing about whether your email will reach anybody's inbox once you start sending. Deliverability is what your own domain is for, and nothing can stand in for it.
Nothing else sends in the meantime. Campaigns, automations and back-in-stock emails all wait for your domain. And a test like this is counted nowhere: it is not on your bill and it does not count toward your first weeks of sending.
It stops on its own. The moment your domain is verified, the window offers your team and your list again, every test comes from your own address, and the line at the top is gone — with nothing to switch.
Who can receive a test
Two kinds of recipient, and nothing else:
- Your team. Anybody who has access to this store, at the address they sign in with.
- People on your list. Any profile who has given you permission to email them, most recently active first. Somebody you have not confirmed yet still shows in the list, dimmed, with the reason written on the row rather than hidden.
There is nowhere to type an address. Every recipient is picked from a list of people this store already knows, so a test cannot land in a stranger's inbox because of a typo, and every copy leaves a record of who received it. Add someone opens both groups in one panel — your team first, then your list, searchable by name or email. The teammates you sent to last time lead the team, and a team of six or more gets its own search. A teammate's chip carries a quiet Team mark. Remove one with its ×; the panel stops offering more at three.
If two of your choices turn out to be the same mailbox, only one copy goes. Your own seat and your own profile are two entries in that panel but one inbox, and the second one says so rather than sending you the email twice. It only says so once a copy has actually gone: if the first of the two was turned down — your own profile is unsubscribed, say — the second one is sent, so you still get the email.
If the address you want to test with is a shared inbox, or your own mailbox somewhere else, put it on your list the way any of your customers would. Make it a Shopify customer subscribed to email marketing, or place an order with it. It becomes a profile, and the picker offers it from then on.
The store remembers who you sent a test to last. Opening the panel tomorrow starts with the same people in it. It is remembered for you, on this store — your colleague's list is their own — and anything that has since gone, an erased profile or a teammate who no longer has access, is quietly dropped rather than offered — and so is anybody who has stopped giving you permission to email them since, because the panel beside it would not offer them either.
It remembers who you were showing as, too — for your store, in this browser, whichever template you open. Open the editor tomorrow and the strip above the preview starts on the same person — or on nobody at all, if that is what you chose — so the email you are looking at is filled the way you left it. Change it with Change, or press Clear to go back to the sample values. If that person has since been erased, the preview quietly starts on the sample values instead.
What is different about a test to a teammate
A copy sent to somebody on your team is not marketing email. It is your own unfinished work, sent to a person who works here and asked for it, so it goes out the way your order confirmations do rather than the way a campaign does. Three things follow from that, and all three matter before you use a teammate's copy to check something:
- The unsubscribe link in it does not work. It carries the same sample address the on-screen preview uses, because a real one is a permanent opt-out credential and it belongs only to the profile it opts out.
- That copy is not tracked. An open or a click on it is counted nowhere.
- Consent is not asked about. Your teammate never subscribed to anything; they work here. So a team member whose own profile on your list is unsubscribed still receives their own test.
The way to check your opt-out path end to end is therefore to send the test to a profile, where the link is real and signed and the page it lands on is the one anybody on your list would reach.
A test that goes only to your team does not need an unsubscribe link or your address. Those two are owed to people on your list, and nobody on your list is getting this copy — so an email you are still building can be sent to yourself and your colleagues before either is in it, and before your store has an address saved in Settings. The dialog says so under the results, naming only what the email was missing:
This test went only to your team, so it was sent without an unsubscribe link or your store’s address. A test to anyone on your list needs both.
This test went only to your team, so it was sent without an unsubscribe link. A test to anyone on your list needs one.
This test went only to your team, so it was sent without your store’s address. A test to anyone on your list needs it.
Add one profile to the same test and both are required again, for every copy. Everything else that would stop the email — a broken link, a discount that is not chosen, an email that is too large — stops a team-only test too.
A transactional automation email never needs them, whoever the test goes to, and it can be sent while your store has no address saved in Settings: a profile's copy of it goes out the way the real one does, as a transactional message. A test is still your choice of person rather than an order they placed, so a profile's copy goes only to someone who has given consent to your email and is not paused — anyone else is shown as not sent, and nothing reaches them.
One thing does still stop a test to a teammate: Do not email. If that address has bounced, or somebody reported one of your emails from it as spam, the test is refused exactly as any other send to it would be. That state never reverses, and it holds for everybody — a login does not get around it.
What happened, per recipient
After you send, each recipient gets a line of its own: the person, their address, and one sentence saying what happened to their copy. Some can go and others be refused in the same test, and the lines come back in the order you put them in.
When a test is not sent
Nothing here is an error message. The check ran, the answer was written down, and what you have learned is something true about that person or about the template.
This person hasn't given you permission to email them, so the test wasn't sent. Try someone who's subscribed.
They have not said yes to marketing email, or they unsubscribed. Consent is the one thing no send skips. Only a profile can be refused this way; a teammate is never asked, because they never subscribed to anything.
You've stopped emailing this address, so the test wasn't sent.
This address is on Do not email: it bounced, somebody reported one of your emails as spam, or the address came back as invalid. That state never reverses, and nothing you send reaches it again. This is the one refusal a teammate's copy can meet as well.
You haven't confirmed this is a real person yet, so the test wasn't sent.
The profile is still waiting for something trustworthy — an order, or another signal from your store — to confirm it. Until that arrives it is excluded from every audience, and a test is not an exception to that.
This person is paused, so the test wasn't sent.
You paused them. Resume them and the test goes. Pausing is something you do to a profile, so it never refuses a teammate.
This profile has no email address.
There is nowhere to send it.
That team member no longer has access to this store, so the test wasn't sent.
Their access ended between the last time you sent a test and this one. The panel drops them the next time you open it.
That profile is no longer here, so the test wasn't sent.
The profile was erased, or removed for another reason, after you picked it.
This email is too large to send. See the size note under the preview.
It is over 250 KB, which is a fact about the email rather than about a person, so it refuses every recipient in the test at once. See Size, below.
You don't have permission to send test emails.
Sending a test is sending. A viewer can open a template and preview it, but cannot mail anybody.
This template is not ready to send yet.
This one is about the email, not the person. The preview shows a half-finished email happily; one somebody on your list will actually receive has to carry an unsubscribe link and a store address (a test to your team alone does not, and neither does a transactional automation email). The findings underneath name what is missing, and each one takes you to the block it is about. What stops an email from going out, below, is the whole list.
Your store cannot email this person right now, so the test was not sent. Until your domain is connected, tests go only to your team.
Most often your store's domain is not connected yet, so a test can go only to your team — a manager or owner connects it in Settings → Domain. It also shows while sending is paused (see When sending is paused). Nothing is wrong with the template or the person.
Your store has sent as many test emails as it can in one hour. The hour is counted from the first of them, so this clears on its own — try again a little later.
Only while your tests come from Carpe Messaging — before your own domain is connected. There is a ceiling on how many go out in an hour so that one store's afternoon of drafting cannot hold up another store's. Nothing is wrong with the template or the person, and nothing needs fixing: the hour is counted from your first test, so it clears by itself. Once your domain is set up, tests leave on your own address and this stops applying.
This could not go out just now because our own sending is busy. Nothing is wrong with your template — try again in a few minutes.
Also only before your domain is set up, and rarer. This one is about us rather than about your store: our own sending was paused for a moment. Try again shortly.
We couldn't confirm this one went out. Check that inbox before sending another.
The email may well have gone out — it often has. Three different things end here, and they do not agree with each other: the send may never have reached us at all, something may have broken partway through the list, or the email may have been accepted and delivered while the record of it went missing on our side. From where you are standing those look identical, so this sentence names no cause and makes no promise in either direction. What settles it is the inbox itself: look there before you send another, because "it failed" is the answer that gets a second copy sent to somebody who already has the first.
Something went wrong partway through this test, so we can't tell you whether
this copy went out. Check that inbox before sending another.
The same honesty, one step earlier. Something broke between one recipient and the next, so this copy was never reported on either way. Anyone above this line has their own answer and it still stands — a test to three people tells you what happened to each of them, not one verdict for all three.
Two things every email must carry
Every email you send has to carry an unsubscribe link and your store's postal address. That is the law wherever you are sending, and an email without them will not go out.
They live in the footer as a sentence. Every template you start from opens with one already written:
You are getting this because you signed up for our emails. If you no longer want them, unsubscribe here.
Only the words unsubscribe here are the link. The rest is ordinary text you can rewrite in your own voice, and the address underneath is a Store address field in a paragraph of its own. Move them, restyle them, put them anywhere in the email — what you cannot do is take both the link and the field out.
To write one yourself: type the sentence in a text block, select the words you want people to click, press Link, and under Where it goes choose The unsubscribe link instead of a link of your own. For the address, put your caret where it belongs and choose Store address from the Insert menu.
What counts is the link and the field, not the words. Pasted HTML never counts, however it is written: an unsubscribe link nobody can find is the same as no unsubscribe link at all. A {{store_address}} written inside a pasted block does print your address, and it still does not satisfy the rule — use the field.
A linked library element counts. Most people keep their footer in the Library and link to it from every template, and the sentence and the address in that element are this email's sentence and address — they render and they go out. The editor reads the element's published version, the one every template is showing, so what it tells you is what your recipients will get. An element with unpublished changes counts as what is published today; press Publish and the templates linked to it catch up.
So the finding is exact, never a maybe. If nothing in the email carries the link — the element you linked included — you are told the email cannot go out and what to add. If it is there, nothing is said. And if you have it twice, once in the email and once again in the linked footer, you are told which row is the extra one; that email can still go out, it just says the same thing twice.
Older templates carry them as blocks instead, and those go on working exactly as they did. The unsubscribe link and Store address blocks are still part of the format; they are simply not offered as new tiles any more, because a footer reads better as a sentence than as two stacked lines.
The address itself belongs to your store rather than to each email — you put it on file once, in Settings → Store, and every email shows the same one. If your Shopify store publishes an address it is filled in from there. A store with no address on file has its marketing emails held back until there is one; see Your store address on the Store settings help page.
How your email arrives
Columns stack on mobile, and an image is centered in its space and never blown up past its own size. Your emails ask dark inboxes to keep them light unless you disable that in Settings → Store, and an email is never inverted on a guess.
You build an email once, and it has to hold up on a wide screen, on mobile, and for somebody reading with their screen set to dark. These happen on their own, and they are worth knowing before you build anything.
Columns stack on mobile. Two or three columns side by side on desktop become one above another on a narrow screen, in the order you wrote them, with the same gap between them, stood on end. A section can carry the other answer instead: its columns stay side by side however narrow the screen is, which is what you want for a row of small things that would look wrong in a tall stack.
An image sits in the middle of the space it is given, and is never blown up past its own size. That matters most on mobile: a stacked column is wider than the column the image was built for, and the spare space goes evenly on both sides rather than all on one.
Your store keeps its emails light unless you say otherwise. Keep emails light in dark inboxes is on for every store: your emails ask to be shown in their own light colors, and Apple Mail and the Gmail app do as asked. The Outlook apps darken email on their own whatever an email asks. A template with no dark palette is sent light whichever way that setting is — except a text-only email, which names no colors and is drawn in each reader's own theme while the setting is off. See Emails in dark inboxes on the Your brand, social links and phone number help page.
Dark mode does what your template says, and nothing more. With that setting off, a template can carry its own dark colors — a text color, a background and an accent, for somebody reading in the dark. When it does, those are the colors that draw. When it does not, your email stays light. It is never inverted on a guess: colors chosen by a machine land on your logo and your product images as readily as on your words, and a design you did not make is not one you can check. What each email app does with all this is the app's own choice — some draw your dark colors, some show your light colors as they are, and a few darken an email themselves whatever it asked for. That last one is not something any email can prevent. It is also why a color inside pasted HTML — the words' or the background behind them — stays exactly as you wrote it instead of giving way to your dark colors; see A block of pasted HTML, in the chapter Importing and converting a design.
Size
An email over 250 KB cannot be sent, and one over about 102 KB is clipped by Gmail, which hides the rest behind a link. The size sits under the template's name, and you are warned as an email grows.
A very large email gets cut off. Gmail stops showing an email past about 102 KB and puts a "View entire message" link at the bottom — under your unsubscribe link, where a lot of people never look.
The number sits under the template's name, beside the mark that tells you when the work was last saved: Saved 10:11 AM · 8.2 KB. It is quiet on purpose — most emails are nowhere near any of the limits below, and a reassurance you do not need is a line you have to read past every time you look at your work.
So you are told as an email grows:
- around 90 KB — a note that it is getting large.
- around 102 KB — a louder warning: Gmail will clip it.
- over 250 KB — it cannot be sent. Nothing this size arrives intact anywhere. An email that measures exactly 250 KB still goes out; the edge is yours.
Past any of those, the number changes color and the sentence appears with your other checks, where you already look for what is wrong with an email. Open Preview at any time and the whole reading is there in full, beside the email itself.
Images do not count toward this. It is the words and the markup around them.
What stops an email from going out
The whole email is checked when you schedule it, and that is where a problem stops it: no unsubscribe link or store address, a missing image or linked piece, a discount code with no discount chosen, a link to something your store no longer has, or a size over 250 KB. Warnings never stop a send.
Everything in this guide adds up to one short list. These are the things that stop an email:
- No unsubscribe link, or none that anybody can see. A link inside a sentence counts; an unsubscribe block counts; a URL pasted into a block of HTML does not.
- No store address in the email, or no address on file for the store. The Store address field counts, and so does the older store-address block.
- Two unsubscribe links, or two store addresses, as blocks. Writing the sentence and leaving the old block beside it is fine — you are told about it, and the email still goes out.
- A piece it links is not there, so there is nothing to put in its place. You will meet this on an email imported from somewhere else that names a piece this store does not have. An element you archived is a different thing again: it is not gone, it still shows, and it stops nothing.
- An image it uses is no longer available — deleted, or still being processed.
- A discount block with no discount chosen. The block is what says which discount the email gives away, so a block with nothing chosen would print a blank where a code should be: This email gives away a discount code and no discount is chosen. Open the discount block and choose one, or take the block out.
- A discount code in the words with no discount block. Writing the discount code into a paragraph, or into a block of HTML, with no discount block anywhere in the email is the same promise with nothing behind it: This email asks for a discount code and nothing in it says which discount. Add a discount block and choose a discount, or take the code out of the text.
- A link pointing at something your store no longer has. A collection, a page or a product that has gone leaves the link with nowhere to go, so the email is stopped until you point it somewhere else — whether the link is on a button, an image, your own icon or words. So is a link to a product that is a draft, archived or not on your online store, or to a collection or page you have hidden from your online store, whose page is not public. A product that is only sold out does not stop it. The field shows the name with No longer in your store or Not published in your store beside it, which is where to fix it.
- It is over 250 KB.
A product block whose rule found nothing does not stop anything. Your best sellers fill it instead, and the Checks card says so. That holds for the four per-person ways as much as the rest: they are chosen like any other way of filling a block, worked out for each person as the email goes out, and topped up where somebody's own history gives them nothing.
Three of those are checked a second time, for each person, as the email goes out — the unsubscribe link, the store address, and the size. Those three are the only ones that can still be different at that moment: every person's email carries their own unsubscribe link, which makes each copy a slightly different email of a slightly different size. If one of the three is wrong for somebody, that person's copy is not sent; the rest of the send carries on.
The rest of the list is checked once, when you schedule, and that is enough. The email is written down whole at that moment — the pieces it links, the images it uses, and every word in it — so there is nothing left for a later check to find. It also means the opposite is true, and worth knowing: once a campaign is scheduled, tidying up your Library or your images cannot repair an email that was already wrong, any more than it can break one that was right. The remedy is always the same one: fix the email before the campaign is scheduled.
Anything else — a size warning, a product whose price could not be shown — is told to you and does not stop the send. That split is deliberate: block what cannot be fixed and cannot be taken back; warn about a cost you get to choose.