Skip to Content
NotificationsUnsubscribe

Notifications — Unsubscribe

One-click unsubscribe

Every notification email from FlowState (except the always-on categories, which carry no unsubscribe link) contains an unsubscribe link in the footer, in the form:

{APP_BASE_URL}/u/<unsubscribe_token>?category=<category>

Opening it loads a confirmation page. Click Unsubscribe to confirm — it then shows an “Unsubscribed” confirmation with a Resubscribe button, so you can undo it from the same page. It also has no per-tenant scope; see “Scope: global vs tenant” below.

What actually happens when you unsubscribe

An unsubscribe request — however it’s submitted (the mailed link, a one-click POST, or unsubscribe_all/update_my_notification_preferences via MCP) — is written to the same preferences row FlowState’s send-time gate reads, so it takes effect on the very next notification for that category.

Bounce and spam handling is separate and also works independently: if an address hard-bounces or is marked as spam, delivery to it stops immediately regardless of category preferences (see Deliverability).

RFC 8058 compliance

FlowState emails include a List-Unsubscribe/List-Unsubscribe-Post header pair pointing at a plain API endpoint (not the human-facing confirmation page above), so a compliant mail client can unsubscribe with a single automated POST and no page render:

List-Unsubscribe: <{API_BASE_URL}/v1/unsubscribe/<token>> List-Unsubscribe-Post: List-Unsubscribe=One-Click

A one-click POST always does a full unsubscribe (all non-always-on categories) — the header has no room to carry a single category the way the visible email-body link does.

There is no mailto: alternative in the List-Unsubscribe header — only the HTTPS URL above.

Unsubscribe token

The unsubscribe token embedded in each email’s link is unique per user. It’s minted the first time a notification is sent to you, does not rotate automatically, and should be treated as a convenience identifier rather than a secret. There’s currently no self-service way to get a fresh one.

Scope: global vs tenant

The mailed unsubscribe link always applies globally — there is no per-tenant scope on the link itself. The unsubscribe_all MCP/API call accepts a scope parameter: scope="global" disables every non-always-on category everywhere, and scope="tenant" disables them for the currently active tenant only, leaving your global setting and other tenants unaffected.

Resubscribing

To re-enable a category:

  1. Go to Account → Notifications (global) or the tenant’s Settings → Notifications (per-tenant) — see the category-name caveat in Manage Preferences.
  2. Or use MCP: update_my_notification_preferences(categories={"hubspot.integration_disconnected": true}, scope="tenant").
  3. Or click Resubscribe on the /u/<token> confirmation page right after unsubscribing.

Always-on categories (account.invite_received, account.gdpr_export_ready, org_billing.suspended_nonpayment, org_billing.purge_warning) cannot be unsubscribed from — their emails carry no unsubscribe link.