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:

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:

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:

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#