Browse documentation

Notification endpoint

POST /api/webhooks/ingest — full reference with request and response examples.

POST /api/webhooks/ingest?type=<event_type>

Sends one WhatsApp notification to one recipient using an approved UTILITY template.

Headers

HeaderRequiredValue
x-api-keyYesYour workspace key
Content-TypeYesapplication/json

Query parameters

ParameterRequiredDescription
typeYesappointment, delivery or status-update. status_update is also accepted
businessNoA group id, when one workspace runs several businesses. Omit for the workspace default
dry_runNo1 to validate only. Nothing is queued or sent
test_sendNo1 to queue the composed text as a free-form message without a template

Body fields

The body is JSON. If you have saved a field mapping for this event, MsgOrb translates your own payload shape first; otherwise the body must already use these names.

type=appointment

FieldRequired
recipient_phoneYes
client_nameYes
appointment_timeYes
service_typeYes

type=delivery

FieldRequired
recipient_phoneYes
customer_nameYes
order_idYes
delivery_statusYes
tracking_urlYes

type=status-update

FieldRequired
recipient_phoneYes
subject_nameYes
current_statusYes

recipient_phone must be full international format with the country code. MsgOrb rejects anything it cannot resolve unambiguously rather than guessing a country.

Request example

curl -X POST \
  "https://msgorb.com/api/webhooks/ingest?type=delivery" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient_phone": "+15551234567",
    "customer_name": "Jane Doe",
    "order_id": "A-10423",
    "delivery_status": "Out for delivery",
    "tracking_url": "https://track.example.com/A-10423"
  }'

Success response

{
  "success": true,
  "message": "Notification received and queued successfully",
  "event_type": "delivery"
}

Status 202. The message is queued; the dispatcher sends it within moments and the outcome appears on Delivery and Queue Health.

Error response

{
  "success": false,
  "error": "No template configured for 'delivery'. Open Notifications, and choose an approved UTILITY template to send."
}

Every status code is listed in Notification errors.

Behaviour worth knowing

  • MsgOrb stores the most recent payload it receives per event type and uses it to suggest mappings in the field mapper. Send one real event early, even if it is rejected.
  • Recipients who replied STOP are refused with 403. This is enforced, not advisory.
  • Every call is written to the Connection Logs on the matching Notification page with its real status.