What you will learn
On this pageContentsCloseOpen
Open any customer in your Shopify admin and look at the marketing section. There is one switch for email, one for SMS, and — since the 2026-07 API version — one for WhatsApp. That is the entire vocabulary. No field for "newsletters but not promotions," no field for "monthly instead of weekly," and no surface where a subscriber can express either.
So when someone who only wanted restock alerts gets a fourth sale email in a week, their only available action is to leave completely. Every unsubscribe on Shopify is all-or-nothing at the data-model level.
The obvious fix — point the unsubscribe link at a preference page — hits two walls. Shopify documents its unsubscribe URL as non-redirectable, and US law requires a plain "stop everything" option regardless. Below: what Shopify stores, why a preference center cannot replace an unsubscribe link, and where one therefore has to live. None of this is legal advice; the regulatory sources are linked at the end.
What Shopify actually stores
Consent lives on the customer record, one object per channel: Customer.emailMarketingConsent, Customer.smsMarketingConsent, and CustomerPhoneNumber.whatsAppMarketingConsent, the last added in API version 2026-07 per a changelog dated June 17, 2026. Each carries marketingState, marketingOptInLevel, consentUpdatedAt, and sourceLocation. Only the first is the consent switch.
marketingState draws from an enum — CustomerEmailMarketingState with six values, CustomerSmsMarketingState with five. INVALID exists only on the email side, so don't assume the channels are symmetric.
| Value | Meaning | On SMS enum? |
|---|---|---|
SUBSCRIBED | Subscribed on that channel | Yes |
UNSUBSCRIBED | Previously subscribed, isn't now | Yes |
PENDING | In the process of subscribing | Yes |
NOT_SUBSCRIBED | Never subscribed; can't be set by the mutation | Yes |
REDACTED | Personal data erased; read-only | Yes |
INVALID | Internally set; read-only | No |
Now the constraint that decides everything else. The customerEmailMarketingConsentUpdate reference states: "Only three values are accepted as input: SUBSCRIBED, UNSUBSCRIBED, and PENDING." Three writable positions. No REDUCED_FREQUENCY, no per-topic variant, nothing between on and off.
The field most often mistaken for a preference field is marketingOptInLevel — CONFIRMED_OPT_IN, SINGLE_OPT_IN, or UNKNOWN, defined against M3AAWG sender best practices. It records how consent was obtained, never what the subscriber wants.
Customer segments can filter on email_subscription_status and sms_subscription_status, so consent state is segmentable. But you can only segment on what is stored, and what is stored is the switch.
Why you can't redirect the unsubscribe link
Two documents close this off. CustomerEmailAddress.marketingUnsubscribeUrl is "The URL to unsubscribe a member from all mailing lists" — global by definition. And the Help Center's custom Liquid reference is blunter: "Both unsubscribe_url and unsubscribe_link will always point to the primary online store domain and can't be modified to direct elsewhere." The same page notes the variable is required in a custom Liquid email, so you cannot omit it either.
What you can do is add a second link beside the mandated one. If it points at a Shopify Form — free to install, not installed by default on any plan — submissions can tag the customer, and tags drive segments. Be precise about what that buys you: merchant-side targeting, not consent. Shopify's state still reads SUBSCRIBED or UNSUBSCRIBED, and the unsubscribe link still turns the whole channel off. The link is not the only trigger either — "Subscribers are removed from your subscriber list when they click Unsubscribe in an email, mark an email as spam, or opt out of email marketing from their account."
The Customer Account API's CustomerUpdateInput exposes only firstName and lastName. WhatsApp consent is reachable there via customerWhatsAppMarketingConsentUpdate; there is no documented email or SMS equivalent in that API's mutation reference, where the matching paths return 404.
The legal floor: a preference center adds, it does not replace
The FTC's CAN-SPAM compliance guide addresses the menu approach directly: "You may create a menu to allow a recipient to opt out of certain types of messages, but you must include the option to stop all marketing messages from you." It also sets a 10-business-day window to honor an opt-out, requires the mechanism to keep working at least 30 days after the message is sent, and cites penalties up to $53,088 per email.
Bulk-sender rules add a tighter clock. Google requires one-click unsubscribe for senders above 5,000 messages a day to Gmail accounts, using List-Unsubscribe plus List-Unsubscribe-Post: List-Unsubscribe=One-Click per RFC 8058, and says mailto links "don't meet our one-click unsubscribe requirement." Google expects requests processed within 48 hours — "expects" deliberately, because its own sender-guidelines FAQ is not consistent with itself: one answer says "we recommend that you fulfill unsubscribe requests within 48 hours," while its enforcement table lists "Unsubscribe requests aren't honored within 48 hours" as a condition that leaves delivery support and mitigations unavailable. Scope your planning to bulk senders. Yahoo tells bulk senders to "Implement a functioning list-unsubscribe header" and to "Honor unsubscribes within 2 days," publishing no numeric threshold.
Two regimes, two consequences: CAN-SPAM is a legal penalty, sender guidelines are a deliverability outcome. A preference page can sit beside the unsubscribe control; it cannot stand in for it. Which means the preference center has to live somewhere other than Shopify.
We looked for a preference-center app and did not find one
We searched the Shopify App Store for "preference center" on September 3, 2026, and re-ran the search in a real browser the same day. No app whose primary purpose is subscriber preference management surfaced; the results were unrelated apps. Stated honestly: we could not identify a dedicated preference-center app in the Shopify App Store. That is a checked observation, not proof of absence.
The unrelated results are instructive, because they are the three things most often confused with one another. Cookie and tracking consent apps manage a different consent object, with no relation to emailMarketingConsent. Product subscription apps manage recurring orders. General email marketing apps are where the answer actually lives — so what follows compares ESPs, plus Shopify's first-party app as the native baseline.
Five listings, compared on what writes back
All values read from the App Store listings on September 3, 2026. "Not documented" means the vendor is silent, not that the capability is absent. All charges are billed in USD.
| Axis | Shopify Messaging | Klaviyo: Email Marketing & SMS | Omnisend Email Marketing & SMS | Attentive | Postscript SMS Marketing |
|---|---|---|---|---|---|
| Named preference page | None | Preferences page | Preference Center | Email preference collection (release notes only) | Not documented; pause option keyword |
| Plan access | n/a | Hosted defaults ungated; custom-coded paid and verified only | "available on all Omnisend plans" | Not documented | All plans |
| Granularity | None | Frequency and interests, as profile properties | Topics and frequency, as Custom property fields | Pre-opt-in question only | Pause keyword only |
| Topic change writes to Shopify? | n/a | Not documented | No — stored as custom properties | Not documented | Not documented |
| Channel unsubscribe to Shopify | It is Shopify | Toggle, email and SMS, about 30 min | Email only, scoped to Omnisend Signup Forms contacts | Toggles both channels, on by default | Statuses "communicated"; enum effect not documented |
| Known sync gotcha | Unsubscribe URL not redirectable | Suppression does not sync | SMS status does not sync | Wrong toggle syncs no consent | Not documented |
| Metering / first paid tier | Emails sent; $1 per 1,000 after 10,000/mo | Contacts and SMS-MMS credits; $15/mo SMS, $20/mo email | Contacts; $16/mo | Not disclosed | Per message plus minimum; $100/mo |
| Rating / reviews | 4.8 / 4,266 | 4.7 / 3,261 | 4.8 / 2,965 | 4.8 / 106 | 4.7 / 1,144 |
Review counts are a September 3, 2026 snapshot and move constantly, so treat them as a floor rather than a fixed figure. Attentive's 106 is a small denominator next to Klaviyo's, so comparing stars across these five is not comparing like with like. None of the five shows a Built for Shopify badge in its listing header, checked the same day.
The bolded row matters most. None of the vendors documents a topic-level or list-level preference change writing back to Shopify's consent state. Every documented write-back is channel-level. If a subscriber picks "monthly only" in your ESP, the Shopify record still reads SUBSCRIBED or UNSUBSCRIBED and nothing else.
Shopify Messaging

Source: Shopify App Store (Shopify Messaging), retrieved September 3, 2026
Shopify's first-party app was renamed; the older listing URL now redirects here, and the current app covers email, SMS, and WhatsApp. Launched April 14, 2020; 4.8 stars from 4,266 reviews on September 3, 2026.
No preference center of any kind, and the hard-locked unsubscribe destination described above. What it offers instead is zero consent-sync risk, because it is the consent record. Free to install, first 10,000 emails each month free, then from $1 per 1,000 emails — metered on emails sent rather than contacts, which matters if your list carries a large low-engagement tail. SMS and WhatsApp pricing are not shown on the listing.
Klaviyo: Email Marketing & SMS

Source: Shopify App Store (Klaviyo: Email Marketing & SMS), retrieved September 3, 2026
The most fully documented preference-page system in this set. Klaviyo calls the family consent pages; the relevant member is the Preferences page, "The page where existing subscribers can update their preferences," capturing "their preferred email frequency or product interests." Custom-coded variants are the hosted pages feature, restricted to paid accounts that have passed verification.
Write-back is a toggle under Sync settings covering email and SMS, propagating "within 30 minutes of a change being made in Klaviyo," documented in both directions. Two caveats for your runbook: "suppression status in Klaviyo does not sync to Shopify and does not affect consent status in Shopify," so a suppressed profile can still read SUBSCRIBED; and list-specific consent pages "are only used when an email targets exactly one list (a single static list)," so a campaign to a segment falls back to account defaults.
Free to install for up to 250 email contacts and 150 SMS/MMS credits; $20/month covers 251–500 contacts and $15/month up to 1,250 credits, as of September 2026. External charges may be billed separately from your Shopify invoice, so the listing price is a floor. Recurring English review themes: billing surprises on tier jumps and after uninstall, support gated behind a paid plan, and bot signups inflating billable profile counts — so the unengaged subscribers a preference center is meant to retain are the ones costing you money.
Omnisend Email Marketing & SMS

Source: Shopify App Store (Omnisend Email Marketing & SMS), retrieved September 3, 2026
Omnisend ships a feature actually named Preference Center, under Store Settings > Preference management, inserted with the [[preference_link]] merge tag. It "lets subscribers choose which email types they want – newsletters, promotions, or updates – instead of unsubscribing completely."
The access story is the clearest here: "The Preference Center is available on all Omnisend plans," free included. Topic and frequency questions are Custom property fields. The trade-off is branding — "You cannot customize the Preference Center's colors, fonts, or layout … the page cannot be hosted on your domain" — and it is promotional-email-only.
Sync is asymmetric. Shopify to Omnisend is explicit: "If you unsubscribe a contact in Shopify, they will be unsubscribed in Omnisend." Going the other way, "Only contacts who subscribe via Omnisend Signup Forms sync to Shopify," and "SMS subscription status does not sync from Omnisend to Shopify – only email subscription status is passed."
Free for up to 250 contacts and 500 emails a month; Standard $16/month for up to 500 contacts; Pro $59/month for up to 2,500 contacts with SMS from $0.007 a message, as of September 2026. The most consent-relevant review finding in this research is here: merchants recurringly object that billable contacts include people who never opted into marketing, and Omnisend's public replies confirm the model bills subscribers plus non-subscribers, excluding unsubscribed contacts.
Attentive

Source: Shopify App Store (Attentive: AI‑led Email &SMS), retrieved September 3, 2026
The listing name is printed as Attentive: AI‑led Email &SMS, with a non-breaking hyphen and a missing space; the working slug is attentive. Launched July 2, 2020; 4.8 stars from 106 reviews on September 3, 2026.
Consent forwarding is the strength. Under Forward data to Shopify, Forward SMS marketing consent to Shopify and Forward Email marketing consent to Shopify are both "Enabled by default when setting up a new integration with Shopify" — the email one adds "if you use Attentive Email" — and when subscribers opt in through either platform, "bidirectional syncing of that data occurs between both platforms." There is a trap beside them: a different toggle for automatically adding all Attentive-collected emails to your store "Doesn't sync past or future opt-in/opt-out statuses." Enable the wrong one and you create Shopify customers with no consent record.
Preference documentation is thin. Pre-engagement preference collection is confirmed, but it is a sign-up unit screen asking shoppers a question before email or SMS is captured — acquisition, not subscriber self-service. The subscriber-facing feature appears only in Q3 2025 release notes, under Email preference collection, in the vendor's own wording: "Replace one-click unsubscribe with an Update Preferences option." We report that phrasing without evaluating it — the implementation is not documented, and we make no claim about whether it is compliant. Given the FTC's requirement that you "must include the option to stop all marketing messages from you," ask Attentive what that option does before enabling it.
Pricing is the other unknown: one plan, "Free to install," a "Minimum 30-day free trial," and no metering denominator disclosed, so you cannot estimate cost before a sales conversation. All 1-star reviews are more than twelve months old and cluster on contract lock-in and termination billing.
Postscript SMS Marketing

Source: Shopify App Store (Postscript SMS Marketing), retrieved September 3, 2026
Postscript documents no preference page. What it documents instead is architecturally interesting: the pause option, where subscribers "can temporarily opt out of receiving campaign messages from your shop without opting out of SMS altogether." Available on all plans, built as a keyword plus a Keyword Triggered segment you then exclude per campaign — a convention the merchant assembles and must remember to honor on every send, not something the platform enforces. Otherwise the pattern matches email with a different verb: "customers can also request to opt-out by texting 'STOP' at any time," with fuzzy matching for phrases like "Cancel" or "Wrong number."
Postscript lists one reason to enable SMS collection at Shopify checkout as "Allow Postscript and Shopify to communicate opt-in and opt-out statuses for all subscribers." Channel-level only; whether an opt-out sets smsMarketingConsent to UNSUBSCRIBED is not documented.
Pricing is per-message, published rate by rate, and declines with tier: Starter is free to install but carries a $49 monthly minimum spend at $0.009/SMS; Growth $100/month at $0.008/SMS; Professional $500/month at $0.007/SMS, all plus carrier fees, as of September 2026. Billing surprises dominate the complaints — fees charged with zero messages sent, charges after uninstall, rollover credits expiring — followed by support speed.
Decide in this order
- Looking for a native Shopify preference center? Stop. One state per channel, three writable values, and an unsubscribe URL documented as removing a member "from all mailing lists."
- On Shopify Messaging, under 10,000 emails a month, cost-constrained? Stay. Add a second interests link to a Shopify Form that tags customers and drives segments. That is targeting, not consent, and the unsubscribe link stays global.
- Want a topic and frequency page today, on any plan, at the lowest price? Omnisend. Accept no branding control, no custom domain, and no SMS consent reaching Shopify.
- Need the page on your own brand plus channel-level write-back both ways? Klaviyo. Accept contact-based pricing, custom-coded pages requiring a paid verified account, and suppression being invisible to Shopify.
- SMS-first US program where TCPA exposure is the real risk? Attentive if you want default-on consent forwarding and can operate without listed pricing; Postscript if you want per-message economics and will build the pause-keyword convention yourself.
- Migrating between ESPs? Budget for consent reconciliation, and check which sync toggle you enabled before sending anything.
- Thinking of replacing the unsubscribe link with preferences only? Don't. The FTC requires an option to stop all marketing messages, and for Gmail bulk senders a mailto link does not satisfy one-click unsubscribe.
Shopify is a reliable source of truth for whether someone is subscribed to a channel. It is not, and is not documented to become, a source of truth for what they want to hear about. Build the preference center where the data can live, and keep the plain unsubscribe where the law says it has to be.
Sources
- Shopify.dev: CustomerEmailMarketingState, CustomerSmsMarketingState, CustomerMarketingOptInLevel, CustomerEmailAddress, customerEmailMarketingConsentUpdate, CustomerUpdateInput, WhatsApp marketing consent changelog
- Shopify Help Center: Custom Liquid in email, Subscriber list management, Customer segment reference, Shopify Forms
- Regulators and standards: FTC CAN-SPAM compliance guide, Google email sender guidelines, Google email sender guidelines FAQ, Yahoo sender best practices, RFC 8058
- Vendor documentation: Klaviyo consent pages, Klaviyo sync to Shopify, Omnisend Preference Center, Omnisend Shopify contact data sync, Attentive Shopify integration, Attentive Q3 2025 release notes, Postscript pause option, Postscript opt-out compliance, Postscript SMS collection at Shopify checkout
- Shopify App Store listings, pricing tabs and public reviews for all five apps, retrieved September 3, 2026
The Customer object has no date-of-birth field, but Shopify ships a standard metafield definition named Birth date with the reserved key facts.birth_date, a customer segment function anniversary('metafields.facts.birth_date') that ignores the year, and a Celebrate customer birthday automation in Shopify Messaging. The native chain works end to end — storage, segment, send. What it does not solve is collection: Shopify Forms writes to a metafield you configure, the Plus-only Checkout Blocks Birthday template writes to an order metafield and, per Shopify's own note, does not apply it to the customer profile, and letting customers edit their own birth date in new customer accounts needs an extension or an app. Five real apps compared with USD pricing. Researched September 3, 2026.