Turn Any Webhook Into Clean JSON With AI
Every provider sends webhooks in their own shape. Instead of writing a brittle parser for each one, point an AI node at the payload and get back exactly the fields you asked for.
Quick Answer
Add an AI Extract node to a Requex workflow, list the fields you want (for example name, email, amount), and connect it after your webhook trigger. When a request arrives, the node reads the raw payload and returns a clean JSON object with exactly those keys — no parsing code, no regex. You can then forward it to a sheet, Slack, or any HTTP endpoint.
The problem
Webhook payloads are inconsistent. One service nests the customer email under data.object.customer.email, another puts it at the top level, a third sends it inside a stringified blob. The moment a provider tweaks their schema, your hand-written parser breaks and an integration silently drops data. Extracting a handful of fields reliably across many shapes is exactly the kind of fuzzy, repetitive work language models are good at.
Before and after
Here is a messy inbound payload:
{
"event": "order.created",
"data": {
"object": {
"customer": { "full_name": "Jane Doe", "contact": { "email": "jane@acme.io" } },
"amount_total": 4200,
"currency": "usd"
}
}
}Ask AI Extract for name, email, and amount, and the payload gains a clean object you can use downstream:
{
"extracted": {
"name": "Jane Doe",
"email": "jane@acme.io",
"amount": 4200
}
}Build it in 4 steps
- Open the workflow builder and start from a Webhook trigger. Requex gives you a live URL that fires the workflow on every request.
- Drag in an AI Extract node (the 🔍 node in the AI section) and connect it after the trigger.
- In the node panel, set the input to
{{body}}, then list your fields one per line asname: description. The description is optional but improves accuracy on ambiguous payloads. - Send a test request. The extracted object lands under your output key (default
extracted) and is available to every node downstream as{{extracted.email}}.
What you can wire next
- Append the clean row to Google Sheets for a no-database CRM.
- Post
{{extracted.name}}and the amount to Slack or Discord. - Forward the normalized object to your own API with a single, stable schema.
- Pair it with an AI Classify node to tag each event (for example refund vs new order) before routing.
Notes & limits
- Bring your own OpenAI or Anthropic API key in the node for now. The model runs server-side per request.
- On OpenAI the node uses JSON mode, so output is always valid JSON. Missing values come back as
nullrather than guesses. - Keep field lists short and specific. Extracting 3–8 well-named fields is far more reliable than asking for a sprawling object.
FAQ
Do I need to write any code?
No. You define fields in the node panel and connect it on the canvas. The extraction runs as part of the workflow.
What if the payload changes shape?
That is the point. Because the model reads the whole payload, it keeps finding the same fields even when a provider moves or renames them.
Which models are supported?
OpenAI (gpt-4o-mini and up) and Anthropic Claude models. gpt-4o-mini is a good, cheap default for field extraction.
Try it
Build a webhook-to-JSON workflow in a couple of minutes — no setup, free to start.