Determining when a user is a free user + features associated with free users

Hello :blush:

I’m trying to clean up a few UI things on Lillihub, specifically around feature access. When calling https://micro.blog/account/verify' we get the following properties has_site, is_fullaccess, and is_premium.

Can I use some combination of those to determine who is a free user without a micro.blog hosted blog?

My feature based questions:

  • Do free users have access to bookshelves and reading goals?
  • Do free users have access to basic bookmarks?
  • Do free users have to have an external blog?
    • If so, does that blog need to support micropub?

I’m also using a form submit on https://micro.blog/indieauth/auth with a me=https://username.micro.blog to get a users access token. Will that work for free users? If not, is there some other mechanism I can use?

Thanks!
Loura

Great questions, I think we may need to add more fields to make this easier. First of all, please ignore is_fullaccess. That was to track the beta years ago and will be removed eventually.

Free users do have access to bookshelves, reading goals, and basic bookmarks. For bookmarks, the main part that is only for Micro.blog Premium is highlights and archiving web pages.

I don’t think there’s currently a good way to determine free users right now, because someone could have a hosted blog that they let expire. That would effectively turn them into a free user, but you will still see their blog show up in the list that comes back from /micropub?q=config.

Maybe we should add a new field is_free that is set when someone doesn’t have an active hosted blog subscription? Let me know what would be most helpful.

Awesome, thanks.

Just to make sure I’m following correctly, there isn’t much difference between a free user and a basic m.b. user feature-wise. Just that the basic user has the m.b. hosted blog.

Does the has_site let me know if the hosted blog is expired? I should probably hide the blog as a posting option if it’s expired. Also, and I might be wrong about this, someone may sign up for the 30 day trial and cancel right away but the has_site will still be true… because they are in the trial period. In that case it might be nice to have an is_free field so I can hide the posting interface more reliably.

And just to verify, can free users still authenticate with username.micro.blog even though they don’t have a m.b. hosted blog?

That’s right, the features are basically the same except for the hosted blog part. It is still possible to authenticate with username.micro.blog regardless, except if the user has deleted their hosted blog. That should be rare, though.

Unfortunately has_site isn’t very helpful. It was another leftover from early versions and doesn’t add anything special above just getting a count of the user’s blogs.

I’m currently working on some subscription plan changes to simplify things, so it’s a perfect opportunity to add a new field. Thinking about this more, instead of is_free, we should have a plan field that could be “free”, “standard” (the basic $5 plan), “premium”, “family”, or “team”. Seems both simpler and more flexible later.

We could also add the expiration date for each blog returned from /micropub?q=config. However, I don’t think I would hide a posting option for expired blogs, because someone might’ve let their blog expire accidentally and missed the message about it. When trying to post to an expired blog, you’ll get an error back in the JSON that can be shown to the user.

To be clear, with the expiration, I meant that if someone really didn’t want to use the hosted blog anymore, they could then downgrade to “free”, and then it would be appropriate to hide the posting options. Of course, it’s up to you!