> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.textit.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Calling a Webhook

![](https://storage.crisp.chat/users/helpdesk/website/-/7/a/9/f/7a9fc4558a9de000/screenshot-2026-04-27-at-16535_3w6xnq.png)

In the example above, we're asking contacts to send their name, which will look up their PID using a [webhook with Airtable](/en/article/configuring-a-webhook-with-airtable-qzrkg/).  
  
Webhooks simply POST flow data structured as JSON to an external service every time a contact reaches a **Call Webhook** action. When a contact reaches this node, we'll call the URL you've configured, passing it all of the variables collected up to that point in the flow. See the Flow Event webhook documentation for a full list of the values included. If your service returns a JSON object, we will save its values and allow you to access the last webbook response in the flow using the `@webhook`  variable prefix.  
  
For example, the *Order Status Checker* sample flow in your account asks the contact for their order number, then looks it up by POSTing it to an example external service that we've configured. That service responds with a JSON object similar to the following: 

{  
 "status": "Shipped",  
 "number": "CU001",  
 "name": "Ben Haggerty",  
 "ship\_date": "October 9th",  
 "delivery\_date": "April 3rd",  
 "description": "Vogue White Wall x 4"  
}

You're then able to reference these keys anywhere in the flow via an *extra* variable using `@run.results` .  

## Configuring a 'Call Webhook' Action

In this example, we'll show you how to add a webhook to a flow. You can follow along using the *Order Status Checker* sample flow located on the flows tab within your account.  

### Generate a Flow Field

Create a **Wait for Response** action that collects the target value from your contacts and saves it as a flow variable. In the example below, the **Wait for Response** action collects our contacts' order numbers and save them as a [flow variable](/en/article/introduction-to-flow-variables-ol3cea/) which will then be called later in the flow using `@webhook.json.lookup_response` to get the last webhook response.  

![](https://storage.crisp.chat/users/helpdesk/website/-/7/a/9/f/7a9fc4558a9de000/screenshot-2026-04-27-at-16424_ep7aut.png)

### Make a Request

Create a Call Webhook action, toggle the request to "POST", and enter your URL:

![](https://storage.crisp.chat/users/helpdesk/website/-/7/a/9/f/7a9fc4558a9de000/screenshot-2026-04-27-at-16440_1eqkjck.png)
*Result variable will only store up to 640 characters.*
  
If your service returns JSON, it'll be stored to the *Lookup Webhook* variable using `@webhook.json.lookup_webhook` to get the last webhook response. The action log within the simulator will show you the returned JSON object:  

![](https://storage.crisp.chat/users/helpdesk/website/-/7/a/9/f/7a9fc4558a9de000/screenshot-2026-04-27-at-16454_9aj6p6.png)

### Evaluate the External Variable

Next, create a **Split by Expression** action that evaluates one of the returned values against a response rule. In the example below, because the *status*key `webhook.json.status` can only contain one of three values ( *shipped*, *pending* or *cancelled*), we can use the *has all of the words* response rule to discern which value is present for the contact:  

![](https://storage.crisp.chat/users/helpdesk/website/-/7/a/9/f/7a9fc4558a9de000/screenshot-2026-04-27-at-16463_ltaok3.png)

If the returned *status* value matches "shipped", "pending" or "cancelled", the contact will be directed accordingly. Otherwise, the contact will pass through the "other" category and receive a prompt to resubmit a value called by using `@webhook.json.lookup_webhook`.  


![](https://storage.crisp.chat/users/helpdesk/website/-/7/a/9/f/7a9fc4558a9de000/screenshot-2026-04-27-at-16481_20ciiz.png)

## Viewing Webhook Events

To view Webhook events, click on **flows** tab, on the left hand side, click the **Webhook** button:

![](https://storage.crisp.chat/users/helpdesk/website/-/7/a/9/f/7a9fc4558a9de000/screenshot-2026-08-05-at-10583_38tws7.png)

You will see your recent events will be listed chronologically. 

Click an event to view the contents of the request and the corresponding JSON properties.

## Troubleshooting

Unsuccessful requests are captured by the "Failed" category. We connecting it to a [Send Email](/en/article/sending-an-email-1b77v1d/) action to ensure they you're alerted the moment an error occurs.  

![](https://storage.crisp.chat/users/helpdesk/website/-/7/a/9/f/7a9fc4558a9de000/screenshot-2026-04-27-at-16535_7gusjj.png)

There are lots of tools available that can help you to mimic, intercept and capture webhook requests so you can understand and fix problems, here are just a few of them:

* [Runscope](https://www.runscope.com/)

* [Postman](http://www.getpostman.com/)

## Give it a Try

Use the [simulator](/en/article/using-the-simulator-fqj21j/) to test your URL's performance when called.