CarpeMessaging
Request early access

Help · Audience

Profiles

A profile is your record of one person. It holds their email address, their name if you know it, what they have done with your store, what they have spent, and whether they have said yes to marketing email.

A profile is a record about a person. It is not a promise that you may email the person — plenty of profiles deliberately may not be. Consent decides that, and it is a separate fact with its own page.

The profiles screen

Every profile your store holds is here, confirmed or not and subscribed or not, with the most recent activity first. Search by name, email or phone to find one person, and narrow the list with the Consent, Show and Identity filters beside the search box.

The profiles screen in a sample store: the search box with the Consent, Show and Identity filters beside it, Import and Export, and the table of profiles with each one’s email, name, last activity, consent and identity
The profiles screen, in a sample store. The people in it are made up.

The order is fixed: most recent activity first. There are no sort controls, on purpose. The question this screen exists to answer is "who is around now", and the Last activity column is the answer. Last activity is the last thing your store recorded this person doing — including opening or clicking one of your emails. An automatic open from Apple Mail counts, so an Apple Mail reader never looks inactive; an open or click an email security system made on an email you sent from here does not.

Search by name, email or phone. Type any part of a first name, a surname, an address or a phone number to find one person. A phone number can be typed any way you like — (540) 470-7522, 540-470-7522 or just the last few digits. Type more than one word and every one of them has to match, wherever each falls — dana @example.com finds the Dana at that domain, and the order you type them in does not matter. The screen shows a page of profiles rather than all of them, so searching is how you reach someone specific.

Three filters sit beside the search box.

The columns are Email, Name, Last activity, Consent, and Identity.

If nothing comes back, the screen tells you which kind of empty it is: no profiles match your search, or you have no profiles yet. Paging. Under the table you choose how many to show at a time — 25, 50 or 100 per page — and step through with Previous and Next. The line beside them says where you are: Page 3 of 5. Type a number in the box to jump straight to a page. The page you are on is part of the address, so opening something and coming back puts you back where you were, and the size you choose is remembered the next time you open this screen. Searching or changing a filter takes you back to the first page. Very occasionally we cannot count your profiles quickly enough to say how many pages there are; when that happens the line says Page 3 and nothing more, rather than guessing.

Profiles not confirmed yet

A profile is not confirmed yet when we know an address but nothing your store trusts has confirmed there is a real person behind it — no order, no record of them in your store. Until something does, they are excluded from every segment, every count and every send. That is a rule, and nothing on this screen changes it.

Choose Not confirmed yet in the Identity filter to see only them. The filter's own option says how many there are, and a card above the table says it again.

Each row says why it is waiting, when we know. Under the Not confirmed yet mark you may see one of these:

When nothing recorded a reason, the row says Not confirmed yet and nothing more. We never guess one.

Some are confirmed for you. Somebody you imported, who had agreed to your email, is confirmed without anybody pressing anything when your store's email reached them in the last 180 days with no hard bounce, spam report or unsubscribe since, or when they clicked one of your emails in the last year. A message that bounced because the mailbox was full, followed by one that arrived, does not count against them. Opens never count — mail apps open messages by themselves — and neither do clicks a machine made. Their profile then says Confirmed automatically, and why. Nothing about their consent changes, and nobody who unsubscribed, marked your email as spam or was blocked is ever confirmed this way.

"Looks like a typo of …" An address one small slip away from a big email provider — name@gmail.con, name@ail.com, name@gmial.com — or one where your store has a customer with the same first and last name at nearly the same address is not confirmed like the rest. The row and the profile say Looks like a typo of name@aol.com, or Your store has Dana Reyes at name@aol.com, and when your store has that address, what its record says (which unsubscribed) with a link to it. When it is one of your customers by name, your history decides it if it can: the address your email reached, when it never reached the other, is the real one, and so is the one whose domain still exists when the other's does not. A delivery to a misspelled big-provider address — name@ail.com — does not prove the person received it, so beside your customer at name@aol.com it is decided for name@aol.com. Two people with the same name and clearly different addresses are left alone, and real providers that only look close — mail.com, mac.com, yahoo.ca — are not typos.

Possible typos. Whatever your history cannot settle waits for you: choose Possible typos under Identity. Each one shows the imported address beside your store's record, and you choose Use imported, Use your store's or They are different people — or, for an address with nothing beside it, Use as is or Open profile to delete. Every imported address at a misspelled big provider (name@ail.com) that still agrees to your email is listed, whatever else is holding it; one that unsubscribed, marked your email as spam or was blocked by an address check is not. Use imported confirms it only while it still agrees to your email and has no spam report on record; They are different people never confirms anybody by itself — the profile is then judged on its own history. Your choice is final: that pair never comes back, even after another import. Only the store owner can choose.

Sometimes it is your store's address that has the slip: a store customer at name@gmil.com while the same person, imported at name@gmail.com, is still getting your email. Then the imported one is confirmed as usual, and the store customer's profile says Your store's address for Dana Reyes looks mistyped; name@gmail.com is the one that works. Only Shopify can change a customer's email address, so correct it there.

What you can do with them

The card offers up to four things, and each one acts on everyone not confirmed yet — not only the page you are looking at, and not only the rows a search or another filter shows. Each button says how many it acts on — Export all 8 — and when a search is narrowing the table, the card says so too. If the count cannot be read straight away it is asked for again a few times; if it still cannot, the card says so and offers Try again.

The people from one import

Every count on an import's account is a link that opens this screen showing exactly those people. A chip at the top names where they came from and which group they are, and each row says where that person stands today.

That covers What happened to your people and the addresses-on-hold card under it, and the list is the length of the number you pressed. The chip names the service you connected, or your file by its name, as in Imported from spring.csv · never agreed. Somebody who agreed but whose record never said where reads Agreed in the service you connected · no record of where (Agreed in your file for a file).

The chip is part of the address, so a bookmark or a link you send keeps the view. Remove it with its × to see every profile again. The search and the filters still narrow within it.

One person, several addresses

Shopify keeps one person's different email addresses as separate customers, and so do we — nothing here joins two records into one. What this screen does is show you when two of your records are the same person: records that share a phone number are shown as one entry.

One person often shops with more than one email address — a work one, an old one, the one they used the year they changed providers. There is no way to force somebody to shop with one address.

When they share a phone number, they are shown as one entry. The entry leads with the address that has been active most recently, and a small control beside the name says how many addresses there are — 3 addresses. Press it and the others open underneath, each with its own last activity and its own consent. Press it again to close them. Each address still opens its own profile.

On a profile's own page, the others are named under the header. Also this person lists every other record in your store carrying the same number, with each one's consent beside it, and each is a link.

A weaker match is offered as a guess, and only there. If two records share a first name, a last name and a town but no phone number, the profile page says Possibly the same person. That never groups anything on the profiles screen: a shared phone number is something your store collected twice, and a matching name is a guess, which is not enough to decide what a screen shows you.

Consent belongs to the address, always. If Andrea unsubscribes one mailbox, that mailbox is unsubscribed and the others are not. Grouping changes nobody's consent and nobody's confirmed identity — it is a way of seeing, not a decision. Nothing is written when these rows appear, and there is no button here that joins two records.

Two things this does not do. It does not group people who share a number for an ordinary reason — a couple, or a family, all using one phone — because from your store's side those records look exactly like one person with two addresses; press the entry open and you will see both, each with its own consent. And it never reaches across stores: the same number in somebody else's store is somebody else.

A profile's own page

Click an email address to open one person. Their page shows who they are and whether their identity is confirmed, their consent on each channel, the segments they are in, and everything your store has recorded them doing.

The header

The person's name, then a line of email · phone · location — with only the parts you actually have, so there is never a stray separator. The email address has a copy button beside it. The location comes from the person's address in your store, or, if they have none, the shipping address on their latest order; failing both, from an import or your store's own pixel. It is shown as codes, as they were recorded, with the postal code beside the state or region when we have one — "Brooklyn, NY 11201, US". A shipping address can be a gift recipient's, so it never replaces the person's own address.

If the person has opted out of the sale or sharing of their data in your Shopify store, a line under the header says so: "Opted out of data sharing in your store — never synced to Meta". We read it from Shopify and honor it automatically; there is nothing to change here. If they change their mind in Shopify, the line goes away and they can be synced again.

Under it, Birthday says the month and day the person gave — October 17 — or Not given. We keep the month and the day only, never a year. A birthday arrives from one of your forms, an import, a team member's edit (below), or your store's own Birth date field in Shopify.

Underneath sits the identity line: Verified identity and "since" the date it was confirmed, or Not confirmed yet. If the person has ever placed an order, "Has placed an order" appears here too.

On a profile that is Not confirmed yet, the store owner sees a ⋮ beside it with Confirm this person. Confirm only someone you know is a real person at this address; you type why, and the activity feed then reads "Confirmed by" your name and your reason. They join your segments and can be included in your emails and texts, but their consent still decides every send — confirming does not subscribe them, and an unsubscribe or a bounce stays. It is one person at a time, it cannot be undone, and only the owner is offered it.

A profile confirmed without anybody pressing anything says so under the identity line: Confirmed automatically: received your email recently, with no hard bounce or spam report since, or Confirmed automatically: clicked one of your emails.

Verified identity and consent are two different facts. Verified identity means we are confident this is a real person your store knows — it says nothing about permission. Consent means the person said yes or no to marketing email — it says nothing about whether the identity is real. Someone can have a verified identity and still not be subscribed, and that is the normal case, not a fault.

Editing a name, a phone number or a birthday

Anyone on your team except a Viewer can correct a profile. Press Edit (the pencil) on the email address's line, at the right of the card at the top of the profile, change the first name, the last name, the phone number or the birthday, and press Save. Remove number takes the number off the profile.

A birthday is two pull-downs: the month, then the day. The day list follows the month — February offers 29 days, April 30 — so a day that does not exist, like February 30, cannot be chosen; pick January 31 and then February, and the day empties for you to choose again. Choose both or neither: a month alone is not saved, and the form says so. Remove birthday takes it off the profile. What you save here replaces whatever the person gave before, and it is never sent to your Shopify store.

The email address cannot be changed. Its consent, and any Do not email, belong to that address — so a different address is a different person's record, not a correction to this one. The edit form shows the address and says so. If somebody gave you a new address, they become a new profile when that address reaches your store.

Text message consent belongs to a number, not to a person. A new number starts with no text message consent. Consent never moves from the old number to the new one, and a removed number keeps whatever it had — including a STOP or a Do not text — whoever holds that number next. Editing never changes anybody's consent on either channel. So after you change the number of somebody who agreed to texts, their text-message row still says Subscribed, followed by Awaiting confirmation · the opt-in was for a different number, and no text goes to the new number until they agree again with it on one of your forms.

A number that stopped text messages stays put while it is shared. If this profile's text messages were stopped and another profile has the same number, the number can't be removed or changed here — doing so would let texts reach that other profile again. The edit form says so.

If this person is a customer in your Shopify store, the name is saved there too, so the next update from your store does not change it back. Before saving, we check your store for a customer with this email address, even if the profile came from a form or an import. If your store does not accept the name, nothing is changed here and the form says so and keeps what you typed. If we cannot tell whether your store took it, nothing is saved here and the form asks you to check the name in your store. Their phone number is your store's: change it in your Shopify admin, under Customers, and it arrives here the next time your store updates this person.

If we can't reach your store to check, a name change on its own is saved here and the form says that your store's own record may replace it the next time your store updates this person. A phone number change is not saved at all in that case, and nor is anything else in the same save — a name changed alongside it waits too. If the person is a customer in your store, the number is your store's, so the form asks you to try again in a minute. If your store isn't connected, the number is saved here. If this person is no longer a customer in your store, the name is saved here only, and the form says so.

Removing a number also removes the Also this person line, which is drawn only when two profiles share a number.

Every edit is kept: the Activity feed names what changed and who changed it — Name changed by, Phone number changed by, Phone number removed by, Birthday changed by, Birthday removed by or, for several at once, Name and phone number changed by, then the team member's name — and opening the row shows what it was before and after.

Emails and texts capitalize a first or last name typed all in lowercase or all in capitals — jane goes out as Jane — unless a message says otherwise. A name we cannot capitalize safely — written in an alphabet other than Latin, Greek, Cyrillic or Armenian — is sent exactly as typed. Some people want their name left alone. Press Edit on their page, tick Print this name exactly as typed under the name boxes and press Save, and every email and text prints their name exactly as it was typed — the one on their profile, the one on their orders, and the one they gave when they asked to hear when something is back in stock — whatever each message's Capitalize box says. It is off for everybody until you enable it, and it changes only how the name is printed, never the name itself.

The Edit profile dialog in a sample store, with the box Print this name exactly as typed ticked under the first and last name boxes
The box sits under the name boxes in Edit. The person is made up.

While it is on, their page shows Name printed as typed beside Verified identity, under the email address and birthday. Anyone on your team except a Viewer can change it.

A sample profile’s page with the small gray Name printed as typed tag beside Verified identity, under the email address and birthday
The tag shows only while the box is ticked. The person is made up.

Pause, on the Email row

Pause emails sits in the ⋮ menu beside the Email row of Channel consent, with Resume emails in its place once they are paused. A paused profile shows the Paused mark under that row, with who paused them, when, and the note whoever paused them typed.

A pause and consent are two different facts, and the row keeps them apart: the consent pill is the person's own answer, and the Paused mark and the name beside it are your decision. A pause is yours and you can undo it; consent is theirs and you cannot. Full details are on the pause and resume page.

Marketers, managers and owners can pause and resume. A viewer is offered no menu at all.

This is a person

Under the two channels a third row, Person, appears on the profiles where it is a real question, and the decision on it is one only you can make. Its ⋮ offers This is a person: choose it when you have looked at a profile and satisfied yourself there is a real human being behind it. The row then reads who confirmed it and when, and the menu offers Not a person after all, so a mistake takes two presses to undo.

You will not see the row on most profiles, and that is deliberate. It is drawn on the records your Suspected bots segment currently collects, on everybody held as a checkout bot, and on anybody already confirmed, so the name of whoever vouched for them never disappears. Somebody who has placed an order in your Shopify store, whether your store told us about it or you imported it from another tool, is not in that segment, is never held as a checkout bot, and is asked no question: a customer who has bought from you is obviously a person, and saying "not confirmed" over their order history would be an insult to both of you.

A person held as a checkout bot says so on this row. It reads Held as a checkout bot, with a line under it saying they get no marketing email or text until they place an order, get a customer tag in your store, visit your store before a checkout, or someone on your team chooses This is a person. A viewer sees that line too, because "why did they get nothing?" is everybody's question, but is not offered the menu.

Owners, managers and marketers can set the mark and lift it again. A viewer sees the mark and is not offered the menu.

Confirming asks first, and what it asks is a reminder of what the mark is and what it does:

This is your word that there is a person here. It is not consent, and gives them none they have not given. It changes which segments this person falls into, and if they were held as a checkout bot, it lets your marketing reach them again, as their consent allows.

Most people meet this button in one of two built-in segments. In Suspected bots you read through the records that look like nobody at all, recognize somebody real among them, and say so. In Checkout bots the mark does more: it releases somebody the hold was keeping your marketing from. The Segments page explains what each segment collects, and why a real person can land in them.

Nothing else ever writes this mark. It is not a profile property, so no data arriving from your store and no import can set it — somebody on your team pressing the button is the only way it is ever true.

The Bot Wars guide explains the bot check this mark answers, and the other things that let a person through.

The numbers

Six numbers in two families, with a hairline between them. On the left, what happened in your store: Total spent, Orders, and Last order. On the right, what happened with the email you send: Emails sent, Opens, and Clicks.

Emails sent counts the emails that actually went to this person — the same count your campaign reports use. An email that was not sent (and why is in the Activity feed), a test you sent to yourself, and a text message are not in it, and neither are the opens and clicks of a test.

Total spent is gross: it includes tax and shipping, and refunds are not subtracted, so it is a total of what was ordered rather than a lifetime value. No average order value is shown, because the order count includes orders whose value could not be read and an average of the two would be a smaller number than the truth presented as a precise one.

Hold your pointer over any of them to read where the number came from — From your store, or As imported with the day it was read. On somebody you imported, the store numbers are their order history as the file gave it, and their email numbers come from the email history you imported, counted the way we count our own: Opens and Clicks count the person, and the automatic opens and clicks that history flagged are only in the "in all" number. The two are never mixed: as soon as your store tells us about an order of its own, all three store numbers are your store's and the imported ones step aside.

One row per channel — Email and Text messages — always both, each with its state, the reason if the state is Do not email, and the day it was recorded. A channel with nothing recorded shows "No consent recorded" rather than disappearing, because silence is not a decision the person made.

Recording what somebody told you

Not every answer arrives through a form. A customer replies to a receipt asking to be taken off the list; somebody hands you a card at a market and says to sign them up. The menu at the end of each consent row is where you write those down.

Mark as unsubscribed records that this person asked to stop. Their marketing email — or their text messages, if it is that row — stops right away, and your Shopify store is told too, so the two do not drift apart. That last part waits until your store knows who this person is: somebody who only ever filled in a form here, or arrived in a file you uploaded, is not a customer in your store yet, and the message goes as soon as they are.

Mark as subscribed records that they gave you permission. Before it saves, you confirm one sentence saying exactly that, and the sentence is kept with the change: this is your store's own record that the permission existed. It brings back somebody who unsubscribed, and it can start email reaching a person who was never asked. Your store is not changed by this one — telling Shopify somebody opted in would be making a permission claim on your behalf, which is yours to make, so update them there too if you keep a list.

A profile you imported as unsubscribed only because you excluded it in your old email platform to save costs says so under its email consent, with the date you did it there. A manager or owner can restore everybody like that at once from the import's Needs review (Why most people arrive held).

Either way the change shows on the row afterwards with who recorded it — "Marked unsubscribed by Jane Chen" — and the day.

What this menu cannot do, at any role.

Neither verb brings anybody back from Do not email. An address that bounced, was reported as spam or is not a real address stays there, and both verbs are offered grayed out with the reason rather than quietly hidden. If what you want is a temporary stop, that is Pause, which is reversible and leaves consent alone. The one exception is below, and only the store's owner can use it.

Releasing an address that bounced

A bounce means the mailbox refused your mail at the time. Sometimes that was a passing thing — a company's mail filter, a full mailbox — and the person is plainly still there: they bought something from you last week. For exactly that case, the store's owner sees Release this address… in the menu on the Email row. The conditions below are what let you bring a real person back without costing your deliverability anything.

It is offered only when all of these are true:

The dialog shows the bounce, the order or signup it found after it, and what the email consent will be once it is released. Releasing never subscribes anybody by itself: the app asks your Shopify store what this person agreed to right now and uses that. If Shopify says they are subscribed, they are subscribed again; otherwise they are unsubscribed. If the profile is not linked to a Shopify customer, it is unsubscribed. If your store cannot be asked, or holds the address as invalid, nothing changes. Your email provider's own block on the address is lifted at the same time.

You type why you are releasing it — that is required — and the reason is kept. The profile's activity then reads "Released from “Do not email” by Jane Chen" with your words beside it.

You get one chance per address. If it bounces again after you release it, it goes back on Do not email and stays there for good; the menu will not offer the release again. The chance belongs to the address, not to the profile: if you delete the profile and the same address comes back later as a new one, it cannot be released again. Deleting or erasing the profile deletes your reason with it; all that is kept is a one-way code for the address that says it was released once. Our support team can never release an address for you, and neither can any other role on your team.

That holds even where the row itself looks empty. If an address was erased at some point, it stays refused for good — so a profile that arrived yesterday, on an address somebody erased last year, reads "No consent recorded" and still grays both verbs with that reason. The refusal belongs to the address, not to the record in front of you, and it is the same for a phone number.

And nothing is recorded on a profile you have erased. An erasure is a promise you made about somebody's data; what stays behind is a husk, kept so your other records still add up. Its consent rows are gone, so both rows read "No consent recorded", and there is no menu beside them: nothing can be recorded, paused or confirmed there, because there is nobody left at that record to have told you anything.

While an erasure is still being carried out, the profile is all still there — the address, the consent rows, the pill — and so is the person's right to be left alone. Mark as unsubscribed stays available for exactly that reason. Mark as subscribed does not: certifying that somebody gave you permission, about somebody who has just asked you to forget them, is not a claim to put in your own records. Pausing them, and saying this is a person, are not offered either — those are your decisions about somebody, and there is no longer anybody to decide about.

Nobody is signed up for text messages by hand. Only the person can agree to texts — by ticking the text box at your checkout, by entering the code they were sent when they signed up on one of your forms, or by texting START after a STOP. That is the phone carriers' rule, not ours, and it is why Mark as subscribed on the text row is always grayed out with that reason beside it. Mark as unsubscribed on the text row works even on a profile with no phone number — an import can leave somebody signed up for texts with no number on file, and you can still take that away. With no number on file at all there is nothing to update in your Shopify store, so only this profile changes; with any number on file, even one we cannot text, your store's customer record is updated too.

And the email row needs an address before it can say anything about one. A customer who gave your store a phone number and no email address is an ordinary profile, not a broken one — but there is no address for an email consent to be about, so both verbs on that row are grayed with that reason.

And the verb that matches the row is grayed too. Marking somebody unsubscribed who is already recorded as unsubscribed would change nothing about their consent and would quietly replace the record of where it came from — so the row offers you the direction you do not already have.

And recording consent does not confirm who somebody is. Those are two different facts. A profile that is not confirmed yet stays out of every audience whatever its consent says, and the card tells you so while you are looking at it. The verified identity page covers what confirms a profile.

A viewer sees every consent row and is offered no menu.

Segments

Under the lists, Segments names every segment this person is in right now, each one a link to its own page. It is worked out while you look: every segment you have, built-in ones included, is checked against this one person by its rule as it stands today, so the card can differ from what it said yesterday. It says Checking segments… for the moment that takes.

A store with many segments sees the first eight by name and Show all to open the rest in place.

Not in any segment. means exactly that. When the check could not finish — it took too long, or something went wrong — the card says so and offers Try again; it never says a person is not in any segment because it could not look.

A profile that is not confirmed yet is not in any segment, because every segment excludes it until it is confirmed — the card says Not in any segment until this profile is confirmed. A segment you have disabled is not listed. A segment an import could not finish wears the same Unfinished rule mark it wears on the Segments screen: nobody is emailed from it until you finish the rule.

Being in a segment is not consent, and who a campaign actually emailed is fixed when it was sent — this card answers who the rules catch today.

Properties

Facts a profile has collected — a preference they clicked, an answer they gave, the tags your Shopify customer record carries. Segment rules can use them. A profile with none says so.

They arrive from your own form fields, from the columns of a spreadsheet you import, and from an integration writing through the events API; the Profile properties page covers what you can then do with one.

Activity

Everything that has happened with this person, newest first: what they did in your store, every email and text you sent them and what they did with it, where their consent stands, and the day the profile was created. The whole moment is one hover away on every row, in your store's time zone.

It is paged, not capped. Under the feed you choose how many rows to show at a time — 25, 50 or 100 — and step through them, or type a page number. Nothing is hidden: a profile with four years of page views has all four years here, a page at a time. Your choice of page size is remembered for this screen.

Show narrows the feed to one kind of thing. Type in it to search the events this person has actually produced; the ones they did most come first, each with how many times beside it — Placed Order 12 — so every choice in it leads somewhere. Your emails are in it under the same five names an import uses: Received Email, Opened Email, Clicked Email, Bounced Email and Marked Email as Spam. Choosing Opened Email shows the opens of the email you sent from here and any opens you imported, in one list. Choosing a name shows those rows and nothing else: automations, consent, an email that was not sent and the profile's beginning are not events, so they show under Everything only. Choose Everything to get the whole feed back. The page and the filter are both in the address, so a link to what you are looking at is the address bar.

Each row carries a small mark showing where the record came from: the Shopify bag marks events from your store — both what the store recorded and what the person did on your storefront — events from an integration you wired up carry their own, and anything this app recorded carries the Carpe mark. That last group covers both the email you send and what happened on your signup forms, and the words beside the mark tell them apart: a form row reads from one of your forms, because the form is yours even though the record is ours. Rows with more behind them — an order with its line items and total, a page view with its path — open to show it. Rows with nothing more behind them do not pretend to open.

Your automations are in the feed too. A row says that this person entered an automation, that they finished it, or that they left it before the end, and the automation's name opens its page — unless that automation has been deleted, and then the name is there but is not a link. The row has just told you it was deleted, and a link inviting you back into it would be the row arguing with its own sentence; every row for that automation reads the same way, not only the one that says they left. A deleted automation does still have a page, and Automations explains what is on it. Those rows carry the Carpe mark and nothing else to open, because the row is the whole fact.

A person who left reads stopped matching Automation filter. That rule has to stay true of somebody the whole way through an automation — it is checked before every step — and theirs stopped being true. What is recorded is that it stopped, not which part of it did, so the row says that and no more. Somebody who left because the automation was deleted says that instead.

An email an automation did not send to this person is a row as well, with the reason: no consent, an address marked Do not email, an identity not confirmed yet, no address at all, or that you have paused them. The Not sent page covers what each of those means and which of them are yours to act on.

Your emails and texts are in the feed. Each campaign or automation email this person got is a row — Received Billing Test 1 — with the campaign's or automation's name opening its page and the subject line after it, so two emails from one automation are easy to tell apart. When they open it, click a link in it (the row shows the link), report it as spam, or it bounces, that is a row too, dated when it happened — a spam report that came in a month later sits a month later. An email that was sent and not yet confirmed as arrived says Sent, never Received. A test you sent of a campaign says a test of before the campaign's name. Texts are rows the same way, and a link they tap in a text reads Tapped a link in, with the link. A tap a link preview made on its own is not shown, because the person did not make it.

An email that was not sent says so. Not sent: Billing Test 1 — No consent is a row about an email that never left, with the reason, and it is never drawn as sent.

An automatic open or click is a row too, and it is marked. Apple Mail opens email by itself to protect the reader's privacy, and email security systems open email and follow its links before anyone reads it. Those rows say Automatic · Apple Mail privacy or Automatic · security scanner, and the Opens and Clicks at the top of the profile count people, with the total beside them as "in all" and one line under them saying what that total adds. Opens and clicks you imported are marked the same way. Point at a mark, or move to it with the Tab key, to read why it is not counted as a person. On an email you sent from here, an Apple Mail automatic open still moves the profile's Last activity; one a security system made does not.

Every change to their consent is a row. Each one is dated when it happened, or when we learned of it, and says what consent became and what changed it — Subscribed to email · from your store (your Shopify store set it), Unsubscribed from email · from the unsubscribe link in an email, Unsubscribed from text messages · by replying STOP — so the whole story is there: subscribed in November, unsubscribed in January, subscribed again in March. An address marked Do not email says why instead: it bounced, or they reported an email as spam. Hearing the same answer again is not a change, so it does not add a row. This record is also your proof of consent if anyone ever asks when a person said yes or no — for as long as you keep the profile: deleting a profile deletes its consent history with it.

For someone whose consent was already recorded when this history began to be kept in your store, that channel's oldest row says so — where things stood when this history began — with what last set it, dated the last time that answer was recorded. Changes before that were not recorded, so they are not shown. Hold your pointer over the time of a change we learned of late — a spam report in an imported file, say — to see both when it happened and when we learned of it.

The profile's beginning is a row too, dated the day the profile was created here — so history you imported can sit below it. It says how the profile came to be: Created as a customer in your store (from your Shopify store's customer records), Created by an order in your store, Created at your store’s checkout (they typed their address at checkout), Created by one of your forms, Created by an import, Created by an integration or Created by an automated action in your store (a Shopify Flow action).

Why a text-message row says "Awaiting confirmation"

A text-message row says Awaiting confirmation when the person's agreement to your texts is not confirmed yet, and a clause after it usually says why. Until the row is confirmed, that person stays out of every marketing text you send.

Beside Subscribed on the text-message row, a profile says one of five things when that row is not confirmed yet:

In every case that person stays out of every marketing text you send until the row is confirmed.

Deleting a profile

If you are the store's owner, Delete this profile, at the foot of a profile's own page, deletes everything held about the person. There is no undo. To delete everybody in a segment or a list at once, use Settings → Delete profiles.

It sits in its own box. It keeps the record that a campaign was delivered to them as a number only (their opens and clicks go with them). The line under the button says what happens in your Shopify store before you press:

Deleting this profile also deletes the matching Shopify customer, unless that customer has placed an order.

Once it is done you are taken back to the profiles screen, where they no longer appear. The Deleting profiles help page covers both, and what happens if the same person comes back.

When somebody asks to be erased

You do this in Shopify, not here. Erasing a customer in your Shopify admin passes the request to the app on its own, the app carries it out, and there is no control for it here. Afterwards that address is never emailed again.

Delete this profile is not the same act. It erases the same things, but it keeps an address from ever being emailed again only when the person had unsubscribed or was already on Do not email — a person who asked to be forgotten is owed that guarantee whatever their consent was, and the request from your store is what gives it. Shopify holds a request for about ten days before it sends it, and longer — up to six months — if the person has ordered recently, so a record you can still see is not a request that went missing.

What the erasure removes. Everything the profile held about the person: their address, their name, their phone number, anything your store knew about them, everything they did and everything they looked at, their consent and the record of how it was given, any pause you set and the note you wrote on it, and every open and click. The link between the profile and the customer record in your store goes too, so what is left cannot be matched back to anybody.

The line in your sending history stays, with the address and the subject taken out of it. It is the record that a send happened, and a store has to be able to say what it sent.

One thing survives, on purpose: the fact that this address must never be emailed again. It is kept as a one-way fingerprint rather than as the address itself, so it can be checked against and never read back. Without it, the same address arriving tomorrow in an order or a signup would be a new profile with nothing against it, and somebody who asked to be left alone would hear from you again.

If somebody asks for a copy of what you hold instead of asking to be erased, that request reaches the app the same way. The app gathers what it has about that person and the answer comes back to you through us; there is no screen for it yet.

What this screen never does

It does not change an email address, and it never changes consent when you edit a name or a number.

It does not hide profiles. Profiles that are not confirmed yet are shown here and marked, never removed — a profile you cannot see is a profile you cannot understand. The one profile that is not shown is one you deleted: it no longer names anybody, so there is nothing left to list. They are excluded from every audience and are never emailed, which is explained on the verified identity page.