Browse documentation

Setting up a notification

From an empty Notification page to a working integration, in order.

  1. 1Get a template approved. Any approved UTILITY template works on any Notification page. Need one? Use the Create one and submit it to Meta link on the page for a ready-made starter, or pick one from the Built-In Library on Templates. Wait for approval, then use Sync Status.
  2. 2Select the template in the *Template to send* dropdown. The page shows the message your customers will get, with each blank highlighted.
  3. 3Copy the endpoint URL and the API key. Reveal the key with the eye button and copy it with the copy button.
  4. 4Send one test from your system, even if it fails. MsgOrb keeps the most recent payload it receives and uses it to fill in the boxes for you.
  5. 5Fill the boxes. There is one for the recipient's phone and one for each blank in the template. In each, type where your system keeps that value, written as {{customer.phone}}.
  6. 6Test with `?dry_run=1`. See Testing a notification.
  7. 7Save and let the real events flow.

The field mapper

Your system sends its own shape; the boxes tell MsgOrb where to find each value in it. For a template that reads *"Hi {{name}}, your order {{order_id}} is now {{status}}"*, you might fill:

BoxPath in your payload
Recipient Phone{{customer.phone}}
Name{{customer.first_name}}
Order ID{{order.number}}
Status{{order.fulfillment_status}}

Dotted paths walk into nested objects, and numeric segments index arrays — items.0.id. Capitals matter: {{Customer.Phone}} does not match customer.phone.

Choose a different template and the boxes change to match its blanks, so you never have to rename anything in a template to fit a page.

Text typed without {{ }} is used as-is for every message. That is handy for a fixed word like Shipped, but a phone number typed that way would send every notification to that one number. The mapper warns you when a box has no {{ }}.

Checking your boxes before going live

Once your system has sent one test, the page checks every box against it. Under each box you see the value it found, for example *Found in your last test: Jane Doe*, or a red note when it found nothing. Below the boxes, Your last test would send shows the finished message exactly as the customer would get it, with any missing blank marked in red. Fix anything red before real traffic arrives.

Backup values

Some data is not always there: a booking without notes, an order without a tracking link. Under each box (except the phone), Add a backup value lets you set text to use when your system sends nothing for that blank, for example your appointment. Without a backup, a call with a missing value is rejected, because Meta does not accept a template with an empty blank. Keep backups factual; a Utility template must not carry promotional text.

The phone number never has a backup, because a backup number would send a customer's message to someone else.

How each value is found

  1. 1The path in the box, such as {{customer.phone}}. Text without {{ }} is used as-is.
  2. 2If that finds nothing: a top-level field with the same name as the blank, so a body like {"recipient_phone": "...", "name": "..."} works as sent.
  3. 3If that finds nothing: the box's backup value.

Line breaks and tabs in your data (common in addresses and notes) are turned into spaces, because Meta rejects a template value that contains them.

Rotating the API key

The Regenerate button on the Authentication panel issues a new key and invalidates the old one immediately, with no grace period. Every external tool using the old key starts receiving *401 Invalid API key* until you paste the new one in. Only the workspace owner can do it.