Skip to content
enafeedback
Alerts and notifications

Webhooks

Set up a webhook that sends ticket routing and status-change events to your own system as HMAC-SHA256 signed JSON, and verify the signature.

Last updated:

A webhook sends an automatic HTTP request to an address you choose whenever a ticket in EnaFeedback is routed or changes status. Your own work-order system, status board or internal app hears about the change straight away.

This article covers setting up the webhook, the events it sends, and how to verify with the signature that a request really came from EnaFeedback.

Required role

The webhook setting lives under System settings → Integrations and only the Owner role can change it.

Events sent

Two business events are sent today:

EventWhen
alert.system.ticket.routedA ticket is routed to one or more resolution teams
alert.system.ticket.status_changedA ticket's status changes (New, In progress, Closed)

There is also a system.test event you can send from the settings page.

Payload

The webhook payload is minimal and mainly carries IDs and status. Integrations that need the full ticket content should treat it as a trigger.

Delivery behavior

  • There is one webhook URL per organization.
  • Each request is a POST with a JSON body.
  • Each event is sent in a single attempt; failed requests are not retried.
  • Every request carries an Idempotency-Key header. Store it so you never process the same event twice.
  • If you set a signing secret, the HMAC-SHA256 signature of the body is sent in the X-Ena-Signature header.
  • The target URL passes a safety check that blocks requests to internal network addresses (SSRF protection).
  • There are no per-event subscriptions; once a URL is set, all of the events above are sent.

Set up the webhook

Prepare your endpoint

Expose a POST endpoint on your system that is reachable from the internet and uses HTTPS.

Open Integrations

Go to System → System settings → Integrations and choose the custom webhook provider for the webhook channel.

Enter the URL and signing secret

Enter your endpoint URL. Choose a strong, random signing secret and store the same value securely on the receiving side.

Send a test event

Send the test event from the settings page. Check that system.test arrives at your endpoint and that the signature verifies.

The ENA Gateway does not send webhooks

The webhook channel is not enabled on the ENA Gateway. To receive webhooks, you must set your own URL.

Verify the signature

The signature is the HMAC-SHA256 of the raw request body, computed with your signing secret. Use the body exactly as received, without parsing and re-serializing the JSON, and compare in constant time.

The examples below assume the signature is sent as a hex string. Check the header format on the test event before you go live.

import crypto from 'node:crypto';
import express from 'express';

const app = express();
const SECRET = process.env.ENA_WEBHOOK_SECRET;

app.post('/ena-webhook', express.raw({ type: 'application/json' }), (req, res) => {
  const received = req.get('X-Ena-Signature') ?? '';
  const expected = crypto.createHmac('sha256', SECRET).update(req.body).digest('hex');

  const ok =
    received.length === expected.length &&
    crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected));
  if (!ok) return res.status(401).end();

  const idempotencyKey = req.get('Idempotency-Key');
  // Skip the event if idempotencyKey was already processed.
  const event = JSON.parse(req.body.toString('utf8'));
  // Handle the event…
  res.status(200).end();
});

Tips

  • With no retries, keep your endpoint fast: store the request, return 200 at once, and do heavy work in the background.
  • If an event is ever missed, check the ticket's current status in the admin panel.
  • When you rotate the signing secret, update the receiving side at the same time.

Limits

  • There is no public REST API and no API keys; the webhook is the only outbound integration point.
  • There are no ready-made connectors for n8n, Make or Zapier.
  • There are no per-event subscriptions and no retries.

Can't find what you need?

Our support team can help with anything from setup to reporting.

support@enainnovation.com · 0850 308 45 91