We use optional, privacy-safe analytics to understand which pages help visitors. Nothing optional runs until you choose. Privacy policy

Skip to content
API Integration GuideWorkflow + HTTP Request

Connect Magento order events to customer messaging

Magento Open Source and Adobe Commerce share the same event architecture: observers on sales_order_save_after (or the newer Adobe Commerce webhooks/Events service) react to order state changes with full access to the order model.

A small module registers an observer for the order states you message on, builds the payload from the order's billing data, and posts to the SendiMessage API with the key in env.php or environment variables. On Adobe Commerce cloud, App Builder actions or the Webhooks service reach the same endpoint without a deployed module. Delivery events return to your status_callback URL (embed the increment id in it) for order-comment write-backs.

Request This SetupBook an Integration Review

What this integration enables

Order confirmation
Confirm the order the moment it's placed, on the channel customers actually read.
Shipping and delivery updates
Fulfillment and carrier milestones become short, timely messages.
Payment status notifications
Confirm captured payments and flag failed ones before they become support tickets.
Customer service updates
Returns, exchanges, and inquiry follow-ups stay visible without email chains.
Abandoned checkout reminders
Only where consent rules permit — recover carts with a single respectful reminder.
Two-way order questions
Replies come back on your webhook, ready to route into support.

Implementation options

Magento observers or Adobe Commerce webhooks + HTTP request
Magento (Adobe Commerce) events call the SendiMessage API directly or through a thin handler.
Middleware integration
Your backend receives Magento (Adobe Commerce) webhooks, applies consent checks, sends the message, and records delivery events against the order.
Automation platform
Zapier, Make, or n8n map Magento (Adobe Commerce) triggers to SendiMessage HTTP actions without custom code.
Webhook-based synchronization
Delivery events return to your status_callback URL — embed the order id in it — for order-timeline updates; replies arrive on your webhook with the customer's number.

Architecture

How it fits together: Magento (Adobe Commerce) event, then Workflow or backend, then SendiMessage API, then Managed messaging line, then SMS or supported iMessage, then Customer, then Delivery or reply event, then Signed webhook, then Magento (Adobe Commerce) timeline update.
  1. Magento (Adobe Commerce) eventA record changes, a stage moves, or a workflow fires
  2. Workflow or backendMagento (Adobe Commerce) automation or your middleware prepares the request
  3. SendiMessage APIPOST /send-message — the message is validated and queued
  4. Managed messaging lineYour dedicated line sends the message
  5. SMS or supported iMessageChannel routing picks iMessage where supported, SMS otherwise
  6. CustomerThe message arrives; the customer can reply
  7. Delivery or reply eventSendiMessage records what actually happened
  8. Signed webhookYour endpoint receives outbound or receive
  9. Magento (Adobe Commerce) timeline updateYour handler writes the event back as activity

Example request

Order-shipped payload
{
"number": "{{order.customer_phone}}",
"content": "Hi {{order.first_name}}, your order #{{order.number}} has shipped. Track it here: {{order.tracking_url}}",
"status_callback": "https://your-endpoint.example.com/status?order_id={{order.id}}"
}

Template variables are examples — use your platform's own merge fields or values resolved by your handler. The API accepts only number, content, and optional media_url / status_callback / line_handle; store the returned message_handle on the order to match later events back.

Delivery events and incoming replies

Delivery events arrive on your status_callback URL with the order id you embedded in it, so your handler can mark the notification delivered on the order timeline; replies arrive on your webhook and can open a support conversation.

webhook event
// "outbound" event → your magento endpoint
// Verify the SendiMessage-Signature header (t={timestamp},v1=HMAC-SHA256 of
// "{timestamp}.{raw body}", keyed with your webhook secret), then use
// GET /v2/messages/{message_handle} for authoritative state and match it to
// your order_id in magento.

Limitations and honest notes

  • iMessage delivery is available on supported messaging lines and destinations. Recipients without iMessage receive SMS when fallback is configured — never assume universal iMessage availability.
  • Messages are accepted asynchronously — the API returns status QUEUED and final status arrives via webhook or the message endpoints.
  • No official SDK for this ecosystem yet — the example uses plain HTTP against the REST API. Official SDKs are published for JavaScript/TypeScript (npm: sendimessage), Python (PyPI: sendimessage), PHP (Composer: sendimessage/sdk), and Go (github.com/sendimessage/sendimessage-go). Every SDK is dependency-free and covers the full public API surface.
  • A native Magento (Adobe Commerce) app is not available today; the methods on this page are API-based.
  • Send messages only to recipients who expect them. Transactional and operational messaging is the primary use case — unsolicited bulk marketing is not.

Security considerations

  • Keep the API key in your server or platform secret store — never in theme code, storefront scripts, or checkout customizations.
  • Verify webhook signatures before updating order records.
  • Send only what the message needs (phone, first name, order number) — never full order or payment details.

Frequently asked questions

Does SendiMessage have a native Magento (Adobe Commerce) app?
Not today. Magento (Adobe Commerce) connects through the SendiMessage REST API using Magento observers or Adobe Commerce webhooks, middleware, or an automation platform — this page is an API integration guide.
Can order notifications use iMessage?
Yes — the request is the same either way. The messaging line's configuration routes delivery to iMessage where the line and destination support it, with SMS fallback where configured; the channel actually used appears on the message's history row (GET /v2/messages) and webhook events. Every order update reaches the customer either way.
Are abandoned-cart messages allowed?
Only where your consent basis and local regulations permit them. Transactional order messaging is the primary use case; treat cart recovery as opt-in marketing and honor stop requests immediately.

Ready to connect Magento (Adobe Commerce)?

Request a messaging line and a SendiMessage integration specialist will review your Magento (Adobe Commerce) workflow and guide the setup.