
A single text message to a truck driver whose wheels are turning can trigger a federal fine: up to $2,750 for the driver and up to $11,000 for the motor carrier that allowed it. The FMCSA writes the rule, DOT enforcement backs it, and repeat violations can pull a driver's CDL for months.
Here's the uncomfortable part for anyone building transportation and logistics software. Your platform is often the thing sending that text.
Picture the notification your dispatch platform just fired: "New load available on your lane, tap to accept." It went out the instant the load posted, to every matching driver, one of whom is doing 65 on I-80 with your app open on the dash mount. That's not just a rough user experience. Under federal law it can be a violation, and the carrier running your software is the one on the hook for it.
This bug lives in a surprising amount of the stack: TMS platforms, fleet and telematics apps, freight marketplaces, driver apps, last-mile tools. They treat a commercial motor vehicle (CMV) driver the way a consumer app treats a user, as an address you can push to whenever there's something to say. A CMV driver is not that. Building as if they are creates a legal exposure for your customers, a safety problem on the road, and a product that quietly trains drivers to do something dangerous. This is how to design driver-facing notifications for what a driver actually is: a person operating a heavy vehicle, on a federal clock, moving in and out of coverage, who legally cannot touch a phone while the truck is moving.
In the United States, the FMCSA's federal rule 49 CFR 392.80 prohibits texting while driving a commercial motor vehicle. It also prohibits the motor carrier from allowing or requiring it.
The detail that catches software teams off guard is the definition of "driving." It means operating the vehicle with the motor running, "including while temporarily stationary because of traffic, a traffic control device, or other momentary delays." A driver stopped at a red light or crawling in a jam is still driving under the rule. It only stops applying once they've moved the vehicle off the road and parked somewhere safe.
The penalties are real. A driver can be fined up to $2,750, and a carrier that allowed or required the texting up to $11,000, both as adjusted for inflation. Repeat convictions disqualify a driver from operating a commercial vehicle: 60 days for a second offense within three years, 120 for a third. There's a narrow exception for contacting law enforcement or emergency services, and that's the whole list.
On top of the federal rule sits a patchwork of state handheld-device laws, most of which also treat a stopped-in-traffic driver as driving. So "wait until they're at a light" is not a loophole anywhere.
You're not the one holding the phone, so why should your software care? Two reasons. If your platform pushes an interactive notification to a driver you can tell is driving, you've built a product that nudges a safety-critical worker toward breaking that rule. And if you're the software a carrier runs on, you're squarely in the "allow or require" half of it: a carrier that mandates drivers use your app to accept loads or confirm stops, with no regard for driving state, has a compliance exposure your product created. "We just sent the notification" is not where you want to be standing.
The assumption to drop is that a recipient is always reachable. For most product notifications that's harmless: someone gets a push or a Slack ping and deals with it when they can. A driver operating a truck can't deal with it, shouldn't look at it, and often can't legally touch the phone to clear it.
What actually makes drivers different, and what your notification logic has to account for:
Most logistics platforms flatten all of that into "user has a device token, send push." The fix isn't more rules bolted onto each message. It's feeding one signal you almost certainly already have into your notification layer: duty status.
If you're building for trucking, you're already touching electronic logging device (ELD) data, directly or through a telematics integration. Every driver's ELD reports a duty status, and it's the exact signal your notifications need. The four statuses:
That last one is your hard gate. When a driver is in the driving state, they are, by the federal definition, someone you must not send an interactive notification to. The other three are windows when a driver can actually read and act.
Layered on top is the hours-of-service (HOS) clock, which tells you not just whether a driver is reachable but how much road time and shift they have left. Federal HOS gives a property-carrying driver an 11-hour driving limit inside a 14-hour on-duty window, after 10 consecutive hours off duty, with a required 30-minute break and a weekly cap of 60 hours in 7 days or 70 in 8. The natural, safe delivery windows for non-urgent driver notifications are the 30-minute break and the off-duty and on-duty-not-driving periods, all of which the ELD already marks.
So the raw material is there. The gap is that most notification systems never read it. They know the driver's phone number and device token; they don't know the driver is currently doing 65.
The core move is to treat driving state the way a consumer app treats quiet hours, except the quiet period is defined by the vehicle, not by a fixed clock. When the ELD says driving, non-urgent notifications hold. When the driver goes on-duty-not-driving, off duty, or into the sleeper berth, they release.
Concretely, four rules:
The hard part in practice is classifying your notifications, because not everything can wait for a stop and not everything is urgent. Here's how the common logistics notifications sort out:
| Notification | Urgency | Delivery |
|---|---|---|
| Load offer / tender | Can wait | Hold to next stop, then inbox + push |
| Dispatch assignment (next load) | Can wait | Hold to next stop |
| Dock door / check-in instructions | Timed to arrival | Release on arrival (already stopped) |
| Detention clock started | Informational | Inbox, surfaced at the stop |
| Document capture nudge (BOL, POD, lumper) | Can wait | Hold to next stop |
| Route change, current load | Time-sensitive | Hands-free voice if en route; else hold |
| HOS / break reminder | Time-sensitive, safety | Hands-free or dashboard, timed to the clock |
| Reroute for a hazard or closure ahead | Urgent, safety | Hands-free voice |
| Breakdown / roadside dispatch back to driver | Urgent | Hands-free voice or call |
Notice that most of what a logistics platform sends a driver, load offers, assignments, document nudges, settlement updates, can wait for the next stop with zero downside. The genuinely can't-wait cases are few, and they belong on a channel built for a moving vehicle. Once you sort your notifications this way, the compliance problem mostly dissolves, because you're no longer sending taps-required messages to a driver in motion.
Push alone is the wrong primary channel for a driver. It's interruptive by design and it dies in dead zones. The stack that actually fits driver-facing logistics notifications:
There's a business reason to lean on in-app and push for routine driver traffic, beyond safety: it keeps you out of per-message SMS costs and the A2P 10DLC consent overhead that comes with texting, with SMS held in reserve for the cases where you actually need the reach. And it keeps the durable record (the inbox) as the source of truth, which is what makes the dead-zone case work at all.
All of this hinges on one connection: your notification system has to know the driver's duty status. That's a wiring problem between two systems you already run, your ELD or telematics integration and your messaging layer. The data flow is straightforward:
There are two places to put that decision, and the second one scales better:
The second is where a flexible notification layer pays off, and it's the case for putting Courier between your ELD data and your drivers. Courier is built to take arbitrary signal like this: you attach duty status and HOS to the driver's profile or pass it on the send, express the hold as quiet hours and preferences, and every driver notification inherits the gate without you re-checking in code. It's API-first and provider-agnostic, so it doesn't care whether your duty-status feed comes from Samsara, Motive, a raw ELD stream, or your own telematics stack.
Every design decision in this post maps to something you configure in Courier rather than build and maintain yourself:
You bring the ELD signal; Courier applies the rule. Because the routing, preferences, channels, and tenants are all configuration rather than hard-coded logic, you wire the ELD-aware behavior once instead of rebuilding it on every message type and every customer.
Here's the part that flips this from a compliance headache into a product advantage. The same duty-status and HOS data that tells you when not to send also powers some of the most valuable notifications you can send a driver.
A platform that treats the ELD feed as only a compliance record is leaving these on the table. A platform that treats it as a live signal of driver state can both stay quiet at the right moments and speak up at exactly the right ones.
There's a reason to get this right beyond avoiding fines. The American Transportation Research Institute found that trucks detained at a stop drove, on average, 14.6% faster afterward than trucks that weren't. Drivers who lose time waiting make it up on the road. Distraction, separately, ranks among the trucking industry's top-10 concerns in ATRI's annual survey.
Notification timing sits right on top of both. A badly timed alert, an interactive ping to a driver in motion, adds distraction to a job that already has too much. A well-timed one, a dwell alert that lets a dispatcher intervene before detention runs long, or an early heads-up that lets a driver plan a stop, takes pressure off. When you design driver notifications around the clock and the duty status, you're not only staying on the right side of a rule. You're building software that makes the road marginally safer, which is not a small thing when your users weigh 80,000 pounds.
The reason most systems get this wrong is that duty-state logic ends up scattered, a check bolted onto one message type and forgotten on the next. Modeling it once, at the messaging layer, is what keeps it from drifting: duty status read on every driver send, a "driving" state that behaves like a quiet period, a digest that releases the held pile at the next stop, and an in-app inbox as the durable backbone.
A truck driver is not an app user. Build for that, wire in the ELD signal you already have, and the compliance, the safety, and the driver experience all improve together.
No. Federal rule 49 CFR 392.80 prohibits texting while driving a commercial motor vehicle, and motor carriers can't allow or require it. Design driver notifications to hold non-urgent messages until the driver is safely stopped.
Yes. The rule defines driving as operating the vehicle with the motor running, including while temporarily stationary because of traffic or a signal. It only stops applying once the driver has pulled off the road and parked somewhere safe.
Gate non-urgent notifications on ELD duty status and hold them while the driver is in the driving state, then release them at the next stop, batched into one digest. Use an in-app inbox as the durable backbone, push as the doorbell, and SMS as backup, and reserve hands-free voice for the genuinely urgent.
ELD duty status is the driver's current state (off duty, sleeper berth, on duty not driving, or driving) reported by the electronic logging device you're likely already integrated with. Feeding it into your notification layer lets you send only when a driver can safely read and act, and hold everything else.
This is a companion to our complete guide to logistics notifications, which covers the full picture: how one freight event fans out to drivers, dispatchers, shippers, warehouses, and customers, and how to build and operate the whole system. See chapter 3 for the other constraints that reshape driver-facing notifications, including consent, alert fatigue, driver language, and dead zones.
Building driver notifications into your logistics platform? Talk to a solutions expert or get started for free.

How to Design an In-App Notification Center: UX tips and examples
A design-focused guide to building an in-app notification center people actually use. Covers the UX decisions that matter (entry point, information hierarchy, read state, grouping, empty states, inline actions, real-time, accessibility), then shows three ways to execute in Courier Inbox: brand-match with a theme, take over individual pieces with render props, or go fully headless with the `useCourier` hook. Ends with a pre-ship checklist.

How Apple's on-device AI works, and what it changes for your users
Apple's 2026 on-device models (AFM 3) are good enough to read, rank, and summarize everything that lands on your phone, locally and for free. Here's how they actually work, in plain terms, and how a model that reads every message before your users do changes what you should send.

Apple Intelligence finally got smart. Here's how it changes the notifications your users see.
Apple Intelligence's on-device models got dramatically better in iOS 27, and they now summarize, rank, and filter notifications before your users ever see them. There's no API to control that, so the words you send are the only lever you have. Here's how notification summaries work and how to write for them.
© 2026 Courier. All rights reserved.