Changes to which reactions 👍 are counted as likes ❤

Up to now the Discourse Reactions plugin only allows a single reaction to count as a like :heart: for the purposes of topic rankings and badge granting.

Now that reactions have become an important way site members interact with posts, we are changing this paradigm. All reactions will count as a like except for those specifically excluded via a deny list. By default, only the :-1: reaction does not count as a like.

As part of this change, sites that have been using reactions will find that topic rankings and badge granting will get an adjustment to more accurately reflect engagement. It will not be possible to opt out except to add all reactions you do don’t want to count as a like to the deny list.

Note that by default, the like reaction is :heart: but it can be changed to :+1: or whatever reaction works best for your community. You will not want to change this again once your site becomes established. Historical Like records will not be changed if this setting is altered. It’s best to set it once and forget it.

We have now rolled this on Meta, and soon we will roll it out to all sites using reactions.

Technical details

Backfilling logic is initially disabled by the discourse_reactions_like_sync_enabled site setting. In a few weeks, we will remove this setting and run an initial migration is included to backfill PostAction records for reactions which are not the discourse_reactions_reaction_for_like (by default this is set to :heart:) and not on the discourse_reactions_excluded_from_like list. It is not recommended to change this setting after your site is already established, as we will not do historical cleanup. Some communities have hundreds of thousands if not millions of Like records.

Any time discourse_reactions_excluded_from_like is changed, we will correct history with a background job. Any reactions that are added to the deny list will have their matching PostAction records destroyed, and any reactions removed from the deny list will have matching PostAction records created. We also correct history every hour in a scheduled job if discourse_reactions_like_sync_enabled is turned on.

There is no way to opt out of this – if you don’t want any reactions to count as a Like except the default discourse_reactions_reaction_for_like, then you should add all of your discourse_reactions_enabled_reactions to the discourse_reactions_excluded_from_like list.


Does this mean :eyes: counts as a like?

On most sites I visit it would not imply a like but that one has seen the post or is reviewing the content in the post. Often this is used on technical sites were it may take a few hours to months to review (think proving a theorem or validating research from a paper).


Unless it’s added to discourse_reactions_excluded_from_like it will count as a Like. Though sites without Reactions enabled have traditionally used the heart to convey a similar thing, so it could work either included/excluded depending on how stringent you wanted to be.


That is the problem. Most users I know would not expect :eyes: to be counted as a like. IMO :eyes: should be the other way. :eyes: should default to not being counted as a like and only be counted as a like if changed.

Maybe it should not be considered a reaction but a reply as it is not a positive or negative reaction. Think of it as a reply that does not trigger a notification but lets others know that one has seen the post.

If I knew that :eyes: would eventually be considered as a positive reaction I never would have suggested the use :eyes: .


What happened to my :eyes: reaction for the first post. It was there an now has been removed?


There’s not really any way we can predict how different sites will want to use their Reactions so we’ve kept it configurable without too many prejudgements.

I’m not sure. If you clicked on it a second time it will remove it again (within the default 10 minute time window, that is)


Who cares? The only meaning for this is counting demands of trust levels.


Yeah, that is great! Thank you very much for this!

I just want to make sure that I did understand correct:

So if I want to have the history corrected, I enable this setting and disable it after 2-3 hours? And new reactions will get their correct sync anyway?


Nice one, @tobiaseigen. Looking forward to this change!

Our community loves a good reaction. :smiley:


I can see what he means. If he didn’t change :eyes: to :heart: himself. Then it seems a glitch? Maybe as this pic shows he liked the post.


I didn’t spot his avatar in there the first time. Hmm. :thinking:

I’ve cranked up post undo action window mins and recast my reaction to :eyes: and it seems to still be there?

If we spot more though we can spin up a bug report. :+1:


Just now tried the :eyes: again. Here is a screen capture.

There was an error message posted before this but didn’t capture it because it said something about past time limit so did not expect the :eyes: to appear.

Tried again with :exploding_head:

This time captured the error.


and the updated screen.


Ah, I reset the time window again back to 10 minutes (after that time you can’t remove a Like or Reaction), so I think that’s expected. But keep your eye out for anything weird happening with another post when you try it again. :eyes:

And if you click on the Reactions on the left, that brings up the info box for them rather than just the Likes.


Yes this is correct, there is a job that runs every hour to correct history. Alternatively you can just wait a few weeks for us to more widely enable this, at which point we will run a data migration to backfill the history.


This seems to be weirdly buggy, either they count as both the reaction & a like:

Or they only count as a like when they shouldn’t:
There’s actually a third behaviour here on Meta, reactions besides :heart: don’t exist!


I’m not sure I understand the screenshots and the report… what do you mean when you say reactions “count both the reaction and a like or they only count as a like when they shouldn’t”? Are you just referring to how reactions and likes appear in the user interface?

I don’t understand… on meta I see reactions and heart, and even in your screenshot I can see reactions?


Hello :wave:

Thanks for this change. This is something that I really missed. :heart:

I’ve enabled the discourse_reactions_like_sync_enabled 10 days ago. Now, it makes all :heart: related badge, etc… available to rename it to reaction? I mean for example there are the Gives back, Good Topic or other likes related badges now should be named reactions in there description and the First Like should be first reaction and the first reaction badge should be removed or vica versa because now it means the same.

Of course these are only if the reactions plugin installed.

Same thing with Discourse Gamification, now it can score the reactions too so the likes rate will means reactions.
Etc… Probably there are more places where this can be confuse.

Am I thinking good at this?

Thanks :slightly_smiling_face:


Thanks, Don! I agree updating the gamification topic is probably a good idea, so that it more accurately explains how it works. Also any documentation topics on meta about the badge system.

But I don’t know if it’s worth tying ourselves in knots changing the language describing likes and :heart: throughout the discourse interface, like on the badges page, users page, user profiles, etc etc. Most people using sites won’t really know the difference between a like and reaction, or which reactions don’t cout as likes etc. So I’d suggest we just leave it as it is. In these places, :heart: and like just includes likes and positive reactions, and excludes any reactions in the discourse reactions excluded from like admin setting.


Thanks for the answer! Yeah, I agree with you. But unfortunately :grin: I made lot of time to educate our Community what is the difference between :heart: and :heart_eyes: :hugs: :+1: and other reactions. So I have to do this step to rename it everywhere. I don’t use negative reactions so every reaction counts as like. There are lots of places e.g. documentation about trust levels, gamification and other… The like rate limit TL site settings and the related system modals if the user reach these limit now means reactions rate limit and also the topic list item :heart: icon and other notifications about likes should use for example the discourse-emojis icon. But this is only for me the case and I agree it isn’t necessary to change in core.


That’s good feedback… you are probably not alone here. What do you suggest we change it to?

Also, reactions is not in core discourse so the language we use has to also accommodate sites that don’t have reactions. I think for now we’ll keep it but eventually if reactions makes it into core discourse we can just replace all references to “like” to “reaction” and ignore that there might be some reactions that have been deemed to be negative and are excluded from counting as likes.