Allow members to self-segment (aka apply labels)

Hi everyone. I love that we’re able to segment email sends by labels. However, that means applying my own labels to members. I’d love for them to be able to choose labels on the front end in their own account, essentially telling me what emails they’re interested in receiving. That way I can have multiple newsletter products without drowning their inboxes and getting a bunch of unsubscribes.

Has anybody figured out how to do this? (Note: I’m a Ghost(Pro) user and not a developer, so there are limits to what I can achieve technically.) Is this something the team is working on? (PLEAAAAASE) This is pretty much the main obstacle to my editorial plans at the moment… thx

I’m not an expert on this but I thought there were zapier integrations that hooked up to surveys that worked this way?

I would also like this. There are clearly some readers who only want a subset of what I post delivered to them, and allowing them to pick and choose would be great.

It would be great to see member labels extended to work globally, both on the front and back, allowing members to subscribe/unsubscribe to topics rather than having them unsubscribe entirely.

For example, I have added the option that allows new members to select topics they wish to subscribe to.
df3c7086811d8b400fdbadf9ff073d4c
However, currently, there is no way for them to mute a topic unless they unsubscribe entirely, so it would be great to see label management extended to members so they can add/remove topics (available) as and when they wish.

Also with labels (and I know I am now being a little ambitious here), you could add a personal touch by creating personal post feeds based on labels members are subscribed to, similar to what Medium does. A simple filter with a combination of tags and member labels would do the trick.

e.g

{{if @member}}
{{#has any="@label, @label2"}}
<h2>Recommended For You {{#if @member.name}}, {{@member.name}}{{/if}}!</h2>
{{#get "posts" filter="tags:[tag1,tag2]+id:-5" limit="3"}} 
{{!-- Post feed here --}}
{{/get}}
{{/has}}
{{else}}
{{#has any="@label3, @label4"}}
<h2>Recommended For You {{#if @member.name}}, {{@member.name}}{{/if}}!</h2>
{{#get "posts" filter="tags:[tag3,tag4]+id:-5" limit="3"}} 
{{!-- Post feed here --}}
{{/get}}
{{/has}}
{{/if}}

Labels could be a very powerful way to offer your members a personal experience.

1 Like

Question: Is it possible to build a page:

  • that is only accessible to logged-in members
  • that displays all the member labels for that membership level, with a checkbox by each
  • that shows the checkboxes as checked for whatever the member chose when signing up
  • and that allows the member to add or subtract labels to their profile by checking or unchecking the checkboxes for those labels?

I have a number of perks, including various newsletters, for members, and I would like to allow them to opt-in and opt-out of the perks as desired.

I don’t mind trying to code such a page, if it is possible to achieve. I don’t want to waste time trying something that Ghost doesn’t support.

Thoughts?

Not at the moment.

This is a workaround which is not directly supported by Ghost and uses Admin members API which is canary. In ghost theme jquery is used to fetch member data from an external API. In this case external API is Cloudflare worker which queries ghost admin. If you are interested have a look at GitHub - influencerTips/cf-ghost-admin-api: Used to expose functionality in Ghost Admin API - I have been considering to add a patch request to API which would allow a method for members to self-segment.

Interesting. Not sure how to use the UUID to get the member’s labels, though.

Norbert has a post on his Biron Themes blog that shows how to write the labels back once the user selects them. (https://bironthemes.com/blog/ghost-member-labels/) Not sure how to use that technique to remove a label, though.

Seems like we’re missing just a few steps to be able to allow members to self-segment.

This would be SOOOOO useful. Holy smokes.

I tried searching but didn’t find anything about this. Do you have a link handy for how to achieve this? Would be super useful!