In Flashduty On-call
You can get the push URL in either of the following ways.Use a dedicated integration
- In the Flashduty console, select Channels and open a channel
- Select Settings → Integrations → Dedicated integrations, then click Add integration
- Select Tactical RMM and click Save
- Open the generated integration card and copy the Push URL
Use a shared integration
- In the Flashduty console, go to Integration Center → Alert Events
- Select Tactical RMM and enter an integration name
- Configure the default route and select a channel. You can add more rules under Routing after creation
- Click Save and copy the generated Push URL
Configure Tactical RMM
Create two webhooks, one for failure and one for recovery, then attach both to an alert template. Both webhooks use the Flashduty push URL, and the request bodies differ only instatus.
1
Create the failure webhook in Tactical RMM
Where: Tactical RMM › Settings › Global Settings › Web Hooks › Add Web HookUse the Web Hooks tab, not URL Actions.Request Body:
Request Headers:
2
Create the recovery webhook in Tactical RMM
Where: Tactical RMM › Settings › Global Settings › Web Hooks › Add Web Hook
Without the recovery webhook, Flashduty alerts do not recover automatically.
3
Attach the webhooks to an alert template in Tactical RMM
Where: Tactical RMM › Settings › Alerts Manager
Tactical RMM runs webhooks for Error alerts (such as an overdue agent) and Warning alerts by default. Info alerts are not sent unless you tick Informational Alerts under Receive notifications on in Settings › Global Settings › General.
4
Save and verify
Where: Tactical RMM › Settings › Global Settings › Web Hooks › Test
- On the webhook edit page, click Test with the target type set to None (no agent, site, or client). Flashduty creates an Info alert titled
Tactical RMM test notification. It does not recover on its own, so close it manually after verifying. The Tactical RMM documentation says{{alert.XXX}}variables are not available in test mode. If you select a target, the variables may be replaced with other values, and Flashduty rejects the request becausealert_typeis invalid. So Test only proves connectivity; verify with a real alert - Trigger a real alert (for example, stop a test agent) and confirm Flashduty receives an active alert
- After the alert recovers, confirm the matching Flashduty alert recovers
Event types
Alert key
Flashduty computes the Alert Key fromalert_id ({{alert.id}}, the number of the alert record in Tactical RMM). The failure and recovery webhooks render from the same record, so the number is the same. If the same subject fails again after recovery, Tactical RMM creates a new alert record, so it is a new alert in Flashduty. Changes to severity, message, or hostname do not change the Alert Key, and requests without alert_id are rejected.
Use one Flashduty integration per Tactical RMM instance. Alert numbers from different instances can collide.
Status and severity
When
status is resolved the alert recovers and keeps its last severity.
Labels
Troubleshooting
- Flashduty returns an invalid-parameter error: the message names the field. Common causes are a request body without
alert_id, or analert_typeother thanavailability,check,task, orcustom(for example, when a test target was selected on the Test button) - The alert does not recover: confirm the recovery webhook exists, is set as the Resolved Web Hook of the alert template, and sends
"status": "resolved". The action result is visible in the alert details in Tactical RMM - Flashduty receives nothing: confirm the alert template is applied to the agent and the alert severity is not filtered out by the Info and Warning notification switches
- The request body is not valid JSON: if
{{alert.message}}contains double quotes, the JSON that Tactical RMM renders is invalid and Flashduty rejects it. Remove themessageline from the template and Flashduty builds the title from the alert type and hostname - The test alert stays open: the Test button does not send a recovery, so close it manually