Discourse Policy

Summary: Confirm your users have seen or done something with reminders

:link: GitHub: https://github.com/discourse/discourse-policy
:arrow_right: Install: Follow the plugin installation guide.


Discourse policy shares much of its DNA with polls, it has the goal of ensuring members of a group accept certain policies by clicking a button.

It has some specific features that set it apart from polls:

  1. It must apply to a group (the group must not exceed 200 users)

  2. It can optionally nag members of a group either weekly or daily to click accept on a policy

  3. The UX makes it very easy to see who accepted and who did not accept a policy.



Before clicking accept

After clicking “grey” person on top right

After clicking accept

Creating a policy

Discourse policy registers a custom [policy] BBCode element. Which means you need to write this block of code in your post where you want to show this policy.

[policy group=founders reminder=daily]
I accept this policy will annoy me daily until I click accept

In this case the policy applies to the founders group and a reminder is sent daily to all users that did not accept the policy.

Site settings

policy_enabled : is the discourse policy plugin enabled on the site.

policy_max_group_size : only allow policies on groups smaller or equal to this size (default 200)

policy_restrict_to_staff_posts: policies may only appear on staff posts

BBCode attributes

The [policy] element can accept the following attributes.

  • group: the group name that policy will apply to required
  • version: the version number of the policy, bump number up to require all users re-accept the policy
  • reminder: remind users of the group to accept policy (weekly or daily), optional, default off
  • accept: text used for accept button, default is “Accept Policy”
  • revoke: text used for revoke button, default is “Revoke Policy”
  • renew: number of days or text describing period (monthly, quarterly or yearly) after which a user needs to re-accept policy
  • renew-start: the first date renewals will start at Eg: 17-10-2017, useful if you want to set the renewal cadence so it happens every half-year (Jan,June)

Usage examples

Basic policy:

[policy group="team" reminder="daily" accept="Accept" revoke="Ignore" version="1"]
I have read, understand and acknowledge this policy.

Bumping the revision number, to require that everyone reads the update:

[policy group="team" reminder="daily" accept="Accept" revoke="Ignore" version="2"]
I have read, understand and acknowledge this policy. (Last updated [date=2020-04-23 timezone="America/Los_Angeles"])

Periodic auditing task:

[policy group="audit_committee" reminder="weekly" renew="90" renew-start="01-07-2019" version="1" accept="Assignment Complete"] 
I have ensured that someone is assigned to this quarterly audit task.



  • Optional immediate reminder for new policies
  • Possibly allow certain groups to apply policies (expanding on staff)

Why is there a 200 users limit per group? Any tips how to do this for thousands of users?


It looks like you can lift that limit via the plugin settings


There was discussion in this topic but “replies on this topic are automatically deleted after a month” (I have no idea why that’s a good idea, but that’s for another topic).

The reason is the UI isn’t designed to display that many acceptor avatars. We have 1500 users who have accepted this policy and many avatars don’t show up.



Thanks. Hmm, yeah, why are posts auto deleted? Sounds like valuable information is being lost. :confused:

I am excited for the policy plugin because it’s when groups are really large that I need a way to track who’s accepted in an efficient way. This UI element limit runs counter to the need this plug-in could fill.

What could work better?


  • Have a goal tracker with % of people accepted prominently featured
1 Like

Posts belong in dedicated topics, one topic covering 1000 different things is just too hard to reason about

1 Like

Personally I’d prefer if they were archived - perhaps moved to an allied Topic in a subcategory with a much lower search priority.

Now auto-move posts. That should be a feature request (especially for meta.discourse.org!)


Created a dedicated topic Improving Discourse Policy for large groups. Please continue the discussion there.

1 Like

This was my first thought as well. Should be auto move, not auto delete. Auto delete is deleting valuable information.