Whatixo.Docs Français Open Whatixo
Docs / Whatixo API

Webhooks

The API gives you direct control; webhooks let you take advantage of workflows (delays, conditions, tags, sequences, AI) by simply sending your data.

Incoming webhook: trigger a workflow

POSThttps://api.whatixo.com/api/webhook/{webhookId}

The wh_… ID is generated when you save a workflow with a Webhook API, Shopify, WooCommerce, Chariow or Maketou trigger. Copy the full URL from the workflow editor (step-by-step tutorial).

PropertyValue
AuthenticationNo header: the URL’s secret ID is enough. Don’t use the API key here.
BodyAny JSON object (or URL-encoded form), 1 MB max.
ExecutionAsynchronous: the response is immediate, the workflow runs afterwards (delays included).
Limit120 requests / minute per IP address.
curl -X POST https://api.whatixo.com/api/webhook/wh_9b2e4f71c3a8d605 \
  -H "Content-Type: application/json" \
  -d '{"event":"signup","customer":{"first_name":"Aline","phone":"243812345601"},"course":"WhatsApp marketing"}'

In the workflow, use this data with {{customer.first_name}}, {{customer.phone}}, {{course}}.

Responses

CodeBodyMeaning
200{"success":true,"message":"Webhook reçu et en cours de traitement."}Received, workflow started.
200{"message":"Webhook inactif."}Received, but the workflow is turned off (variables are still detected).
402{"error":"Compte suspendu. Exécution bloquée."}Subscription expired.
404{"error":"Webhook introuvable."}Unknown ID or deleted workflow.
429{"error":"Trop d'appels sur ce webhook."}More than 120 requests per minute.

Variable syntax

  • Nested objects: {{customer.address.city}}
  • List items (index from 0): {{items.0.name}}
  • An AI step’s answer: {{ia_response}}
  • A missing variable is left as is in the text: test with real data.

Outgoing webhooks: receive data from Whatixo

Whatixo can in turn call your server:

SourceConfigurationData sent
Workflow action Fire a webhookURL + custom JSON body (with variables)Whatever you define in the body
Workflow action API requestMethod, URL, headers (e.g. your token), bodySame; the JSON response is reusable in later steps
The AI agent’s conversion webhookThe agent’s advanced settingsEach lead/order: phone, type, collected data
Example body for “Fire a webhook”JSON
{
  "source": "whatixo",
  "phone": "{{phone}}",
  "name": "{{name}}",
  "message": "{{message}}"
}
Secure your endpoint

Your receiving URL must be https:// and public (internal or local addresses are refused by Whatixo). Add a secret token in the URL or in a header (API request action) and check it server-side before processing the data.

Receiving example (Node.js / Express)

server.jsJS
import express from 'express';
const app = express();
app.use(express.json());

app.post('/hooks/whatixo', (req, res) => {
  if (req.get('x-hook-token') !== process.env.HOOK_TOKEN) return res.sendStatus(401);
  const { phone, name, message } = req.body;
  console.log('New WhatsApp message from', name, phone, ':', message);
  // … save it in your CRM
  res.json({ ok: true }); // reply fast (under 10 s)
});

app.listen(3000);