Back to The Times of Claw

DenchClaw Webhooks: Connect to Any External Service

How DenchClaw webhooks let you trigger external services when CRM events happen — Slack alerts, Zapier flows, custom integrations.

Mark Rachapoom
Mark Rachapoom
·6 min read
DenchClaw Webhooks: Connect to Any External Service

DenchClaw Webhooks: Connect to Any External Service

DenchClaw's webhook system lets your workspace send HTTP requests to external services when CRM events happen — and receive incoming webhooks from external services to trigger AI actions. Connect DenchClaw to Slack, Zapier, Make, Linear, GitHub, or any service with a webhook interface, without writing custom integration code.

Outbound Webhooks: DenchClaw → External Services#

Outbound webhooks fire when something happens in your DenchClaw workspace. Configure them in Settings → Integrations → Webhooks, or via the AI.

Setting Up an Outbound Webhook#

"Send a Slack message to #sales-wins whenever a deal status changes to 'Closed Won'."

DenchClaw sets up a webhook listener for the entry:updated event on the Deals object where Status = "Closed Won", then fires a POST request to your Slack webhook URL.

Or configure directly:

# In workspace/webhooks.yaml
outbound:
  - name: Slack Sales Wins
    trigger:
      event: entry:updated
      object: deals
      conditions:
        - field: Status
          operator: equals
          value: Closed Won
    url: https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
    method: POST
    payload_template: |
      {
        "text": "🎉 Deal closed: {{entry.Deal Name}} — ${{entry.Deal Value}} with {{entry.Company}}"
      }
    enabled: true

Supported Trigger Events#

Events that can trigger outbound webhooks:

EventDescription
entry:createdNew entry created in an object
entry:updatedEntry field value changed
entry:deletedEntry deleted
entry:status_changedEntry status/stage changed
document:updatedEntry document edited
cron:completedScheduled task finished
agent:task_completedSubagent task finished
app:eventCustom event from a Dench App

Payload Templates#

Outbound webhook payloads use Handlebars-style templates:

{
  "deal_name": "{{entry.Deal Name}}",
  "value": "{{entry.Deal Value}}",
  "company": "{{entry.Company}}",
  "stage": "{{entry.Stage}}",
  "closed_at": "{{entry.updated_at}}",
  "workspace": "{{workspace.name}}"
}

Available template variables:

  • {{entry.*}} — any field value from the triggering entry
  • {{object.name}} — object name (e.g., "deals")
  • {{event.type}} — event type that triggered
  • {{workspace.name}} — your workspace name
  • {{timestamp}} — ISO 8601 current timestamp

Common Outbound Webhook Integrations#

Slack notifications:

URL: https://hooks.slack.com/services/...
Event: entry:created on leads
Payload: {"text": "New lead: {{entry.Full Name}} from {{entry.Company}}"}

Zapier trigger:

URL: https://hooks.zapier.com/hooks/catch/XXXXXXX/
Event: entry:status_changed on deals
Payload: full entry data (omit payload_template for full JSON)

Linear issue creation:

URL: https://linear.app/api/webhook
Event: entry:created on projects
Payload: {"title": "New project: {{entry.Project Name}}", "teamId": "..."}

GitHub issue:

URL: https://api.github.com/repos/org/repo/issues
Event: entry:created on bugs
Headers: {"Authorization": "token YOUR_GITHUB_TOKEN"}
Payload: {"title": "{{entry.Bug Title}}", "body": "{{entry.Description}}"}

Inbound Webhooks: External Services → DenchClaw#

DenchClaw can also receive webhooks from external services. Each inbound webhook has a unique URL that external services POST to.

Create an inbound webhook:

"Create an inbound webhook so that when a new form submission comes in from my Typeform, it creates a new lead in DenchClaw."

DenchClaw generates a unique URL:

https://YOUR_DENCHCLAW_INSTANCE/webhooks/inbound/abc123

Configure Typeform (or any form tool) to POST to this URL on submission. DenchClaw receives the payload and the AI processes it:

inbound:
  - name: Typeform Lead Capture
    slug: abc123
    action: |
      Parse the incoming Typeform payload.
      Create a new lead entry in the People object with:
      - Full Name from field "name"
      - Email from field "email"
      - Company from field "company"
      - Source = "Typeform"
      - Status = "Lead"
    enabled: true

Inbound Webhook Processing#

The AI processes each inbound webhook payload according to your configured action. It can:

  • Create new CRM entries
  • Update existing entries
  • Trigger AI analysis
  • Send notifications
  • Trigger cron tasks

Because the action is written in natural language and executed by the AI, it handles messy real-world webhook payloads gracefully — field name variations, nested JSON, missing values, and so on.

Webhook Authentication#

Outbound Authentication#

Configure headers for authenticated outbound webhooks:

outbound:
  - name: GitHub Integration
    url: https://api.github.com/repos/org/repo/issues
    headers:
      Authorization: "token ${GITHUB_TOKEN}"
      Content-Type: application/json

Environment variables (like GITHUB_TOKEN) are stored in your workspace's .env file, not directly in the YAML.

Inbound Security#

DenchClaw verifies incoming webhook authenticity via:

  • HMAC signature verification — for services that sign payloads (GitHub, Stripe, Shopify)
  • Secret token — a shared secret passed in the request header
  • IP allowlist — restrict to known source IP ranges

Configure in the inbound webhook settings.

Using dench.webhooks in Apps#

Trigger webhooks from custom Dench Apps:

// Trigger an outbound webhook
await dench.webhooks.trigger("slack-sales-wins", {
  dealName: "Apex Corp",
  value: 25000
});
 
// Create a temporary inbound webhook
const webhook = await dench.webhooks.createInbound({
  name: "Temp Lead Capture",
  expiresIn: 3600000,   // 1 hour
  action: "Create a lead from the incoming data"
});
 
console.log(webhook.url);  // Use this URL in your form

See also: DenchClaw Event System for internal event handling, and DenchClaw Cron Scheduling for event-triggered scheduled tasks.

Frequently Asked Questions#

Can webhooks trigger AI tasks in DenchClaw?#

Yes. Inbound webhook actions are processed by the AI and can include any natural language instruction — create records, update fields, send notifications, trigger analysis, spawn subagents.

How do I debug a webhook that isn't firing?#

Check the webhook logs in Settings → Integrations → Webhooks → Logs. Each webhook event shows the trigger condition evaluation, the outbound request, and the response status code. For inbound webhooks, logs show the received payload and action execution result.

Can I test a webhook without a real event?#

Yes. In the webhook management panel, click "Send test event" to fire the webhook with sample data. Inbound webhooks have a "Test with payload" input where you can paste a sample payload and see how DenchClaw processes it.

Is there a rate limit on webhooks?#

DenchClaw doesn't impose rate limits on webhook processing. If you're triggering thousands of webhook events per minute (e.g., bulk imports), DenchClaw queues them and processes at a sustainable rate. External services may have their own rate limits.

How do I secure my inbound webhook URLs?#

Don't share inbound webhook URLs publicly. Each URL includes a random token in the path. For additional security, add HMAC signature verification matching your external service's signing method. DenchClaw supports SHA-256 HMAC verification with a configurable signing secret.

Ready to try DenchClaw? Install in one command: npx denchclaw. Full setup guide →

Mark Rachapoom

Written by

Mark Rachapoom

Building the future of AI CRM software.

Continue reading

DENCH

© 2026 DenchHQ · San Francisco, CA