Analysis 08 of 28Operations
How much lower do late deliveries score?
When a marketplace order arrives after the date the customer was promised, how much lower is its review score, how does that change with the days late, and does it hold once delivery status and order value are taken into account?
The short answer Late orders average 2.27 stars against 4.29 for orders on time or early, and 53.8% of them get one star against 6.6%. The score falls fast over the first week late: 3.29 at 1 to 3 days, 2.10 at 4 to 7, about 1.7 after that. Part of that is timing: Olist sends its review survey on delivery or when the estimated date is due, so 64.0% of late orders were answered before they arrived. Late orders answered on or after arrival still average 3.41, 0.88 below on time. The overall gap is about two stars in every order value band. Orders never marked delivered score lowest, 1.74.
- Public data
- Anonymized marketplace orders
- Correlation, not cause
Data as of · fixed dataset
Lead conversion The same marketplace, from the seller side.
- Source
- Brazilian E-Commerce Public Dataset by Olist (orders, order items, order reviews)
- Period
- Orders Sep 2016 to Aug 2018
- Licence
- CC BY-NC-SA 4.0
- Charts
- 5, each with its data table and CSV
- Data file
- data/analyses/late_deliveries.json
Key figures
- 6.7%Delivered orders that arrived late6,381 of 95,824 delivered orders with a review
- 2.27Average score, late against on timeagainst 4.29 on time or early, out of 5
- 53.8%One-star reviews, late ordersagainst 6.6% on time or early
- 64.0%Late orders answered before arrivalOlist sends its survey on delivery or when the estimated date is due
- 3.41Late orders answered on or after arrivalagainst 4.29 on time or early
The charts
Chart 1Lead chart · average score by delivery against the estimate
Late orders score far lower, and the score falls fast over the first week late.
How does the review score change with how early or late the order arrived?
Olist marketplace orders · public data
| Delivery against the estimate | Average review score | Orders | One star (%) | Five stars (%) |
|---|---|---|---|---|
| 15 or more days early | 4.32 | 34,771 | 6.5 | 64.3 |
| 8 to 14 days early | 4.31 | 36,158 | 6.4 | 63.0 |
| 1 to 7 days early | 4.20 | 17,234 | 7.1 | 57.5 |
| On the estimated day | 4.03 | 1,280 | 8.5 | 50.6 |
| 1 to 3 days late | 3.29 | 1,852 | 25.1 | 33.2 |
| 4 to 7 days late | 2.10 | 1,748 | 58.6 | 14.1 |
| 8 to 14 days late | 1.67 | 1,446 | 70.6 | 6.8 |
| 15 or more days late | 1.72 | 1,335 | 69.0 | 7.2 |
Chart 2Share of each star rating
One-star reviews rise from 6.6% on time to 69.8% at 8 or more days late.
How does the mix of star ratings change once an order is late?
Olist marketplace orders · public data
| Delivery | Orders | 1 star (%) | 2 stars (%) | 3 stars (%) | 4 stars (%) | 5 stars (%) |
|---|---|---|---|---|---|---|
| On time or early | 89,443 | 6.6 | 2.6 | 8.1 | 20.4 | 62.3 |
| 1 to 3 days late | 1,852 | 25.1 | 7.0 | 14.7 | 20.0 | 33.2 |
| 4 to 7 days late | 1,748 | 58.6 | 9.1 | 9.8 | 8.4 | 14.1 |
| 8 or more days late | 2,781 | 69.8 | 9.5 | 9.0 | 4.7 | 7.0 |
Chart 3Average score by when the review was answered
64.0% of late orders were answered before they arrived, and those reviews score lowest.
Is the customer reviewing the product, or the wait?
Olist marketplace orders · public data
| Delivery | Before arrival | On or after arrival | Answers before arrival | Answers on or after arrival | Share answered before arrival (%) |
|---|---|---|---|---|---|
| On time or early | 3.86 | 4.29 | 153 | 89,290 | 0.2 |
| 1 to 3 days late | 1.54 | 3.51 | 205 | 1,647 | 11.1 |
| 4 to 7 days late | 1.60 | 3.18 | 1,196 | 552 | 68.4 |
| 8 or more days late | 1.65 | 3.11 | 2,685 | 96 | 96.5 |
Chart 4Average score by order status
Orders never marked delivered score lowest: 1.74 on average.
Is a late order better or worse than one that is never delivered?
Olist marketplace orders · public data
| Order status | Average review score | Orders | One or two stars (%) |
|---|---|---|---|
| Delivered on time or early | 4.29 | 89,443 | 9.3 |
| Delivered late | 2.27 | 6,381 | 62.4 |
| Shipped, never marked delivered | 2.00 | 1,032 | 69.6 |
| Canceled | 1.80 | 605 | 76.9 |
| Unavailable | 1.53 | 595 | 84.9 |
| Not yet shipped (invoiced, processing, created, approved) | 1.46 | 609 | 87.5 |
Chart 5Late against on time, by order value
The gap is about two stars in every order value band.
Is the gap just a cheap-order or an expensive-order effect?
Olist marketplace orders · public data
| Order value (items plus freight) | On time or early | Late | Gap | Orders on time or early | Late orders | Late share (%) |
|---|---|---|---|---|---|---|
| Up to R$61.80 | 4.35 | 2.39 | 1.97 | 22,577 | 1,358 | 5.7 |
| R$61.80 to R$105.28 | 4.31 | 2.28 | 2.04 | 22,494 | 1,579 | 6.6 |
| R$105.28 to R$176.16 | 4.29 | 2.29 | 2.00 | 22,219 | 1,649 | 6.9 |
| Over R$176.16 | 4.20 | 2.16 | 2.04 | 22,153 | 1,795 | 7.5 |
LimitsRead with care
What this data can't show.
- Why an order was late. No field records the cause: seller, carrier, distance or a busy week all look the same here.
- That lateness causes the low score. Late orders can differ in other ways (product, seller, region). These are averages side by side, checked against order value and review timing, not a controlled test.
- What most customers think once a very late order arrives. Of 2,781 orders 8 or more days late, 2,685 were answered before they arrived; only 96 answers came after.
- What a low score costs. Whether these customers bought again or stopped is not part of this analysis.
- What the comments say. The written reviews are not analysed here.
01Findings
What the charts say.
Late orders average 2.27 against 4.29 on time or early; 3.29 at 1 to 3 days late and 2.10 at 4 to 7.
One-star reviews go from 6.6% on time to 25.1% at 1 to 3 days late and 69.8% at 8 or more.
64.0% of late orders were answered before they arrived. Answered on or after arrival, late orders still average 3.41, 0.88 below on time.
Orders never marked delivered average 1.74, below even late deliveries (2.27).
The overall gap is 1.97 to 2.04 stars in every order value quarter.
02Method
How the figures were built.
Steps
- Joined 99,441 orders to their reviews on order_id. 99,224 reviews cover 98,673 orders; for the 547 orders with more than one review the most recently answered is used, and the 768 orders without a review are left out (98,673 orders used).
- Days late: the delivery date minus the estimated delivery date shown to the customer at purchase, in calendar days. Late means 1 day or more. 95,824 delivered orders have both dates; 8 marked delivered have no delivery date and are left out.
- Order value: item prices plus freight, in Brazilian reais, summed over the order's items.
- Review timing: the review's answer time against the delivery date, as calendar dates (the review creation date in the file is the day the survey was sent). Olist's own description of the data says the survey is emailed when the order arrives or when the estimated delivery date is due.
99,441 orders and 99,224 reviews; 95,824 delivered orders with a review for the delivery charts. Every figure on this page comes from the chart tables in data/analyses/late_deliveries.json, built from the Olist CSV files; the table under each chart says how.
Checks
- The orders and order items files match Kaggle's listed file sizes; the reviews file (downloaded Oct 12, 2026 from a GitHub copy) matches Kaggle's listed size and GitHub's own checksum for it.
- The SQL below, run in DuckDB 1.5.5, returns the counts, averages and one-star shares on this page. Every number was recomputed by separate code (verify_r4.py: plain Python and the csv module) and matches.
- Using each order's first review instead of its last gives on time or early 4.29 and late 2.27, the same as the page to two decimals.
- In all 19 purchase months from January 2017 with at least 30 late orders, late orders average lower than orders on time or early.
The queries
This series is not in Live SQL. The data file behind every chart is data/analyses/late_deliveries.json, built by data/analyses/scripts/build_r4.py (prep, DuckDB) and data/analyses/scripts/verify_r4.py (independent check, plain Python) from the source downloads.
Score by days late (DuckDB, the published CSV files)
-- Late deliveries against the review score (delivered orders with a review)
WITH review AS ( -- one review per order: the most recently answered
SELECT order_id, review_score
FROM (SELECT *, row_number() OVER (PARTITION BY order_id
ORDER BY review_answer_timestamp DESC, review_id) AS rn
FROM olist_order_reviews)
WHERE rn = 1
),
delivered AS (
SELECT o.order_id, r.review_score,
date_diff('day', o.order_estimated_delivery_date::DATE,
o.order_delivered_customer_date::DATE) AS days_late
FROM olist_orders o JOIN review r USING (order_id)
WHERE o.order_status = 'delivered' AND o.order_delivered_customer_date IS NOT NULL
)
SELECT CASE WHEN days_late <= 0 THEN 'On time or early'
WHEN days_late <= 3 THEN '1 to 3 days late'
WHEN days_late <= 7 THEN '4 to 7 days late'
ELSE '8 or more days late' END AS delivery,
count(*) AS orders,
round(avg(review_score), 2) AS avg_score,
round(100.0 * count(*) FILTER (WHERE review_score = 1) / count(*), 1) AS one_star_pct
FROM delivered
GROUP BY 1
ORDER BY min(days_late)
Caveats
- Real but anonymized orders from Olist, a Brazilian marketplace, 2016 to 2018. Almost every order has a review. The data shows that late orders score lower; it does not show why.
- The estimated delivery date is the date Olist showed the customer at purchase; most orders beat it by a week or more, so late means later than a cautious promise.
- 768 orders have no review and are left out; reviews are in the language the customer wrote, and their text is not analysed here.
Releases and revisions
- A fixed public release; it is not revised.
03Sources
Sources and licence.
- Brazilian E-Commerce Public Dataset by Olist Olist, on Kaggle. Orders, order items and order reviews. CC BY-NC-SA 4.0.
- GitHub copy (patterns-app/public_data) data/olist/olist_order_reviews_dataset.csv: the same size as Kaggle's listing, checked against GitHub's own checksum. Orders and items are the files the Lead conversion page uses.
Licence: CC BY-NC-SA 4.0. Credit: Olist. Non-commercial and share-alike. Public data.
Download the chart data
Each CSV is made in your browser from the rows in that chart's table.
04Contact
Want this kind of breakdown on your own data?
Open to e-commerce, data and operations roles. Los Angeles or remote.