Your Shippers Don't Complain. They Just Leave

Your Shippers Don't Complain. They Just Leave

Logistics customers rarely complain before switching. They split volume, book less often, then stop. The booking-gap signal catches them early.

Tan Wei LinTan Wei LinLogistics
29 Sep 26
13m
Part of the series:WhatsApp for Delivery & Logistics: Real-Time Order Updates That Reduce Support Calls

Most logistics customers leave without complaining. A regular shipper does not send an angry email, ask for a meeting, or threaten to move. They book a little less often, give one lane to another forwarder to "compare", and three months later your ops team notices the account has gone quiet. By then the decision was made weeks ago.

That is why the complaint log is the wrong place to look for churn. Only 1 in 26 unhappy customers complains at all (Esteban Kolsky, ThinkJar CX research). The other 25 just leave. In freight, courier and 3PL work the only honest signal you have is booking cadence, and almost nobody tracks it per account.

Key Takeaway

Customers leave without complaining because switching a shipment is easier than raising an issue, so the warning sign is never a message. It is a gap. Track the interval between bookings for every account, flag any account that passes one and a half times its normal gap, and send a useful check-in the same day. That single habit catches most silent churn while the account is still yours to keep.

Why do logistics customers leave without complaining?

Because complaining costs them more than switching does. A shipping manager at a furniture exporter in Muar has four forwarders saved in her phone. When your last two shipments cleared a day late, she did not write to you. She sent the next Penang container to the forwarder who quoted second last time, to see if they were any better. No confrontation, no email chain, no risk of a difficult conversation with a supplier she still might need.

This is the pattern in every B2B service business, and logistics is the extreme case. The buyer already has alternatives on file. Rates are quoted by the job, not locked into an annual contract. The cost of a trial with someone else is one booking. So the account does not end. It thins.

We have seen this inside sales operations across service businesses: the account that leaves loudly is rare, and it is usually the one you can save, because they told you what was wrong. The account that leaves quietly has been leaving for two months by the time anyone looks.

1 in 26
unhappy customers actually complain. The rest leave without a word.

Losing them is expensive in a way the P&L hides. A 5% improvement in retention lifts profit by 25% to 95% depending on industry (Bain & Company research by Fred Reichheld, published in Harvard Business Review). For a forwarder that sits on a few dozen active accounts, one regular shipper drifting to a competitor is worth more than a month of new-enquiry work. Yet the enquiry inbox gets a person, and the shrinking account gets nobody.

The dashboard you have is measuring the wrong thing

Ask a courier company owner how they know an account is healthy and the answer is usually "no complaints, invoices paid". Both are true of an account that stopped booking six weeks ago. Paid invoices tell you about the past. Silence tells you nothing, or rather it tells you the worst thing, that the customer no longer thinks it is worth raising.

Here is the contrarian part. The accounts to worry about are not the ones sending tickets. A customer who complains about a late delivery still believes you will fix it. The customer who used to book eight jobs a month and booked five last month, with no complaint, has already started the comparison. The drop from eight to five is the churn. Zero is just the funeral.

Loud churnSilent churn
What you seeComplaint, rate dispute, escalationNothing. Fewer bookings, same tone
When you see itBefore they leaveAfter they have already split volume
Chance to save itHigh, they told you the problemLow unless you spot the gap early
Where it showsInbox, support logBooking history, per account
Share of unhappy customersAbout 1 in 26About 25 in 26

Most churn advice online is written for software companies. It talks about logins, feature usage and support tickets. A freight forwarder in Port Klang has none of those signals. A shipper does not "log in" to you. The only thing they do is book, and the only usage metric that exists is how often they do it. That is why the fix for logistics is not a customer-success playbook. It is one field and one rule.

What is the booking-gap signal?

The booking-gap signal is a simple rule: an account is at risk when the days since its last booking exceed one and a half times its normal gap. That is it. No score, no survey, no sentiment analysis.

Work it out per account, because cadences differ. A textile importer in Johor Bahru books a sea shipment every three weeks. An e-commerce seller in Petaling Jaya books courier pickups every two days. A project cargo client might ship once a quarter. "No booking in 30 days" is a red alert for the seller and completely normal for the project client. A single threshold for everyone produces noise for the frequent shippers and silence for the slow ones, which is why most teams that tried it gave up.

The rule in plain numbers

Take the last six bookings for the account. Find the typical gap between them. Multiply by 1.5. If today is past that, the account gets a check-in, and it gets one today, not at the month-end review.

Two details matter. First, count bookings, not revenue. Revenue jumps around with shipment size and lane, so a healthy account can look like it halved because one container became two LCL consolidations. Booking count is the honest signal. Second, watch the trend inside the gap, not just the breach. If an account that booked weekly now books every ten days, it has not breached 1.5 times yet, but its gap is widening. That is usually the "trying someone else" phase, and it is the cheapest moment to act, because there is still nothing to apologise for.

5-25x
more expensive to win a new customer than to keep an existing one

Frequently Asked Questions

Because switching costs less effort than complaining. In logistics the buyer already has alternative forwarders or couriers saved, rates are quoted per job, and trialling a competitor takes one booking. Raising an issue means a difficult conversation with a supplier they may still need, so most people skip it and quietly move volume instead.
A widening gap between bookings, fewer lanes or job types than before, shorter replies to your updates, and a new contact person you have never spoken to. The most reliable one is cadence: the account books less often than its own history, even though nothing has been said.
In our experience across service businesses the split-volume phase runs for weeks to a couple of months before an account goes to zero. A per-account booking-gap alert usually catches it in the first missed cycle, which is one to three weeks for most freight and courier accounts.
Not as the opening move. A discount to a customer who has not complained tells them you know something is wrong and confirms they should shop around. Open with a specific, useful check-in about their shipments. Price only enters the conversation if they raise it, and then you negotiate from what they told you, not from a guess.
Yes. You need one field per account, the date of the last booking, and one weekly review of accounts whose gap has grown. A CRM with custom fields and recurring reminders does this in a spreadsheet-free way. The important thing is that someone owns the list each week, not the tool.

How do you build a silent churn alert for logistics accounts?

You do not need a data warehouse. You need one field on the account, a weekly list, and a named owner. The whole process is below, and the first three steps take an afternoon for a firm with fewer than a hundred accounts.

How to Spot Silent Churn in Logistics Accounts in 5 Steps

Give every account a last-booking date. One custom field on the account record, updated whenever a job is confirmed. If bookings arrive by WhatsApp or email, the ops person updates the field as part of confirming the job, the same way they enter the consignee.
Record the normal gap per account. For each active account, note the typical number of days between bookings over the last six jobs. Weekly shippers get 7, fortnightly get 14, project clients get 90. This is the account’s own baseline, not a company-wide number.
Run one weekly review of accounts past 1.5 times their gap. A recurring Monday reminder lists accounts whose days-since-last-booking has crossed the line. Five minutes with a sorted list is enough for most SME forwarders.
Move the account to an At Risk stage and fire the check-in. The stage change sends a short, specific WhatsApp or email from the account owner the same day, referencing their usual lane or product, not a generic “any shipments this month?”
Log the outcome and adjust. If they reply with a reason, record it in a churn-reason field so patterns show up across accounts. If they book again, the last-booking date resets and the account leaves the At Risk stage automatically.

Do this by hand for fifteen accounts and it works. Do it for eighty accounts across three ops staff and it dies inside a month, because nobody remembers the project client's quarterly cadence while chasing today's customs release. This is bookkeeping, not selling, and it belongs in a system. A CRM like Raion HUB keeps the last-booking field on every account, runs the weekly review as a recurring reminder, and fires the check-in when the account is moved to the At Risk stage, so the only human step left is reading the list.

The same discipline protects the front end of the funnel too. If quotes are already going out a day late, the retention alert only tells you why customers are trialling competitors in the first place. Fix quote speed first, using the playbook in why slow quoting kills freight deals, then add the churn layer on top.

What should the check-in say when the alert fires?

It should say something only their forwarder could say. The single fastest way to confirm a customer's suspicion that you do not really know them is to send "Hi boss, any shipments this month?" That message tells them you noticed the money stopped, not that you noticed them.

A good check-in references the account's history and offers something. For the Muar furniture exporter: "Your last Penang shipment cleared on the 3rd. We have space on the 12th and 19th sailings if you have the next container ready, and the new port surcharge kicks in from October, so booking before then saves you the difference." Specific lane, specific dates, a real reason to reply.

A 12-person freight forwarder
Logistics
Port Klang
Challenge

Sixty active accounts. Ops knew an account was gone only when a customer said so or when the quarterly revenue report showed the drop. Two regular shippers had moved lanes to a competitor before anyone asked why.

Solution

Added a last-booking date field to every account, recorded each account’s normal gap, and set a Monday recurring reminder listing accounts past 1.5 times that gap. Moving an account to At Risk fired a lane-specific check-in from the account owner.

Results
At-risk accounts surfaced in the first missed cycle instead of at the quarterly review
Check-ins uncovered a recurring documentation delay on one lane that no customer had complained about
The weekly list took under ten minutes and replaced the ad-hoc “who have we not heard from” conversation

Notice what the check-in did in that case. The customer had never complained about the documentation delay. They had simply started routing that lane elsewhere. The alert did not save the account by being clever. It saved it by asking a specific question a few weeks earlier than the revenue report would have.

The pattern holds outside Malaysia. A last-mile courier in Sydney with two hundred e-commerce merchants, or a customs broker in Rotterdam with forty importers, faces the same silence. The accounts do not shout. They shrink.

What changes when someone owns the quiet accounts?

The first change is that the conversation about churn moves from the quarterly review to Monday morning. Instead of "revenue is down 8%, which accounts?" the question becomes "these four accounts are past their gap, who is calling them today?" That is a question a two-person ops team can act on before lunch.

The second change is the reason data. Once check-ins are logged, the same three causes appear over and over: a documentation delay on one lane, a competitor undercutting on a specific route, or a change of contact on the customer side after someone left. None of those show up in a complaint log. All of them show up in a churn-reason field after ten check-ins, and each one is fixable at the source rather than one account at a time.

The third change is honesty about data quality. A last-booking field is only as good as the person updating it, and a field that is wrong is worse than no field, because it hides the account it was meant to reveal. If your account records are already messy, clean them first using the checks in the CRM data quality guide for SMEs, then switch the alert on. The same ownership gap that lets accounts drift also lets returns and exceptions bounce between departments, and the fix in both cases is the same: a named owner and a field that cannot be ignored.

Every active account has a last-booking date field that ops updates on confirmation
Every account has its own normal gap recorded, not one company-wide threshold
A weekly recurring reminder lists accounts past 1.5 times their gap
Moving an account to At Risk fires a lane-specific check-in from the account owner
Every check-in outcome is logged in a churn-reason field so causes show up across accounts

The bottom line

Key Takeaway

Logistics customers leave without complaining because trying a competitor costs them one booking and complaining costs them a difficult conversation. The complaint log will never warn you. Booking cadence will, if you track it per account and act on the first missed cycle with a specific, useful check-in. One field, one weekly list, one named owner is the whole system, and it is worth more than any amount of new-enquiry chasing while the accounts you already won quietly shrink.

Ready to grow with Raion

Catch the account before the last booking

Raion HUB logs every booking against the account, surfaces the ones whose cadence has slipped, and puts the check-in on the right person’s list that morning.