---
title: "Webhooks in K3X: the basics"
description: "Every agent has its own webhook URL. Post JSON to start a run, add a webhook step to push results out."
url: https://help.k3x.ai/en/articles/109-webhooks-in-k3x-the-basics
collection: "Integrations and Automation"
updated: 2026-10-04
language: en
---

# Webhooks in K3X: the basics

Every agent has its own webhook URL. Post JSON to start a run, add a webhook step to push results out.

Webhooks are how K3X talks to other tools in real time. In K3X they are built around agents: each agent can receive a webhook to start a run, and an agent step can push a webhook out to any URL.

## Inbound: start an agent from any tool

Every agent has its own secure webhook URL in the form `https://api.k3x.ai/webhooks/agents/<id>`. Anything that can send an HTTP POST with a JSON body can use it: Make, Zapier, n8n, a form provider, Stripe, a script.

1.  Open the **Agents** tab and create an agent, or open an existing one.
    
2.  In the agent's **Goal**, describe what should happen when data arrives, for example "When a demo request comes in by webhook, find or create the company by website, add the person, create a deal in Demo Booked and assign the owner."
    
3.  Add **Webhook** as a trigger.
    
4.  Open the **Webhook** tab on the agent and copy the URL.
    
5.  Paste the URL into the other tool and send a test POST.
    
6.  Check the agent's **Activity** tab for the run.
    

The agent reads the payload fields by name. If your JSON has `"email"`, `"company"` and `"notes"`, you can refer to them that way in the goal and steps. Keep keys simple and consistent, and send `Content-Type: application/json`.

A sample payload:

`{"source": "website-form", "name": "Jane Doe", "email": "jane@acmeroofing.com", "company": "Acme Roofing", "website": "acmeroofing.com", "notes": "Wants a demo next week"}`

Treat the URL like a password. Do not post it in public channels or commit it to a public repository. The **Webhook** column in the Agents list shows which agents have the webhook switched on.

## Outbound: push data to another tool

To tell the rest of your stack what K3X did, add a step to the agent that posts to a URL, for example "Send a webhook to https://hook.example.com/k3x with the company name, website, deal stage and a one-line summary." The agent delivers a JSON payload with those fields when it reaches that step.

The agent's **Deliveries** tab lists every outbound delivery with its status, so you can see what was sent and whether the receiving tool accepted it.

## Which direction do you need?

-   Data created elsewhere should appear in K3X: inbound. Form submission, booked meeting, payment, new row in a sheet.
    
-   Something K3X did should appear elsewhere: outbound. Post a Slack message, append a row, update a legacy CRM.
    
-   Both: one agent can receive, act and push back the result.
    

## Naming in payloads

The K3X API and MCP tools call companies **leads** and people **contacts**. You will see those words in tool names such as `create_lead` and in outbound payloads. They mean the same records you see in the Companies and People tabs.

## Troubleshooting

-   **No run in Activity**: the request did not arrive. Check the URL, the method (POST) and that the sending scenario or Zap is switched on.
    
-   **Run failed**: the request arrived but the agent could not complete a step. Open the run in Activity; the error names the step. Usually a field name in the goal does not match a key in the payload.
    
-   **Outbound not received**: check the Deliveries tab for the status, then confirm the destination URL is public HTTPS and the receiver is active.
    

## Credits

Receiving a webhook is free. The run it starts spends AI credits from your pool like any other agent run.

## Related

-   Connect K3X with Make.com
    
-   Connect K3X with Zapier
    
-   Connect K3X with n8n
    
-   Which integrations does K3X support?
