Guides/For developers
Customers ask "where is my order?" or "how much do I owe?" — can that be answered automatically from our own system?
The "Call your API" action in the interactive menu: WACO calls your HTTPS endpoint with the customer number (and their answer if you ask first), then replies with the "teks" field of your response. Contract, n8n example, and a test endpoint.
3 min read
"Where is my order", "how much do I owe", "has my ticket been handled" — the answers live in your system, not in a staff member's head. With the Call your API action in the interactive menu, the customer picks a menu row, WACO calls your endpoint, and the answer reaches the customer in seconds — no AI, no staff.
Setting it up
- Open Forms → Set up the interactive menu, add an option, pick the action Call your API.
- Fill in the API URL (HTTPS required) and, if your endpoint is protected, a
Secret key — sent as
Authorization: Bearer …. - The text column is optional: if filled, WACO sends it as a question first
(e.g. "Type your order number"), and the customer's next reply is sent to the API as
jawaban. Leave it empty when the WhatsApp number is enough (e.g. an ISP invoice lookup). - Save, then try it from the Send a test card.
No endpoint yet? Use the sample URL
https://waco.id/api/v1/menu/contoh-api — it replies with sample text echoing the number and what you typed, so you can see the flow first.Contract: what WACO sends
POST {your URL}
Content-Type: application/json
Authorization: Bearer {secret key} ← only if set
{
"nomor": "628111222333",
"nama": "Budi",
"pilihan": { "id": "m2", "judul": "Order status" },
"jawaban": "INV-2026-0912", ← null when the option does not ask first
"waktu": "2026-09-05T03:20:11.000Z"
}
Contract: what you reply
HTTP 200
Content-Type: application/json
{ "teks": "Order INV-2026-0912: SHIPPED 4 Sep, arriving tomorrow. JNE tracking 123456." }
teksup to 4096 characters, multi-line allowed. Emoji allowed.- Timeout 8 seconds. Beyond that, a non-200 status, or a missing
teksfield, the customer receives the fallback text ("Sorry, our system cannot be reached right now…") and the conversation stays open for staff. - Do not return more sensitive data than the customer should see; whatever you return is shown in their WhatsApp.
Example: n8n in 3 nodes
- Webhook (POST, Respond: "Using Respond to Webhook node") — its URL is what you paste into WACO.
- HTTP Request or Postgres/MySQL: look up the order by
{{$json.body.jawaban}}or the invoice by{{$json.body.nomor}}. - Respond to Webhook: JSON
{"teks": "Order {{...}}: {{...}}"}.
The same pattern works for Make, Zapier, or one small route in your own application.
Good to know
- The AI Operator stays silent while the customer answers an API option's question, so there are never two replies.
- The answer is awaited for 10 minutes; after that the customer's messages are treated normally.
- The secret key is stored in your tenant's menu settings. Use a key dedicated to WACO, not your system's master key, so it is easy to revoke.
← PreviousFrom chat form to reservation, reminders, and birthday greetings — how does the flow work?
Next →Customers say "hi" and then do not know what to ask. Can we give them a menu of options like a hospital bot?
Still stuck after following this guide? Contact us from the
dashboard — attach a screenshot if you have one, it speeds everything up.