---
title: "Webhook-triggered agents"
description: "Give any tool a URL that starts an agent. Copy it from the Webhook tab, post JSON, and refer to payload fields by name."
url: https://help.k3x.ai/en/articles/78-webhook-triggered-agents
collection: "AI Agents"
updated: 2026-10-04
language: en
---

# Webhook-triggered agents

Give any tool a URL that starts an agent. Copy it from the Webhook tab, post JSON, and refer to payload fields by name.

Every agent has its own secure webhook URL. Open the agent, click the **Webhook** tab, copy the URL, and any tool that can send an HTTP POST with JSON can start a run: Make, Zapier, n8n, Calendly, a website form, a script.

## Set it up

1.  Create the agent (or open an existing one). In the goal, describe what should happen when data arrives, and name the fields you expect: "When a demo booking arrives by webhook, find or create the company by `company_website`, add the person from `invitee_name` and `invitee_email`, create a deal in Demo Booked with the `event_start_time` in the Close Date field, and assign the owner."
    
2.  Add **Webhook** as a trigger.
    
3.  Open the **Webhook** tab. Copy the URL. It looks like `https://api.k3x.ai/webhooks/agents/<id>`.
    
4.  Paste it into the sending tool as a POST action with a JSON body and `Content-Type: application/json`.
    
5.  Send a test. Within a few seconds a run appears on the agent's **Activity** tab.
    
6.  Click **Activate** if the agent is still a Draft.
    

The **Webhook** column in the Agents list shows which agents have the webhook switched on.

## How the agent reads the payload

The agent reads payload fields by name. Whatever keys you send are available to the goal and steps under those exact names. Keep keys flat, lowercase and consistent. A payload like this:

`{"source": "calendly", "invitee_name": "Jane Doe", "invitee_email": "jane@acmeroofing.com", "company_website": "acmeroofing.com", "event_start_time": "2026-10-09T15:00:00Z", "notes": "Wants pricing for 3 locations"}`

lets you write steps such as "Create the person from `invitee_name` and `invitee_email`" and "Put `notes` into the Booking Notes field on the deal." If a field is sometimes missing, say what to do: "If `company_website` is empty, create the company from the email domain."

## Common senders

-   **Make**: an HTTP module, method POST, body type Raw, content type JSON, map the fields from the previous module.
    
-   **Zapier**: Webhooks by Zapier, action Custom Request or POST, payload type JSON.
    
-   **n8n**: an HTTP Request node, POST, JSON body with an expression per field.
    
-   **Calendly**: route the booking through Make, Zapier or n8n and forward the invitee fields, or send Calendly's own webhook if your plan supports it. The field names in the payload are whatever that tool sends, so check a real test payload before writing the goal.
    
-   **Your own code**: any HTTPS client. The endpoint accepts POST with a JSON body.
    

## Keep the URL private

The URL is the credential. Anyone who has it can start runs and spend your credits. Do not share it in public channels or commit it to a public repository. If it leaks, contact support to rotate it.

## Sending results back out

To push results to another tool, add a step: "Send a webhook to `https://hook.example.com/k3x` with the company name, deal stage and a one-line summary." The agent POSTs a JSON payload when it reaches that step. The **Deliveries** tab lists every outbound delivery with its status, so you can confirm the receiving end accepted it.

## If nothing happens

-   No run in Activity: the request did not arrive. Check URL, method POST, JSON body, and that the sending scenario or Zap is on.
    
-   Run failed: the request arrived but a step could not finish. Open the run; the error names the step. Usually a field name in the goal does not match a key in the payload.
    

## Related

-   Webhooks in K3X: the basics
    
-   Connect K3X with Make.com
    
-   Connect K3X with Zapier
    
-   Fix an agent that does not run
