Webhooks · n8n

Connect n8n to Management OS.

About ten minutes. n8n is the self-hosted open-source automation platform. If your team runs n8n internally, this is the lightest way to wire any of its 400+ integrations into Management OS.

Step 1 — Get your Management OS webhook URL

  1. Sign in to Management OS → Settings → Webhooks
  2. Click New webhook key, label it for the source app, click Create
  3. Copy the URL

Step 2 — Open your n8n workflow editor

  1. Sign in to your n8n instance (your self-hosted URL or n8n Cloud)
  2. Click Workflows in the left nav, then New workflow
  3. Add a trigger node for the source app you want events from (n8n has hundreds — search the right sidebar)
  4. Configure and test the trigger

Step 3 — Add the HTTP Request node

  1. On the canvas, click the small + next to your trigger node's output
  2. Search for and add the HTTP Request node

Step 4 — Configure the HTTP Request

  1. Method: POST
  2. URL: paste your Management OS webhook URL
  3. Send Headers: toggle ON. Add header:
    • Name: Content-Type
    • Value: application/json
  4. Send Body: toggle ON
  5. Body Content Type: JSON
  6. Specify Body: Using JSON (Fixed)
  7. JSON: paste this and substitute n8n expressions (use n8n's expression editor — those {{ $json.field }} style references):
    {
      "source": "my-internal-tool",
      "event_type": "{{ $json.event_name }}",
      "external_id": "{{ $json.id }}",
      "subject_email": "{{ $json.email }}",
      "subject_account": "{{ $json.account }}",
      "summary": "{{ $json.summary }}"
    }
  8. Save the workflow

Step 5 — Test and activate

  1. Click Execute Workflow (bottom of the canvas)
  2. Trigger an event in your source app
  3. Click the HTTP Request node — you should see a 200 response with "status": "stored"
  4. If success, toggle Active (top right of the canvas) to put the workflow into production

Troubleshooting

401 invalid_token: Webhook URL is wrong. Re-copy from Management OS Settings.

Body shows as a string instead of JSON: Make sure Body Content Type is set to JSON, not "Form-data" or "Raw".

Expressions render as literal text: You need to wrap n8n expressions in double curly braces and click the n8n expression-mode toggle. The expression editor has its own help if expressions don't evaluate.

Still stuck: support@mgmt-os.ai