Skip to main content
Solved

How do I get a "manage preferences" link for inclusion in our product?

  • March 11, 2024
  • 5 replies
  • 6444 views

Forum|alt.badge.img+2

Since Klaviyo is the source of truth whether a user is subscribed or not, we want to provide a link from our web app to the preferences for that user on klaviyo’s side.  However, for the life of me, I cannot find a link for this. I expected some global link where we pass in a URL encoded email address or user ID.

 

In email campaigns you create within klaviyo, you can use the syntax `{% manage_preferences %}` or `{% manage_preferences_link %}`, Unfortunately that link looks dynamic and not consistent even for a given user.

 

I found a year old post that seems to indicate this is only possible with HOSTED pages:

https://community.klaviyo.com/lists-segments-and-profiles-35/is-there-a-way-to-change-default-link-for-manage-preferences-tag-6569?postid=26616#post26616

 

However, this seems crazy to require a full blown custom page for this scenario. If that is true, I also cannot find good boiler plate code to use to create a reasonably good preferences page. I’d settle for just re-creating the default one Klaviyo provides (but as a hosted page).

 

help?

Best answer by kaila.lawrence

(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

 

5 replies

retention
Partner - Platinum
Forum|alt.badge.img+62
  • 2025 Champion
  • March 11, 2024

Hi @tmchow-bc, welcome back to the community!

So, there’s a number of ways for users to unsubscribe from a website that’s not linked from an email Campaign or Flow Message.


Those are: 

  1. Through a Custom Hosted Page
  2. Through the generic List Specific or Global Unsubscribe Page
  3. Via the Klaviyo API

Probably the easiest one is #2, via a List Specific or Global Unsubscribe Page.

 

Global Unsubscribe URL

This unsubscribes the user from all Lists within your Klaviyo Account.  

You can find this here:

  • (Lower Left Corner) → Settings → Other → Consent Pages (Inside Sidebar) → Global unsubscribe page (section)

See here:

 

Specific List Unsubscribe URL

This unsubscribes the user from the specific List, but can also unsubscribe them from all other Lists (Globally) depending on your Unsubscribe Behavior settings.

You can find this here;

  • Audience (Main Sidebar) → List & Segments → Your List Name → Settings (Top Tab) → Consent (Inside Sidebar) → Unsubscribe (section)

See here:

 

Hope this helps!


Forum|alt.badge.img+2
  • Author
  • Contributor I
  • March 11, 2024

@retention Sorry I’m not asking about the unsubscribe link, but the manage preferences link.


kaila.lawrence
Community Manager
Forum|alt.badge.img+37
  • Community Manager
  • Answer
  • March 12, 2024

(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

 


Forum|alt.badge.img+2
  • Author
  • Contributor I
  • March 12, 2024

Hey there @tmchow-bc! I did actually answer this recently in another thread:

 

In short, there is no global link to a preference page because the link is uniquely generated for each recipient via the {% manage_preferences_link %} tag and associated to a specific list.

 

Sorry I don’t have better news for you!

 

@kaila.lawrence Is this even the case if we use a Custom Hosted Page on Klaviyo for this?  is that link also dynamic?

 

Also, when you say dynamic, is that URL unable to be generated by us using some method like a hash?


kaila.lawrence
Community Manager
Forum|alt.badge.img+37
  • Community Manager
  • March 13, 2024

@tmchow-bc It’s definitely possible to redirect the preference page to a Custom Hosted Page for sure. That way, the {% manage_preferences_link %} would still operate dynamically as usual and so would the hosted page URL so long as the subscriber was previously cookied. 

 

How exactly to set that up is unfortunately outside my scope of knowledge. However, we have a super kick ass Developer Group that can guide you on the technical nitty gritty there if you want to pop in and ask. :)