Skip to content

A preference center for a small SaaS: three toggles, not one exit

A small SaaS needs three toggles, not twelve: product news, tips and the digest. What belongs in a preference center, what never does, and how to wire it up.

Koltrix Team5 min read
A laptop, a coffee cup and a notepad on a wooden desk seen from above
Photo by Lauren Mancke on Unsplash
On this page(8 sections)
  1. Do you need a preference center at all?
  2. What are the three toggles?
  3. What must never appear on the page?
  4. Does a preference center replace one-click unsubscribe?
  5. How do you store preferences?
  6. How do you know it is working?
  7. Common mistakes
  8. Bottom line

A preference center for a small SaaS should be one page with three toggles (product news, tips and the digest), a pause option and an "unsubscribe from all marketing" button. Receipts, password resets and security alerts never appear on it. That is enough to turn many "stop emailing me" clicks into "send me less," without a 12-checkbox form nobody finishes.

A preference center is a page, reachable from the footer of your marketing and lifecycle email, where a person chooses which kinds of email they want and how often. It sits beside the unsubscribe link, not in place of it.

Do you need a preference center at all?

Not on day one. If you send one monthly newsletter, a single unsubscribe link is the right amount of product. A preference center earns its place when you send at least two different kinds of non-essential email that people could reasonably value differently, for example launch announcements and a weekly usage digest.

The test is simple: if someone dislikes one of your streams, can they say so without losing the other? If not, your only exit is "unsubscribe from everything," and some people will use the spam button instead. Our post on unsubscribe pages that do not annoy people covers that single-page flow; this post is the next step up.

What are the three toggles?

Group by the reason you send, not by your internal team names.

Toggle What it covers Default for a new signup
Product news Launches, changelog highlights, pricing changes you want to announce On
Tips and guides Onboarding follow-ups, how-to emails, best-practice advice On during onboarding, then user's choice
Activity digest A recurring summary of the account's own usage or results On

Three is a ceiling you grow into, not a quota. Do not list a category you do not actually send, and do not split one stream into two toggles unless real customers would want them separately. Every extra row adds a decision, and long forms get abandoned.

Add two controls that are not toggles: a pause ("no marketing email for 30 days") and a clear unsubscribe from all marketing button at the bottom. Frequency choices ("weekly instead of daily") are worth adding only when you really have a daily stream.

What must never appear on the page?

Anything the person needs to use your product safely or legally. A short rule of thumb:

  • Always sent, no toggle: password resets, email verification, receipts and invoices, security alerts, failed-payment notices, changes to terms that affect the account.
  • Toggle-able: anything whose absence changes nothing about their ability to use the account.

Putting a password reset behind a toggle invites a support ticket the day someone turns it off. For the full sorting exercise, see transactional, lifecycle or marketing email types and the lifecycle email inventory.

Be honest about the label on the "unsubscribe from all" button. It means all marketing and lifecycle mail, and the page should say in one line that you will still send account and security messages.

Does a preference center replace one-click unsubscribe?

No. Mailbox providers expect an unsubscribe mechanism that works in the mail client itself. Google's email sender guidelines require bulk senders of marketing and subscribed mail to support one-click unsubscribe through the List-Unsubscribe and List-Unsubscribe-Post headers and to honor requests within two days. The mechanism is defined in RFC 8058.

That one-click request is a POST to your server with no page, no login and no choices. So the design is:

  1. The header one-click action means "unsubscribe from this kind of email, immediately." It never opens a form.
  2. The footer link opens the preference center, where the person can go finer or leaner.
  3. Both write to the same record, so a choice made in one place holds in the other.

The headers themselves are explained in one-click unsubscribe and RFC 8058. Decide up front what the header action means. Many small senders map it to the stream the email belonged to (a tips email unsubscribes the tips toggle) rather than to the whole list. Either choice is defensible if you state it on the page and apply it consistently.

How do you store preferences?

Keep it boring. One table, one row per person, a few columns:

CREATE TABLE email_preferences (
  user_id        uuid PRIMARY KEY,
  product_news   boolean NOT NULL DEFAULT true,
  tips           boolean NOT NULL DEFAULT true,
  digest         boolean NOT NULL DEFAULT true,
  paused_until   timestamptz,
  all_marketing_off boolean NOT NULL DEFAULT false,
  updated_at     timestamptz NOT NULL DEFAULT now()
);

Then enforce it where mail is sent, not where mail is designed. Every marketing or lifecycle send goes through one function that checks all_marketing_off, paused_until and the toggle for that email's stream, and refuses to enqueue if any says no. If checks live in each campaign, one forgotten campaign will email someone who opted out.

Two details that bite later:

  • Signed links, no login. The footer link should carry a signed, expiring token so the person can edit preferences without signing in. Someone who is leaving is the least likely to remember a password.
  • Apply changes immediately. Check the stored value at send time, not when a campaign was scheduled. A person who opts out at noon should not receive the 3 p.m. email that was queued yesterday.

How do you know it is working?

Watch three numbers for the first month, using your own sending data:

  • The share of footer visits that end in a toggle change versus "unsubscribe from all."
  • Spam complaint rate on each stream, which should not rise after you add the page. Google asks bulk senders to keep it low (it recommends staying below 0.10% in Postmaster Tools).
  • Whether any stream is switched off by most people. That is a content problem, not a UI problem.

If nearly everyone switches off the digest, fix or drop the digest. The page is feedback, and ignoring it defeats the purpose.

Common mistakes

  • Sixteen checkboxes. Nobody reads them, and "select all" becomes "unsubscribe all."
  • Making people log in. Every barrier pushes people toward the spam button.
  • A "confirm your choice" email. It is one more message to someone who asked for fewer.
  • Resubscribing silently. A product update or an import must never flip a toggle back on.
  • Hiding unsubscribe-all. Put it on the same page, in plain words.

Bottom line

Start with three toggles, a pause and an honest unsubscribe-all button. Keep account and security email out of the page entirely, keep the one-click header action separate from the page, and enforce preferences at send time in one place. If you send only one stream, skip the page and keep a clean unsubscribe link until a second stream exists.

Start with Koltrix

Your domain, one inbox, and an API that sends.

A team inbox where AI sorts and drafts (nothing is sent without your click), plus the transactional API and SMTP relay your product sends with. 7 days free, no card.

SharePost on XLinkedIn