A lower cart-to-purchase median can come from the clock you choose
The same recorded purchases produced two different medians in a historical store log. A paired comparison shows where the difference came from.
Original analysis of recorded user-product pairs in REES46’s November 2019 cosmetics-store event log.
Abstract
Two reports can use the same purchases & show different median times from cart to purchase. We tested that in one cosmetics store’s November 2019 event log. Across 193,397 recorded user-product pairs with a purchase within 7 days, the median was 44 minutes 16 seconds from the first observed cart event & 36 minutes 48 seconds from the last preceding cart event. Both clocks ended at the same recorded purchase.
Yet 82.4% of pairs had identical clocks, & the median difference calculated within pairs was zero. The 7 minutes 28 seconds between the overall medians does not describe the typical change for one pair. For businesses & creators comparing reports, the first question is what starts the clock. This historical single-store example examines that reporting choice; it does not test reminders or changes to checkout.
Imagine a small notebook shop reviewing a monthly report. One summary says the typical interval from adding a product to purchasing it was about 44 minutes. Another says about 37 minutes. Before the owner changes the commentary beside that number, the analyst needs to settle a basic question: which cart event started each clock?
A product can have several cart events under the same recorded user ID. Starting at the first observed event includes the time before later cart actions. Starting at the last event before purchase leaves that earlier span outside the interval. Both calculations can be correct while describing different things.
We compared those two definitions in a public cosmetics-store event log supplied by REES46. The analysis keeps each recorded user-product purchase fixed, then changes only the preceding cart event used as the starting point. That lets us measure the difference between the clocks without treating it as a change in purchasing behavior.[1][2]
For a business or creator selling products, the useful decision is how to describe & compare the report. A change in the displayed median deserves an explanation of the event rule, the group included & the observation window before it becomes a statement about store performance. The paired results show why those details belong beside the number.
Two starting points can share one endpoint

The same purchases produced two different medians
The comparison contains 193,397 matched user-product pairs, representing 23,692 recorded user IDs. Each pair has a first usable November cart event & a later recorded purchase within 7 days. A user can contribute several products, so the pair count is not a count of people, carts or orders.
For each pair, the first clock begins at its earliest observed November cart event. The second begins at its latest cart event strictly before the same purchase. “First” therefore means first in this November file, not first-ever interest in the product. The purchase endpoint stays unchanged.
Three distributions: first clock, last clock & paired difference
193,397 matched recorded user-product pairs in the November 2019 cosmetics-store log. All durations below are in minutes.
| Percentile | First-cart clock (minutes) | Last-cart clock (minutes) | Within-pair difference (minutes) |
|---|---|---|---|
| 10th percentile | 5.52 | 4.60 | 0.00 |
| 25th percentile | 13.60 | 11.47 | 0.00 |
| 50th percentile (median) | 44.27 | 36.80 | 0.00 |
| 75th percentile | 676.92 | 404.70 | 0.00 |
| 90th percentile | 3,160.50 | 2,740.70 | 4.10 |
The first-clock median was 2,656 seconds, or 44 minutes 16 seconds. The last-clock median was 2,208 seconds, or 36 minutes 48 seconds. Subtracting those two summaries gives 448 seconds: 7 minutes 28 seconds.
The within-pair differences tell a different story: their median was zero. A report’s middle value & the change to an individual record are different summaries. The next sections show why both results can be correct.
The table keeps the two clocks & the differences within pairs in separate columns. Each column is ranked separately, so a row does not identify the same pair occupying that position in all three lists.
For 82.4% of matched pairs, the clocks were identical
For 159,358 pairs, both clocks began at the same distinct cart timestamp. Their difference was zero. These pairs accounted for 82.4% of the matched group, which explains why the median paired difference was zero even though the two clock medians differed.
The remaining 34,039 pairs, or 17.6%, had at least two distinct cart timestamps before the fixed purchase. Among this smaller group, the median difference between the clocks was 469 seconds: 7 minutes 49 seconds. That conditional median describes these 34,039 pairs, not all 193,397.
Most matched pairs had the same starting timestamp
A common base of 193,397 matched recorded user-product pairs; counts & percentages refer to pairs, not unique people.
| Relationship between clocks | Recorded user-product pairs | Share of all matched pairs |
|---|---|---|
| Identical clocks: one distinct preceding cart timestamp | 159,358 | 82.4% |
| Different clocks: at least two distinct preceding cart timestamps | 34,039 | 17.6% |
The two ways of identifying this smaller group are equivalent. If there is more than one distinct preceding cart timestamp, the last one is later than the first, so its elapsed clock is shorter. The useful measured information is how often that happened & the size of the recorded span. The direction itself follows from the definitions.
An identical clock means the same recorded cart timestamp supplied both starts. It does not describe every step in the shopping history. Several cart actions also leave their purpose unresolved: the source has no quantity field to explain what changed between them.
The median can move even when most pairs do not
A small example makes the distinction easier to see. Take 3 invented user-product records, with all durations measured in minutes. Their first-cart durations are 10, 20 & 30. For the first 2 records, the last-cart durations are still 10 & 20. For the third, starting at a later cart event gives a duration of 5.
The first report sorts its durations as 10, 20, 30. Its middle value, the median, is 20. The second sorts them as 5, 10, 20. Its median is 10. Only 1 of the 3 records changed, but that was enough to change which value sits in the middle of the ranked list.
Now compare each record with itself. The differences are 0, 0 & 25. The middle of that list is zero. The difference between the report medians is 10, while the median difference within records is zero. Both statements follow directly from these invented values.
The larger store-log result works on the same principle. Its medians summarize whole distributions; the paired differences preserve each purchase as its own comparison. Reading the smaller median as the amount a typical purchase “sped up” would confuse those two questions. No purchase endpoint changed in our analysis.
A reporting interval changed for 4.5% of matched pairs
A team may summarize durations in intervals as well as a median. We used three fixed descriptive intervals: under 1 hour, 1 hour to under 1 day, & 1 day through 7 days. These are illustrative report groupings, not proposed times for an email or another message.
Changing the starting event moved 8,749 matched pairs into an earlier interval, or 4.5% of all 193,397. Of these, 3,841 moved from the middle interval to under 1 hour; 3,020 moved from the longest interval to under 1 hour; & 1,888 moved from the longest to the middle interval.
The complete first-clock & last-clock interval cross-tab
All 9 combinations are shown. First & last refer to the cart event starting the clock; the recorded purchase endpoint stays fixed.
| First-clock interval; last-clock interval | Recorded user-product pairs | Share of all matched pairs |
|---|---|---|
| First clock: under 1 hour; last clock: under 1 hour | 106,722 | 55.2% |
| First clock: under 1 hour; last clock: 1 hour to under 1 day | 0 | 0.0% |
| First clock: under 1 hour; last clock: 1 day through 7 days | 0 | 0.0% |
| First clock: 1 hour to under 1 day; last clock: under 1 hour | 3,841 | 2.0% |
| First clock: 1 hour to under 1 day; last clock: 1 hour to under 1 day | 48,555 | 25.1% |
| First clock: 1 hour to under 1 day; last clock: 1 day through 7 days | 0 | 0.0% |
| First clock: 1 day through 7 days; last clock: under 1 hour | 3,020 | 1.6% |
| First clock: 1 day through 7 days; last clock: 1 hour to under 1 day | 1,888 | 1.0% |
| First clock: 1 day through 7 days; last clock: 1 day through 7 days | 29,371 | 15.2% |
Most pairs remained in the same reporting interval. That includes some whose exact duration changed but did not cross an interval boundary. The interval table & the identical-clock table therefore answer different questions: did the numerical duration change, & did the report place the pair in another group?
Every percentage in this cross-tab uses all 193,397 matched pairs. For example, the 3,841 pairs moving from the middle interval to under 1 hour represent 2.0% of the whole matched group. They are not 2.0% of the middle row. Keeping the common denominator visible makes the table usable alongside the overall comparison.
One invented notebook purchase, two elapsed times
Consider Paper Orchard, a fictional notebook shop. The timeline & reporting brief below are invented examples, separate from the cosmetics-store results. Assume all 3 events carry the same recorded user & product identifiers, & all times are UTC.
Monday, November 4, 09:00: a cart event is recorded for a notebook. Tuesday, November 5, 09:00: another cart event is recorded for that notebook under the same user ID. Tuesday, November 5, 09:30: a purchase event is recorded.
The first-cart clock measures 24 hours 30 minutes. The last-cart clock measures 30 minutes. The within-pair difference is 24 hours, exactly the span between the two cart timestamps. The purchase remains Tuesday at 09:30 in both calculations.
The example explains the event arithmetic without supplying a basket history. It does not tell us whether the notebook remained in a cart overnight, whether quantities changed or whether the purchase became a fulfilled order. A report can name the two elapsed intervals without filling those gaps with a story about the shopper.
A completed reporting brief for the fictional shop
Paper Orchard’s analyst can give the owner a completed explanation of the two durations. This handoff uses the single notebook record above, so it concerns that purchase rather than a monthly median.
Purpose: explain why 2 timing summaries of the same notebook purchase differ. The owner needs to describe the report accurately before using it in campaign commentary.
Record & window: the single fictional user-notebook pair shown above, November 4–5, UTC. Keep the Tuesday 09:30 purchase fixed. The record fits within the example’s 7-day follow-up window. It supplies no earlier lifetime history.
Starting events: label one measure “Time from first observed cart” & the other “Time from last cart before the same purchase.” Preserve both timestamps in the analyst’s source record. Do not shorten both labels to “purchase time,” which would conceal their different meanings.
Completed comparison: first-cart interval, 24 hours 30 minutes; last-cart interval, 30 minutes; paired difference, 24 hours. The report can say: “These two intervals end at the same recorded purchase. Their difference comes from using different cart events as the starting point.”
Owner’s interpretation: place that explanation beside the comparison. The shorter interval describes time since the later recorded cart action. It supplies no evidence that checkout improved or that the notebook stayed continuously in a cart overnight.
Next report: the analyst will carry the chosen event labels, UTC time basis & fixed follow-up rule into the next comparison. If the definition changes, the owner will describe that change before comparing the headline numbers. Any assessment of messages or promotions needs its own evidence.
Read the clocks & their paired differences separately

Hold the purchase fixed
Use the same recorded user-product purchase as the endpoint for both clocks.
Name both starting events
Compare the first observed cart with the last cart strictly before that purchase.
Keep the summaries distinct
Read each clock’s distribution separately from the differences calculated within pairs.
This brief gives a creator or small store something concrete to resolve with a reporting partner: what each duration starts from & what it ends at. It leaves the commercial explanation open until there is evidence for it, while still stating the measured interval directly.
Keep the event rule visible when comparing reports
The same issue can arise when an agency & a shop use different reporting tools, or when a new export contains a different length of history. A shared label such as “cart-to-purchase time” does not establish that the same starting event, purchase match or observation window sits behind both numbers.
For an owner comparing monthly reports, this matters before a trend is described. If one month starts at the first observed cart & the next starts at the last cart before purchase, the series combines 2 definitions. A lower number can then reflect the changed rule alongside any other differences between months. Our fixed-purchase comparison isolates the definition difference; it does not measure a month-to-month performance change.
When a reporting tool or export changes, keep the definition change visible in the handoff. The useful question is whether the old & new summaries describe the same thing. If the available histories also differ, name that difference separately. A first-observed event depends on where the retained history begins, even when its label sounds like the start of a customer’s whole journey.
Analytics tools already make explicit choices about funnel entry & conversion matching. Amplitude, for example, documents earliest-entry rules within a session or lookback window, together with how qualifying conversion paths are selected. Those definitions provide context for reading a report; our 2-clock calculation does not recreate an Amplitude report.[3]
The choice can still be deliberate. A first-observed-cart interval describes the recorded span from that initial event. A last-preceding-cart interval describes time since the most recent recorded cart action before the purchase. A business can choose the measure that answers its reporting question, then keep that meaning stable across comparisons.
The label should carry the distinction into the report the owner actually reads. “Median time from first observed cart” & “Median time from last cart before purchase” communicate different starts. Calling both simply “purchase time” removes the information needed to understand why they disagree. Keep the included group & follow-up window nearby as well.
This is especially useful when a creator or small business relies on someone else to prepare the analysis. The owner does not need to inspect every event to ask for a clear definition. The reporting partner should be able to explain which start, endpoint & eligible records produced the number before attaching a commercial interpretation to it.
For the study above, the supported interpretation is specific: the same recorded purchases had different elapsed-time summaries under 2 starting rules. Deciding whether a product page, a promotion or a recovery message improved the buying experience requires evidence about that separate change.
How the paired comparison was calculated
We used the November 2019 file in version 6 of the public cosmetics-store release. It contains 4,635,837 event rows with view, cart, remove_from_cart & purchase labels. Timestamps were UTC, with records on every November day. This documents the supplied file’s coverage, not proof of continuous tracking for each person.[1][2]
There were 1,061,242 recorded user-product pairs with a cart event. We retained first usable November carts from November 1 through November 23, requiring 7 days through the observed file end. The 270,024 pairs first carted later in November were outside this cohort. None of the date-eligible pairs failed the file-end requirement.
Of 791,218 eligible pairs, 193,397 had an unambiguous later recorded purchase within that fixed horizon. The other 597,821 were unpaired within 7 days. They are not observed abandoned carts: a purchase might occur later, go unrecorded or use another identifier. The timing figures are conditional on the matched group, not a conversion or abandonment rate.
We selected the earliest purchase at or after the first cart, through the inclusive 7-day endpoint. A purchase tied with the first cart, or any cart tied with that candidate purchase, would be excluded as ambiguous without substituting a later purchase. No such cases occurred. Repeated identical selected event tuples were collapsed; removals did not reset an assumed cart state.
The release contains no cart ID, order ID, quantities or return status. Previous research on the same log has examined sessions & reconstructed cart state through process mining. Our calculation instead compares two observed event origins for one fixed user-product purchase, without reconstructing a basket.[4]
We fixed the cohort, horizon, tie rules & descriptive intervals before calculating the outcomes. Percentiles use linear interpolation. The figures describe the eligible records without population confidence intervals or causal inference. The download supplies aggregate results, exact definitions & reproduction code, with no source user-product histories.[5]
No sign-up required. The shared ZIP contains aggregate results in seconds & English technical reproduction instructions. Article text, the worked example, the completed brief & the displayed-results CSV are available in every article language. No source event rows or user-product histories are included.
Sources & notes
- Michael Kechinov, eCommerce Events History in Cosmetics Shop, Kaggle dataset 426888, version 6; fixed file 2019-Nov.csv. The producer describes a medium cosmetics online store & UTC event times. The card permits free use with links to Kaggle & REES46; data copyright remains with the original authors. Influence IQ calculated the aggregates.
- REES46’s official dataset directory links the cosmetics behavior release for October 2019–February 2020. This article uses only the November 2019 file. The source describes event records, not a representative sample of current stores or consumers.
- Amplitude, How Amplitude computes conversions through funnels. Official documentation on entry, lookback/session boundaries & qualifying conversion selection. These native product definitions provide context, not validation of an equivalent Amplitude report.
- Bilal Topaloglu, Basar Oztaysi & Onur Dogan, Cart-State-Aware Discovery of E-Commerce Visitor Journeys with Process Mining, Journal of Theoretical and Applied Electronic Commerce Research 19(4), 2024, pp. 2851–2879, DOI 10.3390/jtaer19040138. The paper examines session/journey analysis & cart-state enrichment in the same event-log source. Its session-based comparison differs from the fixed-purchase timing comparison here.
- Influence IQ analysis package: canonical aggregate seconds, full interval cross-tab, cohort accounting, definitions, source identifiers & reproduction code. No source event rows or user-product histories are included.
Every language edition describes the same historical cosmetics-store log. Translation does not create estimates for another country, market or period.