(answer last updated April 2026)
Hey there @tmchow-bc!
TL;DR: There is no static or global manage preferences URL in Klaviyo. The link is generated dynamically per recipient, tied to list context, and only works inside Klaviyo emails via {% manage_preferences %} or {% manage_preferences_link %}. If you need preferences management outside of an email, you have two paths: use Klaviyo's hosted/custom preference pages (still dynamic, email-context dependent), or build your own UI and write updates back to Klaviyo via API.
Why there's no universal link
The manage preferences link encodes the recipient's identity and list context server-side. You cannot construct it by passing an email address or user ID as a URL parameter. It has to be generated within the email sending context.
Your options
Option 1: Custom hosted preference page (best for email use cases). Klaviyo lets you replace the default preference page with your own HTML template. To set it up: enable Hosted Pages, create your preference page template, then assign it globally via Consent Pages or per list via Subscribe & Preference Pages. The {% manage_preferences %} tag in your emails will load your custom page for each recipient.
Option 2: Build your own preferences UI and update via API (best for in-product use cases). If you need a preferences experience inside your own product, and not inside a Klaviyo email, you'll need to build your own UI and write subscription updates back to Klaviyo using the Profiles and Lists API. The key requirement: your custom form must pass updates back to Klaviyo explicitly, otherwise preference changes won't be stored on the profile.
What won't work - Using {% manage_preferences_link %} outside of a Klaviyo email as it will render as a broken or literal string. It is email-context only.
Helpful docs