n8n Integration

Connect OnboardingHub to n8n using webhooks. Build powerful self-hosted automation workflows triggered by enrollment events, completions, feedback scores, and more.

No API keys or OAuth setup required -- just point a webhook at your n8n instance and start building.

How it works

  1. Create a webhook URL in n8n (it gives you a URL to receive data)
  2. Add a webhook endpoint in OnboardingHub's Integrations > Webhooks settings
  3. Select the events you want to trigger your workflow
  4. Build your automation using the incoming event data

Step 1: Create a workflow with a Webhook trigger

  1. Open your n8n instance and create a new workflow
  2. Add a Webhook node as the trigger
  3. Set the HTTP method to POST
  4. Copy the Production URL from the webhook node (click the "Production URL" tab)

Step 2: Register the webhook in OnboardingHub

  1. In your workspace, go to Integrations > Webhooks
  2. Click Add Endpoint
  3. Paste the n8n webhook URL
  4. Select the events you want to trigger your workflow
  5. Save the endpoint

Step 3: Activate and test

  1. Activate the workflow in n8n (toggle the switch in the top right)
  2. In OnboardingHub, click Test on the endpoint to send a test event
  3. Check the n8n execution log to confirm the data arrived

Step 4: Build your automation

Add nodes to process the webhook data. For example:

  • IF node: Route based on event type (enrollment.completed vs ces.submitted)
  • HTTP Request: Call an external API
  • Slack / Email / Sheets: Send notifications or log data

Example: CES follow-up workflow

  1. Webhook node receives ces.submitted events
  2. IF node checks {{ $json.data.ces_score < 3 }}
  3. Slack node sends an alert: "Low CES score from {{ $json.data.contact.email }} on {{ $json.data.guide.name }}"
  4. Asana node creates a follow-up task assigned to the customer success team

Example: Enrollment progress tracker

  1. Webhook node receives enrollment.created, enrollment.started, and enrollment.completed events
  2. Switch node routes by {{ $json.event }} value
  3. Google Sheets node appends a row with contact name, guide name, status, and timestamp

Automation ideas

Trigger event Automation
enrollment.created Send a welcome email or Slack DM to the new enrollee
enrollment.completed Notify the customer success team, update CRM status
enrollment.expired Send a reminder email, re-enroll the contact
ces.submitted Alert on low scores, log all scores to a spreadsheet
file.uploaded Copy the file metadata to a project management tool
step.completed Update a progress tracker in Google Sheets

Verifying webhooks (optional)

For added security, you can verify the HMAC signature on incoming webhooks in n8n using a Function node:

const crypto = require("crypto");

const secret = "your_signing_secret";
const payload = JSON.stringify($input.first().json);
const signature = $input.first().headers["x-onboardinghub-signature"];
const expected =
  "sha256=" + crypto.createHmac("sha256", secret).update(payload).digest("hex");

if (signature !== expected) {
  throw new Error("Invalid webhook signature");
}

return $input.all();

See Verifying signatures in the webhooks documentation for examples in other languages.

Next steps