Blog · Board and management reporting
Compare late deliveries, returns, repeat contacts, and subsequent purchases from order exports. Build matched order cohorts, calculate contribution, and check the totals before choosing an improvement.
Ecommerce customer experience analysis compares delivery and service problems with the money an order leaves behind and whether its customer buys again. Start with matched order records, rather than an overall satisfaction average. Keep the later purchase window equal for every customer.
A US homewares seller selects orders delivered September 1–7, 2026. Each customer has one selected order, and every order has a complete 30-day follow-up window. The analysis closes after October 7, 2026. These dates define the example, not a recommended buying cycle.
Export order ID, customer ID, promised delivery date, actual delivery date, net revenue, item cost, and fulfillment cost. Separately export refunds and customer-initiated contacts. Reduce those records to one summary per order before attaching them. Otherwise, an order with several contacts repeats its revenue several times.
Keep a customer-level subsequent-purchase flag separate from index-order revenue. For customers with multiple eligible orders, select one index order under a written rule; otherwise the same later purchase can appear as several successes. Use ecommerce customer segmentation when purchase history is the grouping question.
The first table occupies A1:E9 in Google Sheets. Late means actual delivery after the promised date. Returned means the order was fully returned within follow-up. Repeat contact means at least two customer contacts about that order. Later purchase means another paid order within 30 days of delivery.
| Order | Late flag | Returned flag | Contacts | Later purchase flag |
|---|---|---|---|---|
| A | 1 | 0 | 2 | 0 |
| B | 1 | 1 | 3 | 0 |
| C | 1 | 0 | 2 | 1 |
| D | 0 | 0 | 0 | 1 |
| E | 0 | 0 | 1 | 1 |
| F | 0 | 1 | 2 | 0 |
| G | 0 | 0 | 0 | 1 |
| H | 0 | 0 | 1 | 0 |
For an actual delivery date in P2 and promised date in O2, use =IF(OR(P2="",O2=""),"",--(P2>O2)). A blank stays unknown and goes on an exception list, rather than becoming on time.
Calculate the late-order count, late-order return rate, and late-order repeat-contact rate:
=COUNTIFS(B2:B9,1)
=COUNTIFS(B2:B9,1,C2:C9,1)/COUNTIFS(B2:B9,1)
=COUNTIFS(B2:B9,1,D2:D9,">=2")/COUNTIFS(B2:B9,1)
Google documents COUNTIFS as a count across multiple criteria, with matching range sizes. Change the late criterion to zero for the on-time group. Replace the return condition with E2:E9,1 for the later-purchase rate. Report a blank or an explicit unavailable label when a group has no eligible orders.
Put these financial columns in F:J beside the corresponding orders. Net revenue is after refunds and excludes sales tax. Returned goods are restored to inventory in this example, so returned-order item cost is zero; fulfillment includes the outbound and return handling already incurred.
| Order | Net revenue (USD) | Item cost (USD) | Fulfillment (USD) | Service cost (USD) | Contribution (USD) |
|---|---|---|---|---|---|
| A | 100 | 55 | 8 | 12 | 25 |
| B | 0 | 0 | 16 | 18 | -34 |
| C | 120 | 60 | 8 | 12 | 40 |
| D | 80 | 40 | 8 | 0 | 32 |
| E | 150 | 75 | 8 | 6 | 61 |
| F | 0 | 0 | 16 | 12 | -28 |
| G | 90 | 45 | 8 | 0 | 37 |
| H | 110 | 55 | 8 | 6 | 41 |
| Total | 650 | 330 | 80 | 66 | 174 |
Service cost assumes $6 per contact. It is an illustrative allocation rate, not an industry benchmark. In I2 enter =D2*6; in J2 enter =F2-G2-H2-I2, then fill down. For actual driver rates and their limits, use cost to serve per customer.
Sum late-order contribution and divide by its order count:
=SUMIFS(J2:J9,B2:B9,1)
=SUMIFS(J2:J9,B2:B9,1)/COUNTIFS(B2:B9,1)
SUMIFS adds values meeting the stated criteria. Use the same ranges and eligibility rules for every measure. Covirage is not affiliated with Google.
| Delivery group | Orders | Return rate | Repeat-contact rate | Later-purchase rate | Contribution (USD) | Contribution/order (USD) |
|---|---|---|---|---|---|---|
| Late | 3 | 33.3% | 100.0% | 33.3% | 31 | 10.33 |
| On time | 5 | 20.0% | 20.0% | 60.0% | 143 | 28.60 |
Rates are rounded to one decimal; per-order dollars to two. The late return rate is 1 / 3, its repeat-contact rate is 3 / 3, and its later-purchase rate is 1 / 3. The on-time counts are respectively 1 / 5, 1 / 5, and 3 / 5.
The proof is 3 + 5 = 8 orders and $31 + $143 = $174 contribution. Independently, $650 − $330 − $80 − $66 = $174. Reconcile these amounts to the selected order, refund, and cost records before publishing the comparison.
The late group merits a delivery and support review. Its lower contribution does not establish that lateness caused the gap: order values and returns also differ. Read the underlying records with operations, choose a specific change, and compare equivalent future cohorts. Use the lost customer review timeline for customer-level investigation and a customer experience dashboard for ongoing presentation.
Bring an order export with related return, contact, and cost summaries. Covirage maps the columns; its tools compute and check the comparisons, and the external AI model explains them with every figure traced to its rows. Create a free Covirage account and bring a sample of your own data.
See customer profitability for the contribution perspective behind the review.
Use orders with customer identifiers, promised and actual delivery dates, refunds, and direct costs. Add support contacts linked to orders and later purchases linked to customers. Keep the original order identifier so returns and contacts cannot multiply the financial rows.
Count distinct customer contacts concerning the same order within a declared window. Flag an order when that count reaches your chosen threshold. Exclude automatic notifications and duplicate ticket records, and distinguish a reopened case from a separate customer contact.
No. Product mix, acquisition source, discounts, and customer history can differ between delivery groups. Use the comparison to choose records for review, then compare similar cohorts and evaluate a specific process change before attributing the difference to delivery.