Skip to main content
SEO and acquisition apps

Shopify Stores One Consent State Per Channel, and Only Three Values Are Writable

Shopify's customer record holds one marketing consent state per channel — email, SMS, and now WhatsApp — and `customerEmailMarketingConsentUpdate` accepts only `SUBSCRIBED`, `UNSUBSCRIBED`, and `PENDING`. There is no native object for topics or frequency, `marketingUnsubscribeUrl` is documented as unsubscribing a member from all mailing lists, and the Shopify Messaging unsubscribe destination can't be modified to direct elsewhere. We could not identify a dedicated preference-center app in the Shopify App Store, so we compared five real listings — Shopify Messaging, Klaviyo, Omnisend, Attentive, and Postscript — on where the preference page lives and what actually writes back to Shopify. None of the vendors documents a topic-level preference change reaching Shopify's consent state. Researched September 3, 2026.

AIEC App Lab AI Editorial TeamPublished Updated Read 17 min#SEO and traffic#App comparisons

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.

ValueMeaningOn SMS enum?
SUBSCRIBEDSubscribed on that channelYes
UNSUBSCRIBEDPreviously subscribed, isn't nowYes
PENDINGIn the process of subscribingYes
NOT_SUBSCRIBEDNever subscribed; can't be set by the mutationYes
REDACTEDPersonal data erased; read-onlyYes
INVALIDInternally set; read-onlyNo

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 marketingOptInLevelCONFIRMED_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.

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 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.

AxisShopify MessagingKlaviyo: Email Marketing & SMSOmnisend Email Marketing & SMSAttentivePostscript SMS Marketing
Named preference pageNonePreferences pagePreference CenterEmail preference collection (release notes only)Not documented; pause option keyword
Plan accessn/aHosted defaults ungated; custom-coded paid and verified only"available on all Omnisend plans"Not documentedAll plans
GranularityNoneFrequency and interests, as profile propertiesTopics and frequency, as Custom property fieldsPre-opt-in question onlyPause keyword only
Topic change writes to Shopify?n/aNot documentedNo — stored as custom propertiesNot documentedNot documented
Channel unsubscribe to ShopifyIt is ShopifyToggle, email and SMS, about 30 minEmail only, scoped to Omnisend Signup Forms contactsToggles both channels, on by defaultStatuses "communicated"; enum effect not documented
Known sync gotchaUnsubscribe URL not redirectableSuppression does not syncSMS status does not syncWrong toggle syncs no consentNot documented
Metering / first paid tierEmails sent; $1 per 1,000 after 10,000/moContacts and SMS-MMS credits; $15/mo SMS, $20/mo emailContacts; $16/moNot disclosedPer message plus minimum; $100/mo
Rating / reviews4.8 / 4,2664.7 / 3,2614.8 / 2,9654.8 / 1064.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

Top of the Shopify App Store listing page for Shopify Messaging, Shopify's first-party email, SMS and WhatsApp marketing app

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

Top of the Shopify App Store listing page for 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

Top of the Shopify App Store listing page for 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

Top of the Shopify App Store listing page for Attentive: AI‑led Email &SMS

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

Top of the Shopify App Store listing page for 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

  1. 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."
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Migrating between ESPs? Budget for consent reconciliation, and check which sync toggle you enabled before sending anything.
  7. 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

RelatedShopify Has No Birthday Field on the Customer Record — but It Does Have facts.birth_date, an anniversary() Segment Filter, and a Birthday Automation

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.