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
- Create a webhook URL in n8n (it gives you a URL to receive data)
- Add a webhook endpoint in OnboardingHub's Integrations > Webhooks settings
- Select the events you want to trigger your workflow
- Build your automation using the incoming event data
Step 1: Create a workflow with a Webhook trigger
- Open your n8n instance and create a new workflow
- Add a Webhook node as the trigger
- Set the HTTP method to
POST - Copy the Production URL from the webhook node (click the "Production URL" tab)
Step 2: Register the webhook in OnboardingHub
- In your workspace, go to Integrations > Webhooks
- Click Add Endpoint
- Paste the n8n webhook URL
- Select the events you want to trigger your workflow
- Save the endpoint
Step 3: Activate and test
- Activate the workflow in n8n (toggle the switch in the top right)
- In OnboardingHub, click Test on the endpoint to send a test event
- 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.completedvsces.submitted) - HTTP Request: Call an external API
- Slack / Email / Sheets: Send notifications or log data
Example: CES follow-up workflow
- Webhook node receives
ces.submittedevents - IF node checks
{{ $json.data.ces_score < 3 }} - Slack node sends an alert: "Low CES score from {{ $json.data.contact.email }} on {{ $json.data.guide.name }}"
- Asana node creates a follow-up task assigned to the customer success team
Example: Enrollment progress tracker
- Webhook node receives
enrollment.created,enrollment.started, andenrollment.completedevents - Switch node routes by
{{ $json.event }}value - 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
- Webhooks -- event types, payload format, and signature verification
- Zapier integration -- connect OnboardingHub to Zapier