Example deployment: logistics delivery notifications
A dispatch system announces driver assignment, arrival windows, and delays — and customer replies (gate codes, timing constraints) return to the dispatch dashboard before the driver arrives.
This is an example architecture, not a customer case study — use it as a technical starting point for your own deployment.
The business problem
Failed first-attempt deliveries are usually information failures: the customer didn't know the window, or the driver couldn't reach them at the door.
Recommended architecture
- Dispatch SystemRoute planned, driver assigned, approaching stop
- Backend event handlerBuilds the notification from stop + ETA data
- SendiMessage APIPOST /send-message with the delivery id
- Managed messaging lineOne logistics line per operating market
- CustomerNotification arrives; reply invited
- Customer reply"Please call when you arrive" / access instructions
- Incoming webhookreceive with the delivery id
- Dispatch dashboard updateThe note lands on the right stop in time to matter
System trigger
Dispatch events: driver assigned, en route (15 minutes out), delivery delayed, delivery completed. The driver app reports to your backend; your backend calls SendiMessage — the driver app never holds the API key.
SendiMessage API request
curl -sS https://api.sendimessage.com/v1/send-message \-H "X-API-Key: $SENDIMESSAGE_KEY" \-H "X-API-Secret: $SENDIMESSAGE_SECRET" \-H "Content-Type: application/json" \-d '{"number": "+15555550123","content": "Your driver will arrive in 15 minutes.","status_callback": "https://your-endpoint.example.com/status?delivery_id=d_8841&workflow=driver_arriving"}'# → {# "status": "QUEUED",# "message_handle": "4e828182-a640-483f-bfe9-17ffcaa51d48",# "to": "+14155550123",# "service": null,# "is_outbound": true,# "error_message": null,# "date_sent": null# }
Channel behavior and SMS fallback
Operational notifications favor reliability: "auto" uses iMessage where supported with SMS fallback, so the arrival window lands either way. iMessage delivery is available on supported messaging lines and destinations. Recipients without iMessage receive SMS when fallback is configured — never assume universal iMessage availability.
Incoming replies
Two-way messaging is the operational win: replies carry the delivery id back through receive, and dispatch sees access notes on the stop before the driver is standing at the wrong gate.
// "outbound" event → your dispatch 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 delivery_id in dispatch.
Messaging-line setup
One line per operating market. High-volume operations sometimes split lines by region for cleaner reporting.
Security checklist
- API key in server environment variables or a secrets manager — never in client code.
- Webhook signatures verified before any record is updated.
- Only the fields a message needs (phone, first name, reference id) leave your system.
Pricing and managed onboarding
Per active line plus usage. Logistics volume is bursty — bring your peak-day estimates to the pricing review. Every line goes through managed onboarding: use-case review, test line, credentials delivered securely, and guided production activation.
Want this setup?
Request the setup and the team will map this example to your systems, or book a review to talk it through first.