Skip to main content
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

SettingDescription
opennotes_enabledMaster switch. No posts are sent to the server while this is off.
opennotes_server_urlBase 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_keyService 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.

Moderation behavior

SettingDefaultDescription
opennotes_auto_hide_on_consensusfalseHide 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_requiredtrueRequire a staff member to confirm before automated actions take effect.
opennotes_route_flags_to_communitytrueForward user flags on monitored posts to Open Notes for community review, in addition to the normal staff flag queue.

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.