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 commenti

7 commenti

  1. rafa.silva.br
    The CSV cleanup checklist is gold. We do this quarterly now. lol
  2. tranminh.devop…
    Tip: keep one 'master' list and use sements instead of multiple lists. Way easier to maintain over time
  3. 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.
  4. 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 (modificato)
      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 (modificato)
      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.
  5. joel.anders.se
    we learned the hard way to validate before importing. one bad list reduced our domain reputation for 3 months.
  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