Acceptance rate: what it measures, and when it measures the platform
In short
Acceptance rate is accepted offers divided by offers made, over a window. The platform chooses the denominator, so offers a seller never received, offers outside their real coverage and offers sent outside their working hours all deflate the number without saying anything about the seller. Correct the denominator before the metric goes anywhere near dispatch or ranking.
Key takeaways
- Acceptance rate is conditional on offers you chose to send, so it measures targeting quality as much as seller behaviour.
- Exclude undelivered offers, offers outside real coverage and offers outside working hours before computing anything.
- On 1 illustrative week the same seller reads 27.5% raw and 79% once ineligible offers are removed.
- It is a reasonable tie-break and a good ops alarm. It is not a deactivation trigger and not a standalone ranking multiplier.
Acceptance rate is the share of offers a seller accepted out of the offers they were made, over some window. The numerator is unambiguous. The denominator is a choice the platform makes every time it decides who to offer a job to, which is why an uncorrected acceptance rate is partly a measurement of your own dispatch logic.
That is not a reason to abandon the metric. It is a reason to define the eligible offer before defining the rate, and to be precise about which decisions the number is then allowed to influence.
The definition, and the half of it the platform owns
An offer has to be delivered, visible, actionable and answerable before a decline means anything, and each of those is a system property rather than a seller property. Distribution shape matters too: under a broadcast to 20 sellers, 19 decline by design, so mixing broadcast and sequential offers into 1 rate averages 2 different metrics — the distinction in the four shapes a lead can be handed out in.
Four ways the denominator lies about a seller
| Offer class | How to detect it | Treatment |
|---|---|---|
| Never delivered | No client acknowledgement: push dropped, app killed, device offline, call never connected | Exclude. A missed offer is a delivery defect, not a decline |
| Outside real coverage | Travel time well beyond the seller's own recent job distribution, not just outside a drawn radius | Exclude, and fix the coverage model that produced it |
| Outside working hours | Timestamp falls in hours the seller has never worked in 90 days | Exclude, and treat it as an availability data problem |
| Unanswerable as sent | No price, no address, or an expiry shorter than the time needed to read it | Exclude until the payload and the expiry are fixed |
The arithmetic is not marginal. Take a seller offered 40 jobs in a week who accepted 11: a raw rate of 27.5%. Remove 5 offers that were never delivered, 12 that required a 45-minute drive when their jobs are normally within 20, and 9 that arrived during hours they have never worked, and 14 eligible offers remain. The same 11 acceptances now read 79%. Nothing about the seller changed between those 2 numbers.
Every offer the platform should never have sent is a free reduction in someone's acceptance rate, and the seller has no way to appeal a denominator they cannot see.
Delivery is the class most often assumed away. If offers reach sellers by phone through a masked number pool, an exhausted or misrouted pool drops them silently and the deficit lands on the seller's record — which makes sizing and recycling a pool of masked numbers a metrics problem as well as a telephony one. A daily reconciliation of offers sent against offers acknowledged, alerting on any seller whose delivery share drops, is guarded automation of the kind we build under AI agents and automation.
The loop that turns the metric into a mirror
Feed acceptance rate back into dispatch and it starts changing its own denominator. A seller whose rate dips receives fewer offers, so the next rate is computed on a smaller sample and swings harder; a favoured seller receives more and stabilises. Neither movement reflects behaviour. Left alone, this is one of the mechanisms concentrating work in a few sellers, examined in when the same five sellers take every job and one argument for capping how much one seller can win.
The behavioural loop is worse. Once acceptance carries consequences, the cheapest way to protect it is to accept everything and cancel later, which moves the failure from a moment when the job could still be reoffered to a moment when the buyer is already waiting. Pair any penalty with a cancellation measure, or the metric improves while the service degrades.
Window, floor and shrinkage: making the number comparable
- Fix a window that adapts to volume. The last 25 eligible offers or 30 days, whichever yields more, so a quiet seller is not judged on 3 data points.
- Set a floor before display. Below roughly 20 eligible offers, show the sample size rather than a percentage: 100% from 2 offers outranks 88% from 60 in every naive sort.
- Shrink small samples toward the market mean. With a prior weight of 10 offers at a 60% market average, a seller who accepted 3 of 4 reads 64% rather than 75%.
- Segment before comparing. A rate built from long-distance low-value work is not comparable to one built from short local jobs.
- Publish the definition to sellers: exclusion rules, window and floor, beside the number, so a disputed rate is a lookup rather than an argument.
What it may legitimately drive, and what it must never drive alone
The safe uses share a property: they change the odds of receiving work, and they are reversible within days. The unsafe ones are irreversible, or they hand a single noisy signal authority over the whole ranking.
- May drive a tie-break. Between otherwise close candidates, preferring the seller more likely to accept cuts buyer wait with no claim about quality.
- May drive batch size. If predicted acceptance is low, offer to 3 sellers instead of 1 — and a short accumulation window makes those offers better targeted anyway, as argued in why waiting 2 seconds beats nearest-first.
- May drive operations. A sudden collapse in one seller's acceptance is a useful alarm, and it is usually a broken device or a changed schedule rather than disengagement.
- Must not drive deactivation on its own. A metric whose denominator the platform controls cannot be the sole basis for removing someone's income.
- Must not become a hidden multiplier in the score. Policy levers belong in an inspectable layer, for the same reason sponsored results belong outside the organic ranker.
Acceptance rate earns its place as 1 signal among several, with a denominator you can defend and a published definition. Which layer it belongs to — measurement, policy or sort order — is worth stating explicitly, as separated in signal, score and sort order. It is part of the matching, ranking and dispatch work we do for marketplaces and two-sided platforms, and the same discipline applies to fleet dispatch, discussed in AI in logistics operations.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
What does acceptance rate actually measure on a dispatch platform?
It measures the share of offers a seller accepted out of the offers the platform decided to send, which makes it a joint measurement of the seller and of your targeting. Two sellers with identical willingness to work show different rates if one receives offers matched to their coverage and hours and the other does not. Correcting the denominator turns it back into a statement about the seller.
Which offers should be excluded from an acceptance rate?
Exclude any offer never delivered, arriving outside the seller's real coverage or working hours, or unanswerable as sent because it lacked price, location or time to respond. Each is a platform defect rather than a seller decision, and leaving them in penalises sellers for your errors. Log the exclusion reason so the rate can be explained when it is disputed.
Should acceptance rate be used in ranking?
As a tie-break or a minor input, yes; as a dominant multiplier, no. The problem is the feedback loop: once the rate changes how many offers a seller receives, it changes its own denominator and stops being an independent measurement. Keep it explicit and bounded in the scoring layer, pair it with a cancellation measure, and never let it be the sole basis for deactivation.
How do you handle acceptance rate for a brand-new seller?
Shrink toward the market average and show the sample size instead of a bare percentage. A seller with 4 offers has no meaningful rate, and treating a small sample as a real one buries new supply before it has proved anything. A prior weight of around 10 offers at the market mean is a reasonable start, tuned so early swings do not dominate the score.
- dispatch
- matching
- marketplaces
- metrics
The work behind this page
Builds from our portfolio that this page draws on.
FieldRoute
An AI field-service platform that auto-dispatches the best-matched technician, optimizes routes, and tracks first-time-fix against every SLA.
OperationsHaulBoard
An AI freight load board that matches every open load to the best-fit carrier, prices each lane on live spot-rate data, and tracks broker margin on every move.
LogisticsRead next
- Lead distribution: the four shapes a request can reach sellers inBroadcast, sequential offer, shortlist, exclusive assignment. The shapes differ in who pays when nobody answers, which is also the question that identifies yours.definition
- Signal, score and sort order: three layers people keep collapsingA signal is a measurement, a score is policy and a sort is a product rule that can ignore both. Most ranking arguments are two people proposing changes at different layers.definition
- A handful of sellers are taking everything: is it the ranker or the market?Concentration is only a defect if your ranker built it. Re-rank the same queries with every history-derived signal removed, and the share distribution tells you which answer you have.diagnostic
- Dispatch radius: a travel-time boundary that only looks like a circleThe circle on the map is a proxy. The real boundary is however far a provider can travel in an acceptable time, which is different in every direction and at every hour.definition
- Matching got slower as supply grew: which stage stopped being linearPlot each stage's duration against candidate-set size on log-log axes. The slope names the stage that stopped being linear, and each stage has a structurally different repair.diagnostic
- Availability: a set of intervals, not a grid of day cellsAvailability is not a stored fact. It is the answer to a question, computed from recurring rules, exceptions and what has already been consumed — and a day-cell table is a cache of that answer.definition
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation