We’re updating change-control records programmatically via the Trackwise API, but our webhook endpoint isn’t receiving notifications when status transitions occur. The webhook configuration appears correct in the admin console and works fine for manual status updates through the UI.
Here’s the API call we’re using:
HttpPost request = new HttpPost(baseUrl + "/api/changecontrol/" + recordId);
request.setHeader("Content-Type", "application/json");
request.setEntity(new StringEntity("{status:approved}"));
HttpResponse response = httpClient.execute(request);
The status updates successfully (confirmed in the audit trail), but the webhook event never fires. We need these notifications for downstream automation workflows. Has anyone encountered similar issues with API-triggered event publishing in Trackwise 10.0?
The issue is likely in how you’re setting the context flag. API updates need an explicit event publication flag. Try adding a header like X-Trigger-Events: true to your request. Also verify that your API service account has permissions to trigger webhook events - this is a separate permission from record update rights.
In our environment, we discovered that the webhook event subscription needs to explicitly include the API channel. Navigate to Admin > Integrations > Webhooks, edit your change-control webhook, and under ‘Event Channels’ make sure both ‘UI’ and ‘API’ are checked. This setting is separate from the event type configuration and is easy to overlook during initial setup.
I had this exact scenario recently and found the issue was multi-layered. The webhook wasn’t triggering because API updates in Trackwise 10.0 require explicit event context. You need to include an event trigger parameter in your API call and ensure your webhook is configured to listen for API-sourced events.
Here’s the corrected approach addressing all three focus areas:
Webhook Event Configuration:
In Admin > Integrations > Webhooks, edit your change-control webhook:
- Enable ‘API’ under Event Channels (not just ‘UI’)
- Set Event Filter to ‘All Sources’ or explicitly include ‘Programmatic’
- Verify the status transition event is in the subscription list
API-Triggered Event Publishing:
Modify your API call to include the event trigger flag:
HttpPost request = new HttpPost(baseUrl + "/api/changecontrol/" + recordId);
request.setHeader("Content-Type", "application/json");
request.setHeader("X-Publish-Events", "true");
request.setEntity(new StringEntity("{status:approved,triggerWorkflow:true}"));
The X-Publish-Events header tells Trackwise to publish webhook events for this API call. The triggerWorkflow parameter in the JSON body ensures the status change goes through the normal workflow engine, which is what actually fires the webhooks.
Change-Control Audit Trail:
After implementing these changes, verify in the audit trail that:
- The status change shows ‘API (Events Enabled)’ as the source
- The workflow transition is logged (not just a direct field update)
- The webhook delivery appears in Admin > System > Webhook History
One additional gotcha: your API service account needs the ‘Trigger Integration Events’ permission in User Management. Without this, the X-Publish-Events header is silently ignored. After enabling this permission, our webhooks started firing immediately for all API-triggered status updates, and the audit trail properly reflected the complete event chain.
I’ve seen this before. Check your webhook event configuration - specifically look at the trigger conditions. By default, some webhook events are configured to fire only on ‘user-initiated’ actions, which excludes API calls. You might need to modify the event filter to include programmatic updates.