Subscriber Preferences & Frequency — A Preference Center That Reduces Unsubscribes

Offer a preference center — "Hey, instead of unsubscribing, want fewer emails per week, or only the product updates?" — and unsubscribe rates drop materially. AcelleMail's built-in Update form covers this in 3 clicks. Visual walkthrough plus per-topic-list patterns in the collapsible.

What a preference center is and why it matters

A preference center is the "let me adjust what I get" page subscribers see when they want fewer emails. The naive alternative is the all-or-nothing unsubscribe — they leave, you lose the address forever.

When you offer "Daily / Weekly / Monthly / Only product updates" instead, 30-50% of subscribers who clicked unsubscribe will pick a lower cadence option and stay on the list. That's the same address still consenting, still openable, instead of gone.

AcelleMail's built-in Profile update form is the preference center for most senders. You configure it once; the unsubscribe link in your emails can land subscribers on the form before fully removing them.

Setup in three steps

Step 1: Add the preference fields to your list

Decide the dimensions you want subscribers to control. Common ones:

Field name Type Options
frequency Dropdown daily / weekly / monthly
categories Multi-select product / marketing / events / digest
format Dropdown html / plain-text
channel_email_marketing Boolean yes / no
channel_email_transactional Boolean yes / no

Add via Audience → [list] → Fields → New field for each.

Step 2: Enable the Profile update form

Every list has a built-in Profile update form. Navigate to Audience → [list] → Forms / Pages:

Forms / Pages — list of all forms

Click the Update form (or "Profile update form" depending on your install). Edit which fields appear on the form — the preference fields you just added go here:

Update form — choose fields to display

Save. Each subscriber's preference-update URL is generated automatically and accessible via merge tag in your emails.

Step 3: Link to the preference center from your emails

In any campaign or automation email body, drop the preference-center link before the unsubscribe link in your footer:

Manage your preferences: {{ profile_update_url }}
Unsubscribe: {{ unsubscribe_url }}

The {{ profile_update_url }} merge tag generates a unique-per-recipient URL — clicking it lands on the update form with the subscriber's current values pre-filled.

For higher conversion, intercept the unsubscribe flow: configure your unsubscribe page (Settings → unsubscribe options, varies by install) to first land the subscriber on the preference center with a "Or pick less frequent emails" option, before the final remove button.

Common preference-center patterns

Pattern A: Frequency control only (simplest)

Single dropdown field frequency with values daily / weekly / monthly. Three automations (daily / weekly / monthly digest) read the field and only send to matches.

Pattern B: Topic filters

Multi-select field topics with values like product-updates / industry-news / events. Each topic-list has its own campaign; subscribers see only what they opted into.

Pattern C: Channel preferences

Boolean fields wants_email_marketing / wants_email_transactional / wants_email_invoices. Transactional emails (receipts, password resets) bypass marketing preferences; marketing campaigns check the flag before sending.

Pattern D: Hybrid (most flexible)

Combine all three. Higher cognitive load for subscribers, but biggest reduction in full unsubscribes. Worth the complexity for senders with 100k+ subscribers.

Apply preferences in campaign filters

When you launch a campaign, AcelleMail's filter step lets you scope to subscribers matching the preference values:

Subscriber tags + filter UI

For Pattern B (topic filters):

Filter: categories contains 'product-updates'
Action: send campaign

Subscribers without product-updates in their categories list skip this campaign entirely — no unsubscribe pressure from off-topic sends.

Common UI signals + fixes

Symptom Likely cause UI fix
Subscribers click "manage preferences" but the form is blank Preference fields not added to the Update form Audience → list → Forms → Update form → edit → check each field
Subscribers change preference but next campaign still sends to them Campaign isn't filtering by the preference field Campaign settings → Recipients → add filter on the preference field
Unsubscribe rate didn't drop after adding preference center Footer link order wrong: unsubscribe before preferences Move "manage preferences" ABOVE unsubscribe; most clickers take the first option
Mass updates needed (e.g. reset everyone's frequency to weekly) Bulk-update CSV import with frequency=weekly for everyone Audience → list → Export → edit CSV → import with duplicate-handling=Update
{{ profile_update_url }} shows the literal text List-side merge tag disabled, OR you're previewing a non-real subscriber Send a real test email to verify the URL resolves
Preference center accessible without authentication (security concern) The default form uses signed URLs per-subscriber, not session auth Confirm {{ profile_update_url }} has signature query param; sample a few preview URLs

What to do when someone still hits Unsubscribe

Make the unsubscribe land:

  • Remove the address — don't fight users who clearly want out
  • Mark in the system as Unsubscribed (not deleted) — AcelleMail keeps the row for compliance + analytics
  • Send a one-time confirmation if your jurisdiction requires (some EU markets do)
  • For B2B senders, consider a "we're sorry — was there a specific issue?" follow-up email 7 days later — captures qualitative feedback, doesn't try to resurrect

NEVER:

  • Add an unsubscribe-confirmation re-opt-in step ("are you sure?") that's hard to dismiss
  • Send a "you have been unsubscribed" email if they unsubscribed via list-unsubscribe header (the email IS the confirmation)
  • Re-import unsubscribed addresses from a fresh CSV without explicit re-consent
Advanced: per-topic-list architecture, preference center as a SPA, GDPR / CASL alignment

For senders with sophisticated content programs (separate teams owning separate verticals) the single-list-with-topic-filter pattern can become unwieldy. Two scalable alternatives:

Per-topic lists (one list per topic):

Instead of one list with a topics multi-select, create separate AcelleMail lists per topic — product-updates, industry-news, events. Each list has its own subscribe/unsubscribe flow. Subscribers can be on all, some, or none.

Pros:

  • Clean separation; each list's stats reflect its topic
  • Each topic owner manages their list independently
  • Subscriber unsubscribing from one topic stays on the others

Cons:

  • Duplication of identity across lists (one person = N subscriber rows)
  • Cross-list deduplication (segment "everyone on at least one list") needs manual setup
  • Compliance auditing harder (per-topic unsubscribe records spread across N lists)

For ~10 topics or fewer, per-topic-lists works well. Above that, single-list-with-topic-filter scales better.

Preference center as a custom landing page:

The built-in Update form covers most cases. For brand-aligned UX (matches your website chrome, supports complex conditional fields), build a custom preference page on your own domain that calls AcelleMail's subscriber-update API on submit:

<form action="/preferences/update" method="POST">
  <input name="subscriber_token" value="{{ subscriber.token }}" type="hidden">
  <h2>Email preferences</h2>
  <label>How often?
    <select name="frequency">
      <option value="daily">Daily digest</option>
      <option value="weekly">Weekly digest</option>
      <option value="monthly">Monthly only</option>
    </select>
  </label>
  ...
  <button>Save</button>
</form>

Server-side handler:

$token = $request->input('subscriber_token');
$subscriber = decryptToken($token);

Http::withToken(env('ACELLE_TOKEN'))
   ->patch("https://acellemail.com/api/v1/subscribers/{$subscriber->uid}", [
       'fields' => $request->only(['frequency', 'categories', 'channel_email_marketing']),
   ]);

The subscriber token (signed JWT, expires in 7 days, references the AcelleMail subscriber UID) prevents URL-tampering — only the right person can update their preferences.

GDPR / CASL alignment — for EU + Canadian senders, the preference center is your compliance backbone:

  • Per-purpose consent: GDPR Article 7 requires consent to be specific to each purpose. A single "marketing emails on/off" doesn't meet the bar — split into per-channel + per-content-type consent fields, each toggleable independently. AcelleMail's per-field consent log (in subscriber detail) records each consent grant + revocation with timestamp.

  • Withdrawal as easy as grant: if subscribing was a single click, unsubscribing must be too. The preference center makes the granular withdrawal easy; the unsubscribe link is the blanket withdrawal — both must work.

  • Right to access: GDPR Article 15 means subscribers can request all data you hold. Build a "Download my data" button on the preference center → calls AcelleMail's subscriber-export API → emails them a JSON with their fields + consent history. Most senders rarely get the request, but having the button defuses 90% of compliance complaints before they escalate.

Centralised preference center across multiple AcelleMail installs — for organizations with regional AcelleMail instances (EU + US + APAC for data-residency reasons), build a single preference center that fans out:

User updates preferences on prefs.example.com
   → Backend identifies which AcelleMail instances host this subscriber (could be multiple)
   → Parallel PATCH to each instance with the same field updates
   → Confirm all 200 OK before showing success to user

Worth doing only above a certain scale; below that, send users to the right regional center via a simple lookup.

Soft unsubscribe (suppression without deletion):

When a subscriber says "I'm done" you set status=unsubscribed rather than delete. The row persists; AcelleMail won't send to it; suppression list grows. This matters because:

  • Re-uploading the same email (e.g. CRM sync) doesn't accidentally re-subscribe them
  • Bounce reporting + complaint tracking remains intact
  • Compliance audit can show "this address was on the suppression list since 2026-04-15"

In AcelleMail this is the default behaviour — clicking unsubscribe doesn't delete the row. Only Bulk delete in the admin UI hard-deletes.

Related articles

12 comments

7 comments

  1. joel.anders.se
    we learned the hard way to validate before importing. one bad list reduced our domain reputation for 3 months.
  2. rafa.silva.br
    The CSV cleanup checklist is gold. We do this quarterly now. lol
  3. tranminh.devop…
    Tip: keep one 'master' list and use sements instead of multiple lists. Way easier to maintain over time
  4. nadia.r.cl
    Used Kickbox for the validation step. ~$0.005/address; cleaned 47k subscribers in 90 minutes. Worth it.
    1. admin
      confirming your experience matches what we see in support cases. we'll cite the cause-#5 'wait it out' guidance more prominently in the next revision.
  5. m.schmidt78
    For double opt-in: do you re-confirm migrated subscribers or trust the previous platforms records?
    1. admin
      Yes, that pattern is supported. The undocumented bit is the order — config:cache MUST come after the migration, not before. Updating the docs to make that explicit
    2. admin (edited)
      Yes — strict alignment requires the From: domain to match exactly. Subdomain-level (`bounce.example.com` vs `example.com`) passes relaxed but fails strict. Most operators run relaxed; the rare strict-DMARC setups need explicit subdomain DKIM configuration.
    3. admin (edited)
      We tested this with up to 1M subscribers on a $40/mo VPS. Past that you start needing query optimization. Below that, the defaults are fine.
  6. i.rossi.mil
    The CSV cleanup checklist is gold. We do this quarterly now
  7. femi.adeyemi
    tip: keep one 'master' list and use segments instead of multiple lists. way easier to maintain over time.
    1. admin
      Good tip. The Cloudflare-outbound-rate-limit case is something we hadn't documented.

More in List Management