All plugin settings live at Admin > Settings > Plugins > Open Notes.
The plugin implements the public API contract — the
settings below map directly to the concepts described there. See
headers and auth for how authentication is carried
on each request, and scopes for how community server identity
is established.
Required settings
Connection
Content monitoring
| Setting | Description |
|---|
opennotes_enabled | Master switch. No posts are sent to the server while this is off. |
opennotes_server_url | Base URL of your Open Notes server, e.g. https://api.opennotes.ai. The plugin appends /api/public/v1/... to this value for every API call. |
opennotes_api_key | Service account API key. Sent as X-API-Key on every outbound request. |
The server URL must not include a trailing slash or a path prefix. The plugin constructs
paths like /api/public/v1/requests directly from the base URL.
| Setting | Description |
|---|
opennotes_monitored_categories | Comma-separated list of category slugs or IDs to monitor. Posts in other categories are not sent for classification. Leave blank to monitor all categories. |
Example:general,support,announcements
Nested categories use their full slug path:staff/internal,community/general
Moderation behavior
Automated actions
Review participation
| Setting | Default | Description |
|---|
opennotes_auto_hide_on_consensus | false | Hide posts automatically when community consensus says the moderation note is helpful (Tier 2 path). When false, consensus creates a staff task instead of acting directly. |
opennotes_staff_approval_required | true | Require a staff member to confirm before automated actions take effect. |
opennotes_route_flags_to_community | true | Forward user flags on monitored posts to Open Notes for community review, in addition to the normal staff flag queue. |
| Setting | Default | Description |
|---|
opennotes_reviewer_min_trust_level | 2 (Member) | Minimum Discourse trust level required to vote on moderation notes. |
Trust level reference:| Level | Label | Can vote? |
|---|
| TL0 | New | No |
| TL1 | Basic | No |
| TL2 | Member | Yes (default threshold) |
| TL3 | Regular | Yes |
| TL4 | Leader | Yes |
Per-category configuration
Each monitored category can override the global defaults:
- Auto-action threshold — how confident the AI must be before acting automatically (e.g., 0.90
for general discussion, 0.80 for announcements).
- Review group routing — which trust-level groups see review items from this category. Use
staff-only routing for sensitive categories and community-wide for general discussion.
- Label routing — map specific classification labels to different review groups.
Per-category settings are configured in the category admin panel under the Open Notes tab.
Webhooks and polling
After the plugin connects to the server, it registers a webhook endpoint. When community consensus
is reached, the server calls POST /opennotes/webhook on your Discourse instance to trigger the
agreed-upon action immediately.
As a fallback, Jobs::SyncScoringStatus polls /api/public/v1/requests every five minutes to
catch any missed webhook deliveries.
Make sure your Discourse instance is reachable from your Open Notes server on the webhook
endpoint. If you run behind a firewall, allow inbound requests from the Open Notes server IP
range.