Event envelope
An event is any JSON object you POST to /api/public/ingest/{source}/{event}. The shape is flexible — we walk the payload and learn every field — but following the conventions below means existing templates and bindings work out of the box.
Naming
Use lowercase dotted names: resource.action. Examples: order.created, order.shipped, user.signup, appointment.reminder, payment.received, cart.abandoned. {source} identifies the platform (woocommerce, shopify, generic, or anything you choose).
Canonical envelope
{ "event": "order.created", "test": false, "site": { "name": "Acme", "url": "https://acme.com" }, "order": { "id": "12345", "number": "1042", "status": "processing", "currency": "AED", "total": "199.00", "items_count": 2, "items": [ { "name": "T-shirt", "qty": 2, "price": "99.50" } ], "customer": { "first_name": "Ada", "last_name": "Lovelace", "email": "ada@example.com", "phone_e164": "+9715XXXXXXXX" }, "order_url_customer": "https://acme.com/order/1042" }, "data": { "any_custom_field": "any_value" }}Standard fields by category
Customer (universal)
customer.first_name,customer.last_name,customer.full_namecustomer.emailcustomer.phone_e164— required if you want to target the customer's WhatsApp.
Order
order.id,order.number,order.statusorder.total,order.currency,order.items_countorder.items[]— array withname,qty,priceorder.order_url_customer— link the customer should followorder.tracking_number,order.tracking_carrier
Cart
cart.id,cart.total,cart.currencycart.recovery_url
Custom data (data.*)
Anything you put in data is available in template variables via dotted paths (data.code, data.starts_at, etc.). Use this for OTPs, appointment times, custom IDs.
Phone format
Phone numbers must be E.164: a leading +, country code, and digits. Example: +919876543210. Numbers in other formats are silently dropped.
Field discovery
Every time you send an event, Envara walks the payload and records every leaf path into a per-site field catalog. The Binding editor uses this to autocomplete variable mappings — so the more you send, the smarter mapping gets. See Bindings & templates.
Test events
Set "test": true in the body, or send to event name test, to route the message to your site's configured test recipient phone instead of the customer.
