Skip to content

Freshservice

Freshservice’s Workflow Automator can trigger a webhook with a fully custom JSON body on incident events — a good fit since Freshservice has a native “Incident” concept, unlike a general support-ticket queue. The payload field itself only does flat placeholder substitution (no inline logic), but the Workflow Automator’s condition nodes do support real branching — so one workflow, with a condition on ticket priority/status, can route to different Trigger Webhook actions with different hardcoded severity/status values, instead of needing several separate top-level workflows.

See API Overview for authentication and finding your Account ID/Team ID.

  1. In Freshservice, go to Admin → Workflow Automator and create a new workflow scoped to Incidents.
  2. Set the trigger to the incident event you want to page on (e.g. incident created or updated).
  3. Add a condition node checking Priority (or Status), with a branch per value you care about (e.g. Urgent, High, Medium/Low).
  4. On each branch, add a separate Trigger Webhook action, using the custom/advanced request body mode (not the simplified field-picker mode) — same URL and header on every branch, only severity/status differ.
  5. Set the URL to https://api.opsfusion.cloud/v1/account/YOUR_ACCOUNT_ID/push/alert on each webhook action.
  6. Add a header to each: Authorization: YOUR_API_KEY.
  7. Enter the matching JSON body (below) on each branch’s webhook action.

Branch: Priority is Urgent

{
"teamId": YOUR_TEAM_ID,
"title": "{{ticket_subject}}",
"description": "{{ticket_description}}",
"severity": 1,
"status": 1,
"labels": {
"ticket_id": "{{ticket_id}}",
"priority": "{{ticket_priority}}"
}
}

Other branches: identical, with severity set to 2 (High) or 3 (Medium/Low) to match that branch’s condition. If you also want auto-resolve, add a second condition node on ticket status (Resolved/Closed) with its own webhook action per branch, status: 3.

This still can’t compute severity/status from a single formula the way a couple of the other integrations in this section can (Freshservice’s condition nodes route to different actions, they don’t let a payload field reference the branch result inline) — but keeping it to one workflow with multiple branches is simpler to maintain than one workflow per priority level.

OpsFusion fieldFreshservice source
teamIdHardcoded per webhook action
title{{ticket_subject}}
description{{ticket_description}}
severityHardcoded per branch, based on the condition node’s Priority match (Urgent → 1, High → 2, Medium/Low → 3)
statusHardcoded per branch, based on which trigger/condition it’s under (incident opened vs. resolved)
labels{{ticket_id}}, {{ticket_priority}}
  • Test button looks like it worked, but nothing shows up in OpsFusion: Freshservice’s built-in “test webhook” sends static sample data, not a real ticket — it only confirms the URL/headers are reachable, not that your placeholders resolve correctly. Trigger a real (or sandbox) incident to confirm end-to-end.
  • Wrong severity/status arrives, or nothing arrives at all: check the workflow’s execution log to see which condition branch actually fired — a common mistake is two branches with overlapping conditions (e.g. “Priority is High” and “Priority is not Low”), where the ticket matches both and only one webhook action runs.
  • Rate limiting: Freshservice webhooks are capped at 1000 calls/hour per account — high alert volume workflows should batch or filter before this limit becomes a problem.
  • Retries on failure: Freshservice automatically retries a failed webhook call up to 4 times (at roughly 3, 5, 9, and 17 minutes), with a 15-second timeout per attempt — a slow OpsFusion response won’t silently drop the alert, but it can arrive noticeably late.

For integration support: