Webhook

Send recording events to any HTTPS endpoint, with custom payloads, auth headers, and retry handling.

Webhook automations send HTTP requests with recording data to any endpoint when content is added to a folder. This enables custom integrations with internal tools, automation platforms like Zapier, and systems without native Screendesk integrations.


When to Use Webhooks

Webhooks are the most flexible automation type. Use them for:

  • Custom internal tools — Send data to your own applications

  • Automation platforms — Trigger workflows in Zapier, Make (Integromat), or n8n

  • Data warehouses — Stream data to analytics platforms

  • Incident management — Trigger PagerDuty or Opsgenie alerts

  • CRM systems — Update customer records automatically

  • Chat platforms — Send to Discord, Teams, or other chat tools

  • Logging systems — Forward events to Datadog, Sentry, or LogRocket

circle-info

Webhooks vs. Native Integrations

Use webhooks when:

  • No native integration exists for your tool

  • You need custom payload formats

  • You're building internal tools

  • You want maximum flexibility

Use native integrations (Slack, Linear, Jira) when:

  • They exist for your tool

  • You want easier setup

  • You need OAuth authentication

  • You want pre-built formatting


Setup

1

Open folder automations

  1. Navigate to your folder

  2. Click Settings (gear icon)

  3. Select Automations tab

  4. Click Add Automation

  5. Select Webhook

2

Configure webhook endpoint

Webhook URL (required): Enter the destination endpoint:

circle-exclamation

HTTP Method: Choose the request method:

  • POST (default) — Standard for webhooks

  • PUT — For update-style endpoints

  • PATCH — For partial updates

  • DELETE — For deletion workflows

Most webhooks use POST.

3

Add authentication headers

Click Add Headers to configure authentication.

Headers are sent as JSON:

Common authentication patterns:

Bearer Token:

API Key:

Basic Auth:

To generate Basic auth, base64 encode username:password.

Webhook Secret (for verification):

4

Configure payload (optional)

By default, Screendesk sends a complete payload with all recording data.

Default payload structure:

Custom payload:

Enable Custom Payload to define your own structure using template variables:

View all template variables →

5

Test the webhook

Click Send Test Webhook to verify your configuration:

  1. Screendesk sends a test request to your endpoint

  2. Check that your endpoint receives the request

  3. Review the response in the test results modal

  4. Verify authentication works

  5. Confirm payload format is correct

Test results show:

  • Success — HTTP 2xx status code received

  • ⚠️ Warning — Non-2xx status with response body

  • Failed — Timeout, connection error, or 4xx/5xx status

View the full request and response in the test results.

6

Save and activate

Once testing succeeds:

  1. Click Save to create the automation

  2. The automation is enabled by default

  3. View it in the folder's Automations tab

The webhook will now fire for every recording added to this folder.


Integration Examples

Zapier

Create workflows with 5000+ apps:

1

Create a Zap

  1. Go to zapier.comarrow-up-right and click Create Zap

  2. For the trigger, search for Webhooks by Zapier

  3. Choose Catch Hook as the trigger event

  4. Copy the provided webhook URL

2

Configure in Screendesk

  1. Create a webhook automation in your folder

  2. Paste the Zapier webhook URL

  3. Leave HTTP method as POST

  4. No headers needed

  5. Use default payload (Zapier will parse it)

3

Test and continue

  1. Click Send Test Webhook in Screendesk

  2. Return to Zapier and click Test trigger

  3. Zapier should detect the sample data

  4. Continue building your Zap with the recording data


Slack (via Webhook)

Post to Slack without OAuth:

Webhook URL: Get an incoming webhook URL from Slack:

  1. Create an app or select existing

  2. Enable Incoming Webhooks

  3. Add webhook to channel

  4. Copy the webhook URL

Custom Payload:

circle-info

Native Slack Integration

For a simpler setup with more features, use the native Slack integration instead. It provides OAuth authentication, channel selection, and richer formatting options.


PagerDuty

Trigger incidents from critical recordings:

Webhook URL:

Headers:

Custom Payload:

Get your integration key from PagerDuty → Services → Integrations → Events API V2.


Discord

Post to Discord channels:

Webhook URL: Get from Discord:

  1. Open channel settings

  2. Go to Integrations → Webhooks

  3. Create webhook

  4. Copy URL

Custom Payload:


Microsoft Teams

Post to Teams channels:

Webhook URL: Get from Teams:

  1. Open channel

  2. Click ⋯ (More options)

  3. Connectors → Incoming Webhook

  4. Configure and copy URL

Custom Payload:


Webhook Security

Verify webhook signatures

Screendesk signs all webhooks with HMAC-SHA256. Verify requests are legitimate:

Signature header:

Verification (Node.js):

Verification (Python):

circle-exclamation

Retry Policy

Failed webhooks are automatically retried with exponential backoff:

Attempt
Delay
Total Time

Initial

0s

1st retry

1 minute

1m

2nd retry

5 minutes

6m

3rd retry

30 minutes

36m

4th retry

2 hours

2h 36m

5th retry

12 hours

14h 36m

After 5 failed attempts, the webhook is marked as permanently failed.

Success criteria:

  • HTTP status code 2xx (200-299)

  • Response received within 30 seconds

Your endpoint should:

  • Respond with 2xx as quickly as possible

  • Process webhooks asynchronously if needed

  • Be idempotent (handle duplicate deliveries)

  • Return within 30 seconds


Troubleshooting

Connection errors

Symptom: "Failed to connect" or timeout errors

Solutions:

  • Verify URL is correct and publicly accessible

  • Ensure endpoint uses HTTPS (not HTTP)

  • Check firewall allows Screendesk IPs

  • Confirm endpoint responds within 30 seconds

  • Test endpoint with curl:


Authentication errors

Symptom: 401 Unauthorized or 403 Forbidden

Solutions:

  • Verify API keys or tokens are correct

  • Check header names match exactly (case-sensitive)

  • Ensure tokens haven't expired

  • Confirm permissions allow webhook access

  • Test with a tool like Postman first


Invalid payload

Symptom: 400 Bad Request with validation errors

Solutions:

  • Validate JSON syntax in custom payload

  • Check template variables are spelled correctly

  • Ensure required fields are present

  • Test payload structure with the endpoint's documentation

  • Use default payload first, then customize


Timeout errors

Symptom: "Request timed out after 30 seconds"

Solutions:

  • Optimize endpoint to respond faster

  • Return 2xx immediately, process asynchronously

  • Reduce database queries or external API calls

  • Cache data when possible

  • Check for infinite loops or blocking operations


View execution logs

Check webhook delivery history:

  1. Open folder Settings → Automations

  2. Click the webhook automation

  3. View Execution Log tab

Logs show:

  • Timestamp

  • HTTP status code

  • Request payload sent

  • Response body received

  • Error messages

  • Retry attempts


Best Practices

Respond quickly

Return 2xx status as fast as possible:

❌ Don't do this:

✅ Do this:


Make endpoints idempotent

Handle duplicate deliveries gracefully:


Log webhook requests

Keep logs for debugging:

  • Log all incoming webhook requests

  • Store request body and headers

  • Track processing status

  • Keep logs for at least 30 days

  • Alert on high failure rates


Monitor and alert

Set up monitoring for:

  • Webhook failure rate > 5%

  • Response time > 10 seconds

  • Missing webhooks (check counts)

  • Authentication failures

  • Endpoint downtime

Use your logging platform or APM tool to track these metrics.


Test thoroughly

Before going live:

  • Test with the Send Test Webhook button

  • Verify all data fields are present

  • Check template variables populate correctly

  • Confirm authentication works

  • Test with your full processing pipeline

  • Verify retries work as expected

Last updated

Was this helpful?