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

json
{  "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_name
  • customer.email
  • customer.phone_e164required if you want to target the customer's WhatsApp.

Order

  • order.id, order.number, order.status
  • order.total, order.currency, order.items_count
  • order.items[] — array with name, qty, price
  • order.order_url_customer — link the customer should follow
  • order.tracking_number, order.tracking_carrier

Cart

  • cart.id, cart.total, cart.currency
  • cart.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.