Per-channel consent states, every way consent is recorded, the consent log as evidence, the suppression list, the marketing pause, and what you can and cannot change yourself.
Consent in Senderz is not a checkbox. It is an evidence record. Every change writes a row that keeps the channel, the new state, where it came from, the IP address, the browser user agent and the moment it happened. That record is what proves a person agreed to hear from you.This page covers consent, the suppression list, and the marketing pause. The recipient-facing page behind your unsubscribe link is documented separately in Preference center.
A contact carries a separate consent state for each channel. Someone can be subscribed to SMS and unsubscribed from email at the same time.
Email
Marketing email. Also the channel most one-click unsubscribes act on.
SMS
Marketing SMS and voice. Withdrawn by an inbound STOP.
Push
Browser push. Tracked per browser as well as per contact.
WhatsApp
Marketing WhatsApp. Only offered once WhatsApp is activated for the workspace.
Every channel stores its own state, its own source and its own timestamp. You can see all four on a contact under Channel consent on the contact profile.
Opted out. Marketing is blocked. Transactional messages pass the consent check, though they are still stopped if the same address is on the suppression list, which an unsubscribe usually puts it on.
No opt-in has ever been recorded. This is the default when a contact arrives without a consent signal, and it is treated exactly like unsubscribed at send time.
Marked as no longer usable. Nothing in Senderz sets this automatically today. It is set by you, by an import file, or through the API, and it is the state an automation reads when its exit rule is “left because of a spam complaint”.
Only Subscribed lets a marketing message through. Never subscribed is not a softer version of subscribed. A contact imported without a consent column will not receive marketing until someone opts them in.
Every consent row records one of a fixed list of sources. The list is closed on purpose, so a label can never drift and your evidence stays comparable across years.
Source
Written when
Manual entry
You create or edit a contact in the app and change a consent switch
Import
A contact file sets or forces consent
API
A public API call creates or updates the profile
Embedded form
Someone submits a form you embedded on your own site
On-site popup
Someone submits a Senderz popup on your storefront
Preference center
The recipient changes their own choices on your unsubscribe page
One-click unsubscribe
The recipient uses the unsubscribe button in their mail app
SMS STOP reply
The recipient replies STOP to one of your messages
Store sync
A connected store reports the opt-in and has no label of its own
Shopify, WooCommerce, Konimbo, Magento
The named store reports the opt-in
Stripe, Tranzila, iCount
The named payment or invoicing provider reports the opt-in
WordPress form, WordPress account
The Senderz WordPress plugin reports the opt-in
You see these labels in plain words on the contact’s activity feed, next to the consent change they explain.
Each subscribe and each unsubscribe appends a row holding:
Channel and state
Which channel changed and what it changed to.
Source
One of the labels above.
IP and user agent
Captured for opt-ins collected in a browser.
Timestamp
When the change happened, not when Senderz noticed it.
Consent changes appear inline on the contact’s Activity feed, in order, alongside sends, opens, orders and everything else. Open a contact from Contacts to read it.
Nothing in the app edits or deletes a consent row. There is no button for it and no API for it. The one thing that removes consent history is a privacy erasure: a data-deletion request from a connected store, or hard-deleting the contact, removes that person’s record including their consent rows. That is deletion of a person’s data, not correction of the evidence.
A store tells Senderz whether a customer accepted marketing. Two rules protect the record.
The opt-in keeps the store's own date
If the store reports when the customer accepted marketing, that date is what
Senderz records, not the moment the sync ran. A customer who opted in two
years ago is stored as having opted in two years ago. A timestamp that cannot
be read, or that sits in the future, is ignored and the sync time is used
instead.
A sync cannot re-open an opt-out
A live store update can move a contact from Never subscribed to
Subscribed, and it can move Subscribed to Unsubscribed when the
store explicitly says the customer withdrew. It can never move
Unsubscribed back to Subscribed. Someone who opted out through you
stays opted out.
Backfilling order history only ever adds consent
When you connect a store, Senderz reads your past orders. A box left unticked
at a checkout years ago says nothing about what the shopper wants now, so the
backfill keeps positive signals only. It can subscribe someone. It can never
unsubscribe anyone.
A truthy consent value subscribes. An explicit falsy value unsubscribes.
An import can never turn an opt-out back into an opt-in. That holds even when you tick the force-subscribe boxes on the last step of the import wizard. A genuine re-subscribe has to come from the person.
A state that already matches is skipped rather than rewritten, so re-uploading the same list does not restamp every opt-in date to today and bury the original evidence.
If the file carries a consent date column and you map it, that date is recorded instead of the import time.
Consent says what a person chose. Suppression is a hard block on an address or a number, whatever the consent state says. An address on the suppression list is skipped before anything else is checked.Find it at Contacts on the Suppression list tab.
Search by email or phone. Filter by channel and by reason.
2
Add an address
Add address blocks an email or a phone number by hand. The screen warns
you plainly: sending to that address will be permanently blocked across all
campaigns and flows.
3
Remove an address
Removing an entry lets sending to it resume. Only do this if the address was
suppressed by mistake. A hard bounce or a spam complaint is a real signal and
removing it will hurt your deliverability.
4
Export CSV
Downloads the filtered list with the address, channel, reason, source and the
date it was suppressed.
Every morning Senderz posts one notification summarising the addresses suppressed in the last 24 hours, split by reason, linking straight to this tab.
An inbound STOP arrives from the carrier, suppresses the number for your workspace within seconds, drops that contact’s SMS consent to unsubscribed, and appends to the consent log with the source SMS STOP reply.A STOP withdraws SMS only. It does not touch email, push or WhatsApp on the same person. WhatsApp uses the same phone number but is a separate channel with a separate opt-in, so it is left alone.
Because suppression is checked before everything else, a STOP also stops
transactional SMS to that number, such as an order confirmation. That is
the correct reading of an opt-out reply, but it is worth knowing if you rely on
SMS for order updates. The one exception is a verification code sent through
the one-time-code API, which is not checked against the suppression list.
This is the single most common answer to “why did my campaign skip a subscribed contact”.On your unsubscribe page a recipient can choose to pause marketing instead of leaving. When they do:
Senderz stores a date the pause runs until.
Every marketing send skips them until that date, with the reason marketing paused.
They still read as Subscribed everywhere in the app, because they are. They did not withdraw consent, they asked for a break.
You can see it. A paused contact shows a Marketing paused notice on their profile naming the date, and the same field is available as an export column.
There is no button to lift a pause. That is deliberate. The pause is the
recipient’s own instruction, and a merchant override would be a compliance
problem, not a convenience. It clears on its own when it expires, or earlier if
the person opts back in themselves. A re-save that leaves them already
subscribed does not clear it, because they never withdrew the instruction.
The same page offers once a week only instead of leaving. Choosing it sets a cap of one marketing email per week on that contact. They stay subscribed, and sends beyond the cap are skipped as a frequency cap rather than as an unsubscribe. Like the pause, the recipient sets it, and it shows on the recipient’s own page as already active if they return.
These are two different actions and it matters which one ran.
Per channel
Contact-wide
The unsubscribe button in a mail app, an inbound SMS STOP, an unsubscribe
reported by the mail provider, and each toggle on the preference center all
act on one channel. The channel is the one the message was sent on.
Turning off email leaves SMS, push and WhatsApp exactly as they were.
The unsubscribe button at the bottom of your unsubscribe page, whose wording
you choose, withdraws every channel at once: email, SMS, push and
WhatsApp. It also revokes the person’s live browser push subscriptions and
adds their number to the WhatsApp opt-out list.
A person who opts back in through the preference center is genuinely restored:
The channel state returns to Subscribed and a new consent row is written.
The matching suppression entry for that address or number is removed, so sending resumes.
For push, subscriptions that were revoked by an unsubscribe are restored. Ones the browser itself revoked are not.
Any active marketing pause is cleared, because the person just told you the opposite.
You cannot do this on their behalf from an import file. You can do it on a single contact by editing them, which is a manual assertion you are responsible for.
Open a contact, choose Edit, and switch email, SMS, push or WhatsApp on
or off. The change is logged with the source manual entry against your
account.
You can subscribe or unsubscribe in bulk
Select contacts on the Contacts page. The action bar offers Subscribed to
email, Subscribed to SMS, Subscribed to WhatsApp and Subscribed
to all, plus Suppress. The Suppress action marks the selected contacts
as unsubscribed on email and SMS. Push and WhatsApp are edited per contact.
You can add and remove suppression entries
By hand, on the Suppression list tab, for an email address or a phone number.
You cannot edit or delete the consent log
There is no way to correct a past consent row. It is the evidence.
You cannot lift a marketing pause or a frequency choice
Both are the recipient’s instruction. They expire, or the recipient changes
them.
You cannot re-open an opt-out with a file
An import will not move an unsubscribed contact back to subscribed, even with
the force-subscribe boxes ticked.
Explicit opt-in, STOP handling, and quiet hours plus Shabbat are enforced at the send worker, not in the builder, so no campaign setup can produce a non-compliant send. Read Israeli compliance and Quiet hours & Shabbat.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Senderz","description":"Senderz is the Israel-first marketing platform for email, SMS, web push and voice. Documentation, guides, integrations and API reference.","colors":{"primary":"#141414","light":"#fafafa","dark":"#737373"},"logo":{"light":"https://mintcdn.com/senderz/TYfOlOCqzxvvnafR/logo/logo-light.png?fit=max\u0026auto=format\u0026n=TYfOlOCqzxvvnafR\u0026q=85\u0026s=716b2d481f50aa8a6539edb6be85247f","dark":"https://mintcdn.com/senderz/TYfOlOCqzxvvnafR/logo/logo-dark.png?fit=max\u0026auto=format\u0026n=TYfOlOCqzxvvnafR\u0026q=85\u0026s=fd55875da479e5492f832c94aadcaa4b","href":"https://senderz.app"},"favicon":"https://mintcdn.com/senderz/TYfOlOCqzxvvnafR/favicon.ico?fit=max\u0026auto=format\u0026n=TYfOlOCqzxvvnafR\u0026q=85\u0026s=536e1b773b66d5a4d4bdd0491fce1c5a","appearance":{"default":"light"},"background":{"color":{"light":"#f6f6f6","dark":"#0a0a0a"}},"navbar":{"links":[{"href":"mailto:hello@senderz.app","label":"Support"},{"href":"https://status.senderz.app","label":"Status"}],"primary":{"type":"button","label":"Open Senderz","href":"https://app.senderz.app"}},"footer":{"socials":{"website":"https://senderz.app","x":"https://x.com/senderz","linkedin":"https://www.linkedin.com/company/senderz"},"links":[{"header":"Product","items":[{"label":"Dashboard","href":"https://app.senderz.app"},{"label":"Pricing","href":"https://senderz.app/pricing"}]},{"header":"Legal","items":[{"label":"Terms","href":"https://app.senderz.app/terms"},{"label":"Privacy","href":"https://app.senderz.app/privacy"},{"label":"Acceptable use","href":"https://app.senderz.app/acceptable-use"}]}]},"search":{"prompt":"Search the Senderz docs"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":false},"navigation":{"languages":[{"language":"he","default":true,"href":"he/getting-started/introduction"},{"language":"en","href":"en/getting-started/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"senderz","hasAudioNarration":false,"actualSubdomain":"senderz","customDomains":["docs.senderz.app"],"gitSource":{"type":"github","owner":"appdever01","repo":"sender","deployBranch":"docs","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ac293e5f04d9190a8c6d0e9","clientVersion":"0.0.4124","searchFilterCounts":[{"language":"en","tag":"Guides","count":52},{"language":"en","tag":"Integrations","count":18},{"language":"en","tag":"Campaigns \u0026 automation","count":17},{"language":"en","tag":"API reference","count":15},{"language":"en","tag":"Public API","count":8},{"language":"en","tag":"E-commerce","count":8},{"language":"en","tag":"Audience","count":7},{"language":"en","tag":"Channels","count":6},{"language":"en","tag":"Account","count":5},{"language":"en","tag":"Automation \u0026 no-code","count":5},{"language":"he","tag":"מדריך","count":4},{"language":"he","tag":"אינטגרציות","count":4},{"language":"he","tag":"סקירה","count":4},{"language":"he","tag":"צעדים ראשונים","count":3},{"language":"he","tag":"רגולציה בישראל","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/audience/consent","slug":"/en/audience/consent","pageMetadata":{"title":"Consent \u0026 suppression","description":"Per-channel consent states, every way consent is recorded, the consent log as evidence, the suppression list, the marketing pause, and what you can and cannot change yourself.","icon":"clipboard-check","href":"/en/audience/consent"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Per-channel consent states, every way consent is recorded, the consent log as evidence, the suppression list, the marketing pause, and what you can and cannot change yourself.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,Heading,Note,ParamField,Step,Steps,Tab,Table,Tabs,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Consent in Senderz is not a checkbox. It is an evidence record. Every change writes a row that keeps the channel, the new state, where it came from, the IP address, the browser user agent and the moment it happened. That record is what proves a person agreed to hear from you.`}),`\n`,_jsxs(_components.p,{children:[`This page covers consent, the suppression list, and the marketing pause. The recipient-facing page behind your unsubscribe link is documented separately in `,_jsx(_components.a,{href:`/en/audience/preference-center`,children:`Preference center`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`four-channels-tracked-separately`,children:`Four channels, tracked separately`}),`\n`,_jsxs(_components.p,{children:[`A contact carries a `,_jsx(_components.strong,{children:`separate consent state for each channel`}),`. Someone can be subscribed to SMS and unsubscribed from email at the same time.`]}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Email`,icon:`envelope`,children:_jsx(_components.p,{children:`Marketing email. Also the channel most one-click unsubscribes act on.`})}),_jsx(Card,{title:`SMS`,icon:`comment-sms`,children:_jsx(_components.p,{children:`Marketing SMS and voice. Withdrawn by an inbound STOP.`})}),_jsx(Card,{title:`Push`,icon:`bell`,children:_jsx(_components.p,{children:`Browser push. Tracked per browser as well as per contact.`})}),_jsx(Card,{title:`WhatsApp`,icon:`whatsapp`,children:_jsx(_components.p,{children:`Marketing WhatsApp. Only offered once WhatsApp is activated for the workspace.`})})]}),`\n`,_jsxs(_components.p,{children:[`Every channel stores its own state, its own source and its own timestamp. You can see all four on a contact under `,_jsx(_components.strong,{children:`Channel consent`}),` on the contact profile.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-four-states`,children:`The four states`}),`\n`,_jsx(ParamField,{path:`Subscribed`,id:`param-subscribed`,children:_jsx(_components.p,{children:`Opted in. Marketing is allowed on this channel.`})}),`\n`,_jsx(ParamField,{path:`Unsubscribed`,id:`param-unsubscribed`,children:_jsx(_components.p,{children:`Opted out. Marketing is blocked. Transactional messages pass the consent check, though they are still stopped if the same address is on the suppression list, which an unsubscribe usually puts it on.`})}),`\n`,_jsx(ParamField,{path:`Never subscribed`,id:`param-never-subscribed`,children:_jsx(_components.p,{children:`No opt-in has ever been recorded. This is the default when a contact arrives without a consent signal, and it is treated exactly like unsubscribed at send time.`})}),`\n`,_jsx(ParamField,{path:`Cleaned`,id:`param-cleaned`,children:_jsx(_components.p,{children:`Marked as no longer usable. Nothing in Senderz sets this automatically today. It is set by you, by an import file, or through the API, and it is the state an automation reads when its exit rule is “left because of a spam complaint”.`})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Only `,_jsx(_components.strong,{children:`Subscribed`}),` lets a marketing message through. `,_jsx(_components.strong,{children:`Never subscribed`}),` is not a softer version of subscribed. A contact imported without a consent column will not receive marketing until someone opts them in.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`where-consent-comes-from`,children:`Where consent comes from`}),`\n`,_jsx(_components.p,{children:`Every consent row records one of a fixed list of sources. The list is closed on purpose, so a label can never drift and your evidence stays comparable across years.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Source`}),_jsx(_components.th,{children:`Written when`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Manual entry`}),_jsx(_components.td,{children:`You create or edit a contact in the app and change a consent switch`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Import`}),_jsx(_components.td,{children:`A contact file sets or forces consent`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`API`}),_jsx(_components.td,{children:`A public API call creates or updates the profile`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Embedded form`}),_jsx(_components.td,{children:`Someone submits a form you embedded on your own site`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`On-site popup`}),_jsx(_components.td,{children:`Someone submits a Senderz popup on your storefront`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Preference center`}),_jsx(_components.td,{children:`The recipient changes their own choices on your unsubscribe page`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`One-click unsubscribe`}),_jsx(_components.td,{children:`The recipient uses the unsubscribe button in their mail app`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`SMS STOP reply`}),_jsx(_components.td,{children:`The recipient replies STOP to one of your messages`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Store sync`}),_jsx(_components.td,{children:`A connected store reports the opt-in and has no label of its own`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Shopify, WooCommerce, Konimbo, Magento`}),_jsx(_components.td,{children:`The named store reports the opt-in`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Stripe, Tranzila, iCount`}),_jsx(_components.td,{children:`The named payment or invoicing provider reports the opt-in`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`WordPress form, WordPress account`}),_jsx(_components.td,{children:`The Senderz WordPress plugin reports the opt-in`})]})]})]}),`\n`,_jsx(_components.p,{children:`You see these labels in plain words on the contact’s activity feed, next to the consent change they explain.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-consent-log`,children:`The consent log`}),`\n`,_jsx(_components.p,{children:`Each subscribe and each unsubscribe appends a row holding:`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Channel and state`,icon:`toggle-on`,children:_jsx(_components.p,{children:`Which channel changed and what it changed to.`})}),_jsx(Card,{title:`Source`,icon:`location-crosshairs`,children:_jsx(_components.p,{children:`One of the labels above.`})}),_jsx(Card,{title:`IP and user agent`,icon:`fingerprint`,children:_jsx(_components.p,{children:`Captured for opt-ins collected in a browser.`})}),_jsx(Card,{title:`Timestamp`,icon:`clock`,children:_jsx(_components.p,{children:`When the change happened, not when Senderz noticed it.`})})]}),`\n`,_jsxs(_components.p,{children:[`Consent changes appear inline on the contact’s `,_jsx(_components.strong,{children:`Activity`}),` feed, in order, alongside sends, opens, orders and everything else. Open a contact from `,_jsx(_components.strong,{children:`Contacts`}),` to read it.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Nothing in the app edits or deletes a consent row. There is no button for it and no API for it. The one thing that removes consent history is a privacy erasure: a data-deletion request from a connected store, or hard-deleting the contact, removes that person’s record including their consent rows. That is deletion of a person’s data, not correction of the evidence.`})}),`\n`,_jsx(Heading,{level:`3`,id:`producing-proof-of-opt-in`,children:`Producing proof of opt-in`}),`\n`,_jsxs(_components.p,{children:[`Export the contacts you need from `,_jsx(_components.strong,{children:`Contacts`}),`, and include the consent evidence columns in the export dialog. Per channel you can export:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`the consent `,_jsx(_components.strong,{children:`source`}),`, for email, SMS, push and WhatsApp`]}),`\n`,_jsxs(_components.li,{children:[`the consent `,_jsx(_components.strong,{children:`timestamp`}),`, for the same four channels`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Those eight columns plus the address are what a complaint or an audit normally asks for.`}),`\n`,_jsx(Heading,{level:`2`,id:`consent-from-a-connected-store`,children:`Consent from a connected store`}),`\n`,_jsx(_components.p,{children:`A store tells Senderz whether a customer accepted marketing. Two rules protect the record.`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`The opt-in keeps the store's own date`,icon:`calendar-check`,id:`the-opt-in-keeps-the-stores-own-date`,children:_jsx(_components.p,{children:`If the store reports when the customer accepted marketing, that date is what\nSenderz records, not the moment the sync ran. A customer who opted in two\nyears ago is stored as having opted in two years ago. A timestamp that cannot\nbe read, or that sits in the future, is ignored and the sync time is used\ninstead.`})}),_jsx(Accordion,{title:`A sync cannot re-open an opt-out`,icon:`shield-halved`,id:`a-sync-cannot-re-open-an-opt-out`,children:_jsxs(_components.p,{children:[`A live store update can move a contact from `,_jsx(_components.strong,{children:`Never subscribed`}),` to\n`,_jsx(_components.strong,{children:`Subscribed`}),`, and it can move `,_jsx(_components.strong,{children:`Subscribed`}),` to `,_jsx(_components.strong,{children:`Unsubscribed`}),` when the\nstore explicitly says the customer withdrew. It can never move\n`,_jsx(_components.strong,{children:`Unsubscribed`}),` back to `,_jsx(_components.strong,{children:`Subscribed`}),`. Someone who opted out through you\nstays opted out.`]})}),_jsx(Accordion,{title:`Backfilling order history only ever adds consent`,icon:`clock-rotate-left`,id:`backfilling-order-history-only-ever-adds-consent`,children:_jsx(_components.p,{children:`When you connect a store, Senderz reads your past orders. A box left unticked\nat a checkout years ago says nothing about what the shopper wants now, so the\nbackfill keeps positive signals only. It can subscribe someone. It can never\nunsubscribe anyone.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`consent-from-an-import`,children:`Consent from an import`}),`\n`,_jsx(_components.p,{children:`An import file follows the same principle.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A truthy consent value subscribes. An explicit falsy value unsubscribes.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`An import can never turn an opt-out back into an opt-in.`}),` That holds even when you tick the force-subscribe boxes on the last step of the import wizard. A genuine re-subscribe has to come from the person.`]}),`\n`,_jsx(_components.li,{children:`A state that already matches is skipped rather than rewritten, so re-uploading the same list does not restamp every opt-in date to today and bury the original evidence.`}),`\n`,_jsx(_components.li,{children:`If the file carries a consent date column and you map it, that date is recorded instead of the import time.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/en/audience/import`,children:`Import contacts`}),` for the wizard and the consent step.`]}),`\n`,_jsx(Heading,{level:`2`,id:`suppression-is-a-different-thing`,children:`Suppression is a different thing`}),`\n`,_jsxs(_components.p,{children:[`Consent says what a person chose. `,_jsx(_components.strong,{children:`Suppression is a hard block on an address or a number`}),`, whatever the consent state says. An address on the suppression list is skipped before anything else is checked.`]}),`\n`,_jsxs(_components.p,{children:[`Find it at `,_jsx(_components.strong,{children:`Contacts`}),` on the `,_jsx(_components.strong,{children:`Suppression list`}),` tab.`]}),`\n`,_jsx(Heading,{level:`3`,id:`why-an-address-gets-suppressed`,children:`Why an address gets suppressed`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Reason`}),_jsx(_components.th,{children:`What causes it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Hard bounce`}),_jsx(_components.td,{children:`A permanent delivery failure. The mailbox does not exist`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Repeated soft bounce`}),_jsx(_components.td,{children:`Three temporary failures inside a rolling 30 days`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Spam complaint`}),_jsx(_components.td,{children:`The recipient reported your message as spam`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Manual unsubscribe`}),_jsx(_components.td,{children:`A one-click unsubscribe, a preference-center removal, or an address you added by hand`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`STOP received`}),_jsx(_components.td,{children:`An inbound STOP reply from the recipient`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Invalid address`}),_jsx(_components.td,{children:`The carrier reported the number as undeliverable`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Push permission revoked`}),_jsx(_components.td,{children:`The browser revoked that push subscription`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Global blocklist`}),_jsx(_components.td,{children:`The Senderz platform team blocked the address across every workspace`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`List cleanup`}),_jsx(_components.td,{children:`Reserved. No automatic process writes this today`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`All nine appear in the `,_jsx(_components.strong,{children:`Reason`}),` filter on the tab, alongside a channel filter and a search box.`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-you-can-do-on-the-tab`,children:`What you can do on the tab`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Search and filter`,children:_jsx(_components.p,{children:`Search by email or phone. Filter by channel and by reason.`})}),_jsx(Step,{title:`Add an address`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Add address`}),` blocks an email or a phone number by hand. The screen warns\nyou plainly: sending to that address will be permanently blocked across all\ncampaigns and flows.`]})}),_jsx(Step,{title:`Remove an address`,children:_jsx(_components.p,{children:`Removing an entry lets sending to it resume. Only do this if the address was\nsuppressed by mistake. A hard bounce or a spam complaint is a real signal and\nremoving it will hurt your deliverability.`})}),_jsx(Step,{title:`Export CSV`,children:_jsx(_components.p,{children:`Downloads the filtered list with the address, channel, reason, source and the\ndate it was suppressed.`})})]}),`\n`,_jsx(_components.p,{children:`Every morning Senderz posts one notification summarising the addresses suppressed in the last 24 hours, split by reason, linking straight to this tab.`}),`\n`,_jsx(Heading,{level:`3`,id:`where-suppression-sits-in-the-send-pipeline`,children:`Where suppression sits in the send pipeline`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Suppression`,children:_jsx(_components.p,{children:`Checked first. A suppressed address is skipped and nothing else runs.`})}),_jsx(Step,{title:`Transactional carve-out`,children:_jsx(_components.p,{children:`Transactional messages and one-time codes stop here and go out.`})}),_jsx(Step,{title:`Consent`,children:_jsxs(_components.p,{children:[`The channel must read `,_jsx(_components.strong,{children:`Subscribed`}),`.`]})}),_jsx(Step,{title:`Address quality`,children:_jsx(_components.p,{children:`An email address Senderz has already flagged as invalid is skipped.`})}),_jsx(Step,{title:`Marketing pause`,children:_jsx(_components.p,{children:`A paused contact is skipped until the pause expires.`})}),_jsx(Step,{title:`Frequency cap`,children:_jsx(_components.p,{children:`Including a reduced weekly cap the recipient chose themselves.`})}),_jsx(Step,{title:`Quiet hours and Shabbat`,children:_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/en/compliance/quiet-hours`,children:`Quiet hours \u0026 Shabbat`}),`.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`stop-handling`,children:`STOP handling`}),`\n`,_jsxs(_components.p,{children:[`An inbound STOP arrives from the carrier, suppresses the number for your workspace within seconds, drops that contact’s SMS consent to unsubscribed, and appends to the consent log with the source `,_jsx(_components.strong,{children:`SMS STOP reply`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`A STOP withdraws SMS only.`}),` It does not touch email, push or WhatsApp on the same person. WhatsApp uses the same phone number but is a separate channel with a separate opt-in, so it is left alone.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Because suppression is checked before everything else, a STOP also stops\n`,_jsx(_components.strong,{children:`transactional`}),` SMS to that number, such as an order confirmation. That is\nthe correct reading of an opt-out reply, but it is worth knowing if you rely on\nSMS for order updates. The one exception is a verification code sent through\nthe one-time-code API, which is not checked against the suppression list.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`the-marketing-pause`,children:`The marketing pause`}),`\n`,_jsx(_components.p,{children:`This is the single most common answer to “why did my campaign skip a subscribed contact”.`}),`\n`,_jsxs(_components.p,{children:[`On your unsubscribe page a recipient can choose to `,_jsx(_components.strong,{children:`pause`}),` marketing instead of leaving. When they do:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Senderz stores a date the pause runs until.`}),`\n`,_jsxs(_components.li,{children:[`Every marketing send skips them until that date, with the reason `,_jsx(_components.strong,{children:`marketing paused`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`They still read as `,_jsx(_components.strong,{children:`Subscribed`}),` everywhere in the app, because they are. They did not withdraw consent, they asked for a break.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`You can see it. A paused contact shows a `,_jsx(_components.strong,{children:`Marketing paused`}),` notice on their profile naming the date, and the same field is available as an export column.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`There is no button to lift a pause.`}),` That is deliberate. The pause is the\nrecipient’s own instruction, and a merchant override would be a compliance\nproblem, not a convenience. It clears on its own when it expires, or earlier if\nthe person opts back in themselves. A re-save that leaves them already\nsubscribed does not clear it, because they never withdrew the instruction.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`reduced-frequency`,children:`Reduced frequency`}),`\n`,_jsxs(_components.p,{children:[`The same page offers `,_jsx(_components.strong,{children:`once a week only`}),` instead of leaving. Choosing it sets a cap of one marketing email per week on that contact. They stay subscribed, and sends beyond the cap are skipped as a frequency cap rather than as an unsubscribe. Like the pause, the recipient sets it, and it shows on the recipient’s own page as already active if they return.`]}),`\n`,_jsx(Heading,{level:`2`,id:`unsubscribing-is-per-channel-or-contact-wide`,children:`Unsubscribing is per channel or contact-wide`}),`\n`,_jsx(_components.p,{children:`These are two different actions and it matters which one ran.`}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`Per channel`,id:`per-channel`,children:_jsxs(_components.p,{children:[`The unsubscribe button in a mail app, an inbound SMS STOP, an unsubscribe\nreported by the mail provider, and each toggle on the preference center all\nact on `,_jsx(_components.strong,{children:`one channel`}),`. The channel is the one the message was sent on.\nTurning off email leaves SMS, push and WhatsApp exactly as they were.`]})}),_jsx(Tab,{title:`Contact-wide`,id:`contact-wide`,children:_jsxs(_components.p,{children:[`The unsubscribe button at the bottom of your unsubscribe page, whose wording\nyou choose, withdraws `,_jsx(_components.strong,{children:`every`}),` channel at once: email, SMS, push and\nWhatsApp. It also revokes the person’s live browser push subscriptions and\nadds their number to the WhatsApp opt-out list.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`re-subscribing`,children:`Re-subscribing`}),`\n`,_jsx(_components.p,{children:`A person who opts back in through the preference center is genuinely restored:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The channel state returns to `,_jsx(_components.strong,{children:`Subscribed`}),` and a new consent row is written.`]}),`\n`,_jsx(_components.li,{children:`The matching suppression entry for that address or number is removed, so sending resumes.`}),`\n`,_jsx(_components.li,{children:`For push, subscriptions that were revoked by an unsubscribe are restored. Ones the browser itself revoked are not.`}),`\n`,_jsx(_components.li,{children:`Any active marketing pause is cleared, because the person just told you the opposite.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`You cannot do this on their behalf from an import file. You can do it on a single contact by editing them, which is a manual assertion you are responsible for.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-you-can-change-and-what-you-cannot`,children:`What you can change, and what you cannot`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`You can set consent on one contact`,icon:`pen`,id:`you-can-set-consent-on-one-contact`,children:_jsxs(_components.p,{children:[`Open a contact, choose `,_jsx(_components.strong,{children:`Edit`}),`, and switch email, SMS, push or WhatsApp on\nor off. The change is logged with the source `,_jsx(_components.strong,{children:`manual entry`}),` against your\naccount.`]})}),_jsx(Accordion,{title:`You can subscribe or unsubscribe in bulk`,icon:`layer-group`,id:`you-can-subscribe-or-unsubscribe-in-bulk`,children:_jsxs(_components.p,{children:[`Select contacts on the Contacts page. The action bar offers `,_jsx(_components.strong,{children:`Subscribed to\nemail`}),`, `,_jsx(_components.strong,{children:`Subscribed to SMS`}),`, `,_jsx(_components.strong,{children:`Subscribed to WhatsApp`}),` and `,_jsx(_components.strong,{children:`Subscribed\nto all`}),`, plus `,_jsx(_components.strong,{children:`Suppress`}),`. The Suppress action marks the selected contacts\nas unsubscribed on email and SMS. Push and WhatsApp are edited per contact.`]})}),_jsx(Accordion,{title:`You can add and remove suppression entries`,icon:`ban`,id:`you-can-add-and-remove-suppression-entries`,children:_jsx(_components.p,{children:`By hand, on the Suppression list tab, for an email address or a phone number.`})}),_jsx(Accordion,{title:`You cannot edit or delete the consent log`,icon:`lock`,id:`you-cannot-edit-or-delete-the-consent-log`,children:_jsx(_components.p,{children:`There is no way to correct a past consent row. It is the evidence.`})}),_jsx(Accordion,{title:`You cannot lift a marketing pause or a frequency choice`,icon:`lock`,id:`you-cannot-lift-a-marketing-pause-or-a-frequency-choice`,children:_jsx(_components.p,{children:`Both are the recipient’s instruction. They expire, or the recipient changes\nthem.`})}),_jsx(Accordion,{title:`You cannot re-open an opt-out with a file`,icon:`lock`,id:`you-cannot-re-open-an-opt-out-with-a-file`,children:_jsx(_components.p,{children:`An import will not move an unsubscribed contact back to subscribed, even with\nthe force-subscribe boxes ticked.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`israeli-compliance`,children:`Israeli compliance`}),`\n`,_jsxs(_components.p,{children:[`Explicit opt-in, STOP handling, and quiet hours plus Shabbat are enforced at the send worker, not in the builder, so no campaign setup can produce a non-compliant send. Read `,_jsx(_components.a,{href:`/en/compliance/israel`,children:`Israeli compliance`}),` and `,_jsx(_components.a,{href:`/en/compliance/quiet-hours`,children:`Quiet hours \u0026 Shabbat`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Consent \u0026 suppression","description":"Per-channel consent states, every way consent is recorded, the consent log as evidence, the suppression list, the marketing pause, and what you can and cannot change yourself.","icon":"clipboard-check","href":"/en/audience/consent"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Four channels, tracked separately","slug":"four-channels-tracked-separately","depth":2,"children":[]},{"title":"The four states","slug":"the-four-states","depth":2,"children":[]},{"title":"Where consent comes from","slug":"where-consent-comes-from","depth":2,"children":[]},{"title":"The consent log","slug":"the-consent-log","depth":2,"children":[{"title":"Producing proof of opt-in","slug":"producing-proof-of-opt-in","depth":3,"children":[]}]},{"title":"Consent from a connected store","slug":"consent-from-a-connected-store","depth":2,"children":[]},{"title":"Consent from an import","slug":"consent-from-an-import","depth":2,"children":[]},{"title":"Suppression is a different thing","slug":"suppression-is-a-different-thing","depth":2,"children":[{"title":"Why an address gets suppressed","slug":"why-an-address-gets-suppressed","depth":3,"children":[]},{"title":"What you can do on the tab","slug":"what-you-can-do-on-the-tab","depth":3,"children":[]},{"title":"Where suppression sits in the send pipeline","slug":"where-suppression-sits-in-the-send-pipeline","depth":3,"children":[]}]},{"title":"STOP handling","slug":"stop-handling","depth":2,"children":[]},{"title":"The marketing pause","slug":"the-marketing-pause","depth":2,"children":[]},{"title":"Reduced frequency","slug":"reduced-frequency","depth":2,"children":[]},{"title":"Unsubscribing is per channel or contact-wide","slug":"unsubscribing-is-per-channel-or-contact-wide","depth":2,"children":[]},{"title":"Re-subscribing","slug":"re-subscribing","depth":2,"children":[]},{"title":"What you can change, and what you cannot","slug":"what-you-can-change-and-what-you-cannot","depth":2,"children":[]},{"title":"Israeli compliance","slug":"israeli-compliance","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"senderz","siteName":"Senderz","title":"Consent \u0026 suppression - Senderz","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"he":{"href":"/he/getting-started/introduction","matchLevel":4},"en":{"href":"/en/audience/consent","matchLevel":0}}},"lastModified":"2026-08-26T13:50:14.611Z","originalFileLocation":"en/audience/consent.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Per-channel consent states, every way consent is recorded, the consent log as evidence, the suppression list, the marketing pause, and what you can and cannot change yourself.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Senderz\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Consent \u0026amp; suppression - Senderz\">\u003cmeta data-mint-head property=\"og:description\" content=\"Per-channel consent states, every way consent is recorded, the consent log as evidence, the suppression list, the marketing pause, and what you can and cannot change yourself.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Senderz\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.senderz.app/en/audience/consent\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://senderz.mintlify.site/_mintlify/api/og/v2?division=Audience\u0026amp;title=Consent+%26+suppression\u0026amp;description=Per-channel+consent+states%2C+every+way+consent+is+recorded%2C+the+consent+log+as+evidence%2C+the+suppression+list%2C+the+marketing+pause%2C+and+what+you+can+and+cannot+c\u0026amp;theme=5f67aa4bce0831aa15b0a1ff\u0026amp;signature=dd1de603128a51390e9184794bf3cc33c2577add5fd3e66b2d254d43ea0550db\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Consent \u0026amp; suppression - Senderz\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Per-channel consent states, every way consent is recorded, the consent log as evidence, the suppression list, the marketing pause, and what you can and cannot change yourself.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://senderz.mintlify.site/_mintlify/api/og/v2?division=Audience\u0026amp;title=Consent+%26+suppression\u0026amp;description=Per-channel+consent+states%2C+every+way+consent+is+recorded%2C+the+consent+log+as+evidence%2C+the+suppression+list%2C+the+marketing+pause%2C+and+what+you+can+and+cannot+c\u0026amp;theme=5f67aa4bce0831aa15b0a1ff\u0026amp;signature=dd1de603128a51390e9184794bf3cc33c2577add5fd3e66b2d254d43ea0550db\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/senderz/i8tUhenf4EX6qIDZ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Senderz\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#141414\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.senderz.app/en/audience/consent\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/audience/consent.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.senderz.app/#organization\",\"name\":\"Senderz\",\"url\":\"https://docs.senderz.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/senderz/TYfOlOCqzxvvnafR/logo/logo-light.png?fit=max\u0026auto=format\u0026n=TYfOlOCqzxvvnafR\u0026q=85\u0026s=716b2d481f50aa8a6539edb6be85247f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.senderz.app#website\",\"name\":\"Senderz\",\"url\":\"https://docs.senderz.app\",\"publisher\":{\"@id\":\"https://docs.senderz.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.senderz.app/en/audience/consent#webpage\",\"url\":\"https://docs.senderz.app/en/audience/consent\",\"name\":\"Consent \u0026 suppression\",\"description\":\"Per-channel consent states, every way consent is recorded, the consent log as evidence, the suppression list, the marketing pause, and what you can and cannot change yourself.\",\"dateModified\":\"2026-08-26T13:50:14.611Z\",\"isPartOf\":{\"@id\":\"https://docs.senderz.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.senderz.app/en/audience/consent#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.senderz.app/en/audience/consent#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Audience\",\"item\":\"https://docs.senderz.app/en/audience/contacts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Consent \u0026 suppression\",\"item\":\"https://docs.senderz.app/en/audience/consent\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.senderz.app/en/audience/consent#article\",\"headline\":\"Consent \u0026 suppression\",\"name\":\"Consent \u0026 suppression\",\"description\":\"Per-channel consent states, every way consent is recorded, the consent log as evidence, the suppression list, the marketing pause, and what you can and cannot change yourself.\",\"url\":\"https://docs.senderz.app/en/audience/consent\",\"mainEntityOfPage\":{\"@id\":\"https://docs.senderz.app/en/audience/consent#webpage\"},\"dateModified\":\"2026-08-26T13:50:14.611Z\",\"publisher\":{\"@id\":\"https://docs.senderz.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.senderz.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Senderz\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Senderz\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/en/audience/consent.md","siteName":"Senderz","nav":{"global":null,"languages":[{"language":"he","default":true,"pages":[{"title":"he","href":"/he/getting-started/introduction"}]},{"language":"en","tabs":[{"tab":"Guides","groups":[{"group":"Getting started","pages":[{"title":"Welcome to Senderz","sidebarTitle":"Introduction","icon":"house","href":"/en/getting-started/introduction"},{"title":"Quickstart","icon":"rocket","href":"/en/getting-started/quickstart"},{"title":"Core concepts","icon":"diagram-project","href":"/en/getting-started/concepts"},{"title":"Workspaces \u0026 team","icon":"users","href":"/en/getting-started/workspaces"}]},{"group":"Channels","pages":[{"title":"Channels overview","icon":"signal-stream","href":"/en/channels/overview"},{"title":"Email","icon":"envelope","href":"/en/channels/email"},{"title":"SMS","icon":"comment-sms","href":"/en/channels/sms"},{"title":"WhatsApp","icon":"whatsapp","href":"/en/channels/whatsapp"},{"title":"Web push","icon":"bell","href":"/en/channels/push"},{"title":"Voice","icon":"phone","href":"/en/channels/voice"}]},{"group":"Audience","pages":[{"title":"Contacts","icon":"address-book","href":"/en/audience/contacts"},{"title":"Contact fields","icon":"database","href":"/en/audience/contact-fields"},{"title":"Lists","icon":"rectangle-list","href":"/en/audience/lists"},{"title":"Segments","icon":"filter","href":"/en/audience/segments"},{"title":"Importing contacts","description":"Upload a file or a Google Sheet, map columns, choose how duplicates are handled, and declare consent in a four-step wizard.","icon":"file-import","href":"/en/audience/import"},{"title":"Consent \u0026 suppression","icon":"clipboard-check","href":"/en/audience/consent"},{"title":"Preference center","description":"The page recipients land on from your unsubscribe link: how to edit its design, text, save options, pause durations and topics, what publishing does, and which parts cannot be removed.","icon":"sliders","href":"/en/audience/preference-center"}]},{"group":"Campaigns \u0026 automation","pages":[{"title":"Campaigns","icon":"paper-plane","href":"/en/messaging/campaigns"},{"title":"Campaign approvals","icon":"circle-check","href":"/en/messaging/campaign-approvals"},{"title":"A/B tests","icon":"vial","href":"/en/messaging/ab-tests"},{"title":"Automations (flows)","icon":"bolt","href":"/en/messaging/flows"},{"title":"Flow triggers","icon":"bolt","href":"/en/messaging/flows/triggers"},{"title":"Flow steps and actions","icon":"layer-group","href":"/en/messaging/flows/steps"},{"title":"Webhook step","icon":"webhook","href":"/en/messaging/flows/webhooks"},{"title":"Who enters and who leaves","icon":"door-open","href":"/en/messaging/flows/audience-and-exit"},{"title":"Flow library and AI","icon":"wand-magic-sparkles","href":"/en/messaging/flows/library-and-ai"},{"title":"Publishing and monitoring","icon":"chart-line","href":"/en/messaging/flows/publish-and-monitor"},{"title":"Templates","icon":"file-lines","href":"/en/messaging/templates"},{"title":"Popups","icon":"window-restore","href":"/en/messaging/popups"},{"title":"Popup blocks","icon":"cubes","href":"/en/messaging/popup-blocks"},{"title":"Popup targeting and display","icon":"bullseye","href":"/en/messaging/popup-targeting"},{"title":"Installing popups on your store","icon":"plug","href":"/en/messaging/popup-install"},{"title":"Popup testing and results","icon":"flask","href":"/en/messaging/popup-testing-and-analytics"},{"title":"Coupons","icon":"ticket","href":"/en/messaging/coupons"}]},{"group":"Content","pages":[{"title":"Brand kit","icon":"palette","href":"/en/content/brand-kit"},{"title":"Media library","icon":"images","href":"/en/content/media-library"},{"title":"Product catalog","icon":"box","href":"/en/content/products"},{"title":"Saved blocks","icon":"cubes","href":"/en/content/saved-blocks"}]},{"group":"Deliverability","pages":[{"title":"Domains \u0026 authentication","icon":"globe","href":"/en/deliverability/domains"},{"title":"Sender addresses \u0026 names","icon":"at","href":"/en/deliverability/sender-identities"},{"title":"SMS Sender names","icon":"id-badge","href":"/en/deliverability/sender-ids"},{"title":"Warmup \u0026 reputation","icon":"temperature-arrow-up","href":"/en/deliverability/warmup"}]},{"group":"Israeli compliance","pages":[{"title":"Israeli compliance","icon":"scale-balanced","href":"/en/compliance/israel"},{"title":"Quiet hours \u0026 Shabbat","icon":"moon","href":"/en/compliance/quiet-hours"}]},{"group":"Analytics \u0026 AI","pages":[{"title":"Revenue attribution","icon":"chart-pie","href":"/en/analytics/attribution"},{"title":"Senderz AI","icon":"sparkles","href":"/en/ai/overview"},{"title":"AI assistant","icon":"comments","href":"/en/ai/assistant"}]},{"group":"Account","pages":[{"title":"Plans \u0026 billing","icon":"credit-card","href":"/en/account/plans-and-billing"},{"title":"Contact limits","icon":"gauge-high","href":"/en/account/contact-limits"},{"title":"SMS credits","icon":"wallet","href":"/en/account/sms-credits"},{"title":"Notifications","icon":"bell","href":"/en/account/notifications"},{"title":"Help and support","icon":"life-ring","href":"/en/account/support"}]}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/en/integrations/overview"}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/en/api-reference/introduction"}]}]}]},"basePath":"","title":"Consent \u0026 suppression - Senderz","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":[],"chunks":[]}