DSA Content Moderation Reporting + Statements of Reasons Requirements

AI-generated summary

Jay-C raised concerns about meeting new EU Digital Services Act (DSA) requirements, specifically the standardized Transparency Report and Statements of Reasons (SOR). He noted that Discourse currently lacks the ability to record structured data alongside moderation decisions, such as custom suspension reasons, contractual bases, and information sources. Using free-text fields was deemed unsustainable for generating the required structured data.

HAWK acknowledged the new reporting standards and confirmed that Discourse is working on adding the necessary data fields for machine-readable reports and SOR database submissions. Jay-C later reported that while new DSA features appeared in the Experimental settings, the community rules were not populating the moderation options when suspending users via their profile.

awesomerobot clarified that the DSA modal appears when acting on a flag, not directly from the user profile. Jay-C tested the flag workflow and found it confusing, noting that:

  • The “Ground” field in the admin schema maps to the Community Rule title, which felt unintuitive.
  • Neither the Ground nor the Explanation was visible to the end-user in notifications, failing SOR transparency requirements.
  • The purpose of the “Explanation” field was unclear.

tgxworld responded to the feedback, stating that including the ground and explanation in user-facing moderation notices is a known gap currently being addressed. He clarified that the “Explanation” field is specifically required by the transparency database to justify why content violates terms and conditions, distinct from the facts provided to the user. The thread highlights the ongoing development to align Discourse’s moderation tools with DSA compliance standards.

Hello,

We’re currently in the trenches of DSA compliance. Part of this involves looking at our use of Discourse, as our discussion board qualifies as an “online platform” under the DSA.

As you may know, there is now a standardised Content Moderation Transparency Report, which removes any flexibility we had previously. An additional requirement on top of this is to submit applicable Statements of Reasons to the DSA Transparency Database, and we’ve run into some limitations with the moderation abilities in Discourse.

In particular, we need to be able to consistently record structured information alongside moderation decisions:

  • Expanded, custom suspension reasons, which we can align with the DSA’s standardised taxonomy. It’s currently not possible to add additional suspension reasons, rather than renaming the existing predefined reasons
  • Whether the decision relates to illegal content or a Terms & Conditions violation
  • The contractual basis for the decision
  • The information source (user report, own-initiative moderation, Trusted Flagger, etc.)

It doesn’t seem possible to configure custom dropdowns within the suspension UI to capture this information, but please correct me if I’m mistaken. We can provide additional information through the “Email Message” field, but this doesn’t feel like a viable long-term solution, as it puts a lot of responsibility on our moderators and doesn’t give us the structured data we yearn for.

I’d be really interested to know how other EU customers (and Discourse themselves?) are approaching the standardised DSA reporting + Statement of Reasons requirements, and whether any additional functionality in this area is planned. We really don’t want to move away from Discourse, so I hope we can work something out - any advice appreciated!

Hey—thanks for your questions. I admit that I was not aware of the new standardised reporting—we are still using Digital Services Act 2025 (DSA) Transparency Report | Discourse - Civilized Discussion.

I did some digging and it does look like we are in scope to use this horrific template. Let me do some due diligence with our lawyer and I’ll come back to you.

Annex_I__Transparency_reports_templates_ME0vKI0A1K5vzNvP3VciJ7y26R4_109690.xlsx (85.3 KB)

Thanks for your reply Hawk, and apologies for the bombshell RE: the standardised template - we’re all in this together! :saluting_face:

No stress, I appreciate the heads up!

Can you share a link to your current public DSA report?

I hope you don’t mind, but I’d prefer not to publicly identify my employer from this account. We haven’t yet published a report using the new standardised template, which is what prompted this. :slight_smile:

That’s fine, it just makes it a bit harder to help because I don’t know where you are starting from. Theoretically you have a well developed report already (like ours) so I wondered specifically what gaps you have outside of the submission of reasons.

Update for you @Jay-C—we are spec’ing out the work required to add additional data fields for the machine readable report and for submissions to the SOR database. We will update in due course.

Fab news! Thank you, Hawk!

Hey @HAWK ! I notice the new DSA features in Experimental, which is super cool! I tried adding some Community Rules, making sure the ‘DSA reporting enabled’ box was checked, but the Community Rules don’t seem to be working - none of the custom options are appearing within the moderation list of reasons. I assume this is known and due to its Experimental nature, but wanted to let you know. :slight_smile:

So when you’re acting on a flag to delete content or a user, you should see a modal like this:

Are you making it this far? Are you seeing no options at all under the Community rule dropdown?

Oh, I was trying to suspend a test account via its user profile. Perhaps we could have the same functionality there? :slight_smile:

Alright, I DMed myself from an alt account, Flagged it, and handled it as a moderator. Admittedly I do find the workflow a bit confusing as it stands.

  • The ‘Ground’ entered in /admin/schema/dsa_community_rules appears to become the title of the ‘Community Rule’, which doesn’t feel intuitive
  • The ‘Ground’ entered in /admin/schema/dsa_community_rules is then shown under the ‘Community Rule’ dropdown in the DSA Classification screen shown above, but I’m not sure this is the best place for it
  • Neither Ground or Explanation appears to be shown to the end-user for Statement of Reasons purposes (nothing in my alt account inbox or DMs referencing this)
  • I’m not sure what the relevance of ‘Explanation’ in /admin/schema/dsa_community_rules is at this time, or where it’s shown

Thank you for testing it out :+1:

Curious what do you think would be a better place to show this?

We’re aware of this gap and are working to include the ground and explanation in moderation notices that we send out.

The explanation is used when submitting statement of records to the transparency database which requires a field to “to explain as to why the information is considered incompatible with a specific section in the service’s terms and conditions. The explanation does not have to repeat the facts and circumstances but can refer to those”