TestKase
TestKase
|Docs
Test ManagementAutomation

Webhook Integration Guide

Set up real-time notifications to keep your team informed about test activities across Slack, Discord, Teams, Google Chat, or any custom endpoint.

Overview

TestKase webhook notifications deliver real-time updates about your testing activities directly to your team's communication channels. When events occur -- like a test case being created, a test cycle completing, or a bulk execution finishing -- TestKase sends a formatted notification to the webhook URL you configure.

Real-time delivery

Notifications sent instantly when events occur

5 platforms supported

Slack, Discord, Teams, Google Chat & Custom

9 event types

Cover test cases, cycles, plans & executions

Auto-retries

Up to 4 retries with exponential backoff

Prerequisites

Webhook notifications are available on every plan, including Always Free.

Before setting up webhook notifications, make sure you have:

  1. A TestKase account with an active project
  2. Admin or project-level permissions to manage notification integrations
  3. A webhook URL from your target platform (see setup guides below)

Platform Setup Guides

Follow the guide for your platform to obtain a webhook URL. TestKase automatically formats notifications for each platform.

SlackSlack

  1. Go to api.slack.com/apps and click Create New App -> From scratch.
  2. Name your app (e.g. "TestKase Notifications") and select your workspace.
  3. Navigate to Incoming Webhooks in the sidebar and toggle it On.
  4. Click Add New Webhook to Workspace, select the target channel, and authorize.
  5. Copy the generated Webhook URL.

Your Slack webhook URL will look like: https://hooks.slack.com/services/T00000/B00000/XXXXXXXX

DiscordDiscord

  1. Open Discord and navigate to your target channel.
  2. Click the gear icon (Edit Channel) -> Integrations -> Webhooks.
  3. Click New Webhook, give it a name (e.g. "TestKase"), and optionally set an avatar.
  4. Click Copy Webhook URL.

Your Discord webhook URL will look like: https://discord.com/api/webhooks/000000/XXXXXXXX

TeamsMicrosoft Teams

  1. In Microsoft Teams, navigate to the target channel.
  2. Click the ... menu -> Connectors (or Workflows in new Teams).
  3. Search for Incoming Webhook and click Configure.
  4. Give the webhook a name and optionally upload an icon, then click Create.
  5. Copy the generated Webhook URL.

Your Teams webhook URL will look like: https://outlook.office.com/webhook/... or https://your-org.webhook.office.com/...

Google ChatGoogle Chat

  1. Open the Google Chat space where you want notifications.
  2. Click the space name at the top -> Apps & integrations.
  3. Click Webhooks -> Add webhook.
  4. Enter a name (e.g. "TestKase") and optionally set an avatar URL, then click Save.
  5. Copy the generated Webhook URL.

Your Google Chat webhook URL will look like: https://chat.googleapis.com/v1/spaces/XXXXX/messages?key=...&token=...

Custom Webhook

You can send notifications to any HTTPS endpoint that accepts POST requests with a JSON body. This is useful for integrating with monitoring tools, custom dashboards, or internal systems.

TestKase sends a JSON payload with three top-level keys — event, timestamp and data. There is no top-level project object; the project fields live inside data. For test_case.created:

{
  "event": "test_case.created",
  "timestamp": "2026-03-01T12:00:00Z",
  "data": {
    "project_id": "PRJ-123",
    "project_name": "My Project",
    "testcase_id": "TEST-456",
    "title": "Login page validation",
    "testcase_url": "https://www.testkase.com/PRJ-123/testcases/TEST-456"
  }
}

The contents of data differ per event. test_execution.completed, for example, carries cycle and roll-up fields instead:

{
  "event": "test_execution.completed",
  "timestamp": "2026-03-01T12:00:00Z",
  "data": {
    "project_id": "PRJ-123",
    "project_name": "My Project",
    "cycle_id": "TCYCLE-5",
    "cycle_title": "Sprint 14 Regression",
    "cycle_url": "https://www.testkase.com/PRJ-123/testcycles/TCYCLE-5",
    "total": 42,
    "succeeded": 38,
    "failed": 4,
    "summary": { "total": 42, "pass": 38, "fail": 4, "blocked": 0, "not_executed": 0 }
  }
}

Write your handler to switch on event and read data defensively rather than assuming a fixed shape.

Deliveries are sent with Content-Type: application/json and no signature header — there is no HMAC or shared-secret header to verify. Treat the payload as unauthenticated: put an unguessable path segment or query token in the webhook URL itself, and do not act on the payload without re-checking against the TestKase API.

Your endpoint must respond with a 2xx status code within 10 seconds, or the delivery will be marked as failed and retried.

Configure in TestKase

Once you have your webhook URL, follow these steps to connect it in TestKase:

Connect a New Webhook

  1. Log in to TestKase and open your project dashboard.
  2. Open the project's Settings, then select the Notification Integration tab.
  3. Click Connect on the platform card you want to set up (Slack, Discord, Teams, Google Chat, or Custom).
  4. Enter a name for the integration (e.g. "#engineering-alerts").
  5. Paste the webhook URL you copied from your platform.
  6. Select the events you want to be notified about.
  7. Click Save. TestKase will validate the URL and create the integration.

Edit an Existing Integration

Click the Edit button on any connected integration card to update the name, URL, or subscribed events. Changes take effect immediately.

Reset / Disconnect

To disconnect an integration, click the Reset button on the integration card. This will stop all notifications to that webhook. You can reconnect at any time.

Events Reference

TestKase supports the following webhook events. You can subscribe to any combination when configuring your integration.

EventDescription
test_case.createdNew test case created in the project
test_case.deletedA test case was deleted from the project
test_cycle.createdNew test cycle created
test_cycle.deletedA test cycle was deleted
test_cycle.completedAll executions in a test cycle have finished
test_plan.createdNew test plan created
test_plan.deletedA test plan was deleted
test_plan.completedA test plan was marked as complete
test_execution.completedA bulk execution run has finished

Delivery & Retries

TestKase tracks the delivery status of every notification:

StatusMeaning
PendingNotification is queued for delivery
DeliveredSuccessfully delivered (received 2xx response)
FailedDelivery attempt failed, will be retried
ExhaustedAll retry attempts have been used
CancelledDelivery was cancelled (e.g. integration was reset)

Retry Schedule

When a delivery fails, TestKase retries it up to 4 times with exponential backoff — 5 delivery attempts in total, spanning about 2 hours 36 minutes:

AttemptDelay after previous attempt
Initial delivery—
Retry 11 min
Retry 25 min
Retry 330 min
Retry 42 hr

After the 4th retry fails, the delivery is marked Exhausted and is not attempted again.

Each delivery attempt has a 10-second timeout. If your endpoint does not respond within 10 seconds, the attempt is marked as failed.

What counts as a failed delivery

  • Any response outside 2xx.
  • No response within 10 seconds.
  • A redirect. TestKase does not follow 301/302 responses — a redirect is treated as a failed delivery. Configure the final URL, not one that redirects to it.
  • A webhook URL that no longer resolves to a public address. The URL is re-checked on every delivery, not only when you save it, so a hostname later pointed at a private IP starts failing.

Only the HTTP status code your endpoint returned is recorded. The response body is deliberately not stored or shown, so put anything you need to debug into your own logs.

Delivery history retention

Delivery records — including their status, attempt count and error — are kept for 30 days and then deleted automatically. Older delivery history cannot be recovered.

Troubleshooting

Common questions and solutions for webhook integration issues:

▶I'm not receiving any notifications

Check these common causes:

  • Verify the webhook URL is correct and the integration is connected (not reset).
  • Make sure you've subscribed to the correct events.
  • Check if the platform channel still exists and hasn't been archived.
  • Look at the integration card in TestKase for any error indicators.
▶I see an 'HTTPS required' error

TestKase requires all webhook URLs to use HTTPS for security. Plain HTTP URLs (http://) are not accepted. If you're testing locally, use a tunneling service like ngrok to get an HTTPS URL.

▶My URL is being blocked (SSRF protection)

TestKase blocks webhook URLs that resolve to private/internal IP addresses (e.g. 127.0.0.1, 10.x.x.x, 192.168.x.x) to prevent SSRF attacks. Use a publicly-accessible URL for your webhook endpoint.

▶Notifications stopped after multiple failures

After 5 consecutive failed delivery attempts (the initial delivery plus 4 retries), the notification status becomes "exhausted" and no further retries are attempted for that specific notification. New events will still trigger new delivery attempts. If your endpoint was temporarily down, notifications will resume automatically for new events once it's back online.

▶How can I test without triggering real events?

Create a test project and perform actions like creating a test case or test cycle. These will trigger real notifications to your webhook, letting you verify the setup works end-to-end.

▶What format are notifications sent in for each platform?

TestKase automatically formats notifications for each platform:

  • Slack -- Block Kit format with rich text sections
  • Discord -- Embed format with colored sidebars
  • Teams -- Adaptive Card format
  • Google Chat -- Card v2 format
  • Custom -- Raw JSON payload (see example above)