Webhooks
Webhooks let you connect Tenaxis to external tools and systems. When something important happens in Tenaxis (a site is provisioned, a request is approved, a risk alert fires), Tenaxis can automatically send a notification to a URL you specify - enabling you to integrate with Slack, Microsoft Teams, ServiceNow, Jira, Power Automate, Zapier, or any other system that accepts webhooks.
What Is a Webhook?
A webhook is an automatic notification that Tenaxis sends to another system when a specific event occurs. It works like this:
- You tell Tenaxis: "When event X happens, send a message to this URL"
- Event X happens in Tenaxis
- Tenaxis sends an HTTP POST request with JSON data to your URL
- Your system (Slack, ServiceNow, your custom script, etc.) receives the data and takes action
You don't have to poll Tenaxis for updates - Tenaxis pushes information to you the moment events happen.
Managing Webhooks
Go to Settings → Webhooks to see all webhooks registered in your workspace.
Registering a New Webhook
- Click Add Webhook
- Fill in:
- URL - The endpoint that will receive the notification (must be HTTPS)
- Events - Which events should trigger this webhook (see below)
- Active - Leave checked to start receiving events immediately
- Click Save
Tenaxis generates a secret key when the webhook is created. Copy and save this key immediately - it's only shown once. You'll use it to verify that notifications really came from Tenaxis.
Available Events
Choose which events trigger each webhook. You can subscribe to multiple events per webhook.
| Event | When it fires |
|---|---|
site.provisioned | A new SharePoint site has been created and is ready |
site.deleted | A site has been archived/deleted in Tenaxis |
request.submitted | An end-user has submitted a new site request |
request.approved | An admin has approved a site request |
request.rejected | An admin has rejected a site request |
risk.high | A site's risk score has exceeded your configured threshold |
lifecycle.escalated | A site entered ESCALATED status (renewal window expired) |
The Webhook Payload
When an event fires, Tenaxis sends a JSON POST to your URL with this structure:
{
"event": "site.provisioned",
"timestamp": "2026-05-31T14:22:00Z",
"tenantId": "your-tenant-id",
"data": {
"siteId": "abc123",
"siteName": "Marketing Project 2026",
"siteUrl": "https://yourcompany.sharepoint.com/sites/marketing-project-2026",
"createdBy": "jane.smith@yourcompany.com"
}
}
The data object contains details relevant to the specific event type.
Verifying Webhook Authenticity
Every webhook request from Tenaxis includes a signature in the X-Tenaxis-Signature HTTP header. This allows your receiving endpoint to verify the message actually came from Tenaxis (and wasn't forged by someone else).
The signature is an HMAC-SHA256 hash of the request body, signed with your webhook's secret key.
To verify in your code:
- Get the
X-Tenaxis-Signatureheader value - Compute HMAC-SHA256 of the raw request body using your webhook secret
- Compare the result to the header value
- If they match - the request is authentic
Example verification (Node.js):
const crypto = require('crypto');
function verifyWebhook(body, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
Testing a Webhook
Before relying on a webhook in production, test it:
- Go to Settings → Webhooks
- Click on the webhook you want to test
- Click Send Test
- Tenaxis sends a test payload to your URL
- Check your endpoint (Slack channel, ServiceNow, etc.) to confirm it was received
Webhook Delivery Logs
Tenaxis keeps a log of every webhook delivery attempt, including successes and failures.
To view the delivery log:
- Go to Settings → Webhooks
- Click on a webhook
- Click Delivery Log
The log shows:
| Column | What it means |
|---|---|
| Event | Which event triggered this delivery |
| Timestamp | When the delivery was attempted |
| Status Code | The HTTP response from your endpoint (200 = success) |
| Success | Whether the delivery was confirmed successful |
| Error | If failed, what went wrong |
Retrying a Failed Delivery
If a delivery failed (e.g., your endpoint was temporarily down), you can retry it:
- Find the failed delivery in the log
- Click Retry
- Tenaxis resends the original payload to your endpoint
Common Integration Examples
Slack / Microsoft Teams Alert Channel
Use case: Alert your IT team in Slack when a site is flagged as high-risk or a request is submitted.
- Set up an Incoming Webhook in your Slack workspace (or Teams channel)
- Copy the Webhook URL Slack/Teams provides
- In Tenaxis, add a new webhook with that URL
- Subscribe to events:
risk.high,request.submitted,lifecycle.escalated
Now your team gets a Slack/Teams message whenever one of these events happens.
ServiceNow / Topdesk Ticket Creation
Use case: Automatically create an IT ticket when a site is provisioned or when a high-risk site is detected.
- Your ITSM tool should have an inbound webhook or API endpoint
- Register that endpoint in Tenaxis as a webhook
- Subscribe to
site.provisionedand/orrisk.high - Build an automation in your ITSM tool to parse the Tenaxis payload and create a ticket
Power Automate / Zapier
Use case: Connect Tenaxis events to any of hundreds of apps without writing code.
- In Power Automate or Zapier, create a new "When a webhook is received" trigger
- Copy the generated URL
- Register it in Tenaxis as a webhook
- Add actions in Power Automate/Zapier (e.g., create a Planner task, send an email, log to SharePoint list)
Editing and Deleting Webhooks
Edit a Webhook
- Go to Settings → Webhooks
- Click on the webhook
- Click Edit
- Update the URL, events, or active status
- Click Save
Deactivate a Webhook
Instead of deleting a webhook you might need later, deactivate it:
- Click Edit
- Toggle Active to OFF
- Click Save
The webhook remains in your list but won't receive any events until reactivated.
Delete a Webhook
- Click on the webhook
- Click Delete
- Confirm
The webhook is permanently removed along with its delivery history.
Troubleshooting
Deliveries are failing with status 401 or 403: Your endpoint is rejecting the request due to authentication. Check if your endpoint requires an API key or authentication header - Tenaxis doesn't add these automatically. Consider using Power Automate or Zapier as an intermediary.
Deliveries are failing with status 500: Your endpoint is having an internal error. Check the logs on your receiving system.
No deliveries at all: Check that the webhook is marked as Active and that you've selected the right events.
Deliveries succeed but data looks wrong:
Check the specific event field in the payload to make sure your code is handling the right event type.