For TMS · 3PL · Freight Platforms

Exception alerts that don’t die in promo

Delay notices buried in email. POD links nobody opens. Dock appointments that get missed. Blasts delivers shipment and exception Screen Blasts into a dedicated inbox shippers and consignees opted into — Partner API from your TMS, no SMS meter running.

The visibility gap in freight ops

Email
still the default for “your load is late” — and still fights promo / clutter
SMS $
carrier fees stack fast on high-volume exception traffic
API
your TMS already knows the event — Blasts is the last-mile inbox

Built for freight workflows

Exception & delay alerts

Weather hold, mechanical, detention, missed appointment — fire from your event bus the moment status flips.

ETA / status digests

In-transit milestones with PRO / BOL merge tags. Batch a lane or a customer’s open loads.

📄

POD & document ready

Proof of delivery, BOL, rate confirmation PDF attachments — with read webhooks for audit.

🏭

Dock & pickup windows

Warehouse appointment confirmations and gate instructions before the truck rolls.

Cold-chain / temp flags

Threshold breaches from IoT → Screen Blast to ops + consignee contacts who enrolled.

🔗

Customer portal enroll

Hosted blasts.dev/enroll/… at account setup, or server-side confirm when they’re logged in.

Honest framing: this is opt-in Screen Blast delivery — not a claim that email will never hit promo, and not a replacement for ELD / carrier tracking portals. Strong fit when your buyers already expect transactional shipment notices and you control the enrollment moment.

Rich HTML exception alert example

What a delay Screen Blast can look like in the recipient inbox — plus the Partner batch call

Live Preview — Screen Blast Inbox
API Call — Batch Send with HTML
# Exception blast — enrolled consignee contacts
curl -X POST "https://api.blasts.app/api/v1/partner/messages/batch" \
  -H "Authorization: Bearer $API_KEY" \
  -H "X-Blasts-Timestamp: $(date +%s000)" \
  -H "X-Blasts-Signature: sha256=..." \
  -H "Content-Type: application/json" \
  -d '{
  "batch_name": "exception_weather_kc_0721",
  "body_html": "<div style=\"font-family:sans-serif\">
    <div style=\"background:#d97706;color:#fff;padding:20px;text-align:center\">
      <h1>Delivery delayed</h1>
      <p>PRO {{pro}}</p>
    </div>
    <div style=\"padding:20px\">
      <p>Hi {{name}}, load <strong>{{pro}}</strong>
      ({{lane}}) is delayed: {{reason}}.</p>
      <p>New ETA: <strong>{{eta}}</strong></p>
      <a href=\"{{track_url}}\">Track shipment →</a>
    </div>
  </div>",
  "body_plain": "DELAY: {{name}}, PRO {{pro}} ({{lane}}) — {{reason}}. New ETA {{eta}}. Track: {{track_url}}",
  "recipients": [
    {
      "to_email": "ops@metrodist.example",
      "merge": {
        "name": "Metro Ops",
        "pro": "NF-884291",
        "lane": "ORD→DFW",
        "reason": "Weather hold KC",
        "eta": "Jul 22 14:00 CT",
        "track_url": "https://portal.example/t/NF-884291"
      }
    }
  ]
}'

Why Blasts fits beside email & SMS

Transactional email SMS / WhatsApp Blasts
Seen when it matters ✗ Promo / clutter risk ✓ High open, high cost ✓ Opt-in Screen Blast inbox
Rich HTML + PDFs ✗ Limited ✓ HTML + attachments
Cost at volume Low visibility cost ✗ Per-segment fees ✓ Prepaid credits
Read / delivered proof ✗ Soft ✗ Carrier-dependent ✓ Webhooks
Consent model Often implicit TCPA / opt-out heavy ✓ Explicit enroll
TMS / 3PL integration ✓ ESP ✓ CPaaS ✓ Partner API + HMAC

Wire it in under a week

1. Sandbox key

Ask Tips Marketing for pk_test_* (0 credit debit, 100 sends/UTC-day). Contact AL@SavingsSites.com.

2. Enroll customers

Hosted enroll link at portal signup, or server-side confirm when the user is already authenticated in your TMS.

3. Hook events

On exception / ETA / POD-ready, POST send or batch to https://api.blasts.app/api/v1/partner/….

4. Webhooks

Listen for delivered / read / dismissed. Debug with GET /webhook/deliveries when integrating.

More logistics examples

POD ready — single send

# Consignee enrolled contact — POD PDF already uploaded via attach API
curl -X POST "https://api.blasts.app/api/v1/partner/messages/send" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "to_email": "ap@buyer.example",
  "body_html": "<div style=\"font-family:sans-serif;padding:20px\"><h2>POD ready</h2><p>PRO <strong>NF-884291</strong> delivered. Download proof of delivery from your portal.</p></div>",
  "body_plain": "POD ready for PRO NF-884291. Open your Northstar portal to download.",
  "metadata": { "pro": "NF-884291", "event": "pod_ready" }
}'

Dock appointment — campaign

# Warehouse window confirmations for tomorrow's inbound
curl -X POST "https://api.blasts.app/api/v1/partner/campaigns" \
  -d '{
  "campaign_name": "dock_windows_0722",
  "body_html": "<div style=\"font-family:sans-serif;padding:20px\"><h2>Dock appointment confirmed</h2><p>{{name}}: gate {{gate}}, window {{window}}, PRO {{pro}}.</p></div>",
  "body_plain": "Dock confirmed: {{name}}, gate {{gate}}, {{window}}, PRO {{pro}}",
  "recipients": [
    { "to_email": "yard@dc.example", "merge": { "name": "DC Yard", "gate": "B3", "window": "08:00–09:00", "pro": "NF-884291" } }
  ]
}'

Add an inbox channel your TMS already owns

Free sandbox key · Partner API · same contracts as production.