At a glance
Order volume by hour-of-day (00 to 23), aggregated across the 90D window. Reveals when shoppers actually buy; the foundation for ad budget pacing, email send-time, and customer-service staffing.
| What it counts | COUNT(orders) GROUP BY hour(createdAt) over the 90D window. Each of 24 hour-buckets aggregates ~90 days of orders. |
| VAT / tax treatment | Not applicable, count metric. |
| Shipping | Not applicable. |
| Discounts | Not applicable. |
| Refunds | Not applicable; original order-creation hour is what counts. |
| Cancelled / voided orders | Included if Shopify indexed them. |
| Currency | Multi-currency safe (count metric). |
| Channels / sources | All channels. POS skews into store-opening hours; online has a different curve. The blended pattern hides channel-specific signals; filter by channel in Shopify Admin for clean reads. |
| Time window | 90D (default 90D rolling) |
| Alert trigger | None; descriptive distribution. |
| Roles | owner, marketing |
Calculation
Calculated automatically from your Shopify data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US homeware DTC brand on Shopify, predominantly online, customers in PT/MT/CT/ET zones. 90D window 12 Feb 26 to 12 May 26.| Hour band (UTC) | Local PT equivalent | Orders (90D) | Note |
|---|---|---|---|
| 04:00-08:00 | 21:00-01:00 PT (prev day) | 38,200 | Late-evening East Coast peak |
| 08:00-12:00 | 01:00-05:00 PT | 18,400 | Quiet, overnight |
| 12:00-16:00 | 05:00-09:00 PT | 24,800 | Morning starting |
| 16:00-20:00 | 09:00-13:00 PT | 32,500 | West Coast morning + East Coast lunch |
| 20:00-00:00 | 13:00-17:00 PT | 41,200 | Daytime peak |
| 00:00-04:00 | 17:00-21:00 PT | 56,800 | Evening peak, primary buying window |
- Evening dominates. Customers buy after dinner. The 18:00-21:00 PT slot accounts for ~40% of all daily orders. Email and social-ad budget should concentrate just before this window (16:00-18:00 PT).
- Lunch is a secondary peak. 12:00-13:00 PT shows a smaller second hump; customers browse and buy during lunch breaks. Less significant than evening but real.
- Time-zone blending. The brand serves four US time zones simultaneously. Each customer’s “8pm” is staggered three hours across the country. The aggregate peak is therefore wider (and shallower) than a single-time-zone shop’s peak. Filter to one ship-to region for cleaner per-zone reads.
- Overnight is dead. 02:00-05:00 PT (post-midnight) is when most US shoppers sleep; ~3-5% of daily volume. Don’t pace ads here; the CPCs may be cheaper but the conversion rate is poor.
- Workday weakness. 09:00-12:00 PT (morning workday) is softer than expected; people don’t shop while focused on work tasks. Brands targeting in-office workers see this dip clearly.
- Saturday afternoon spike. Aggregated across days, Saturday afternoons (12:00-15:00 PT) show a notable bump; weekend-leisure shopping is a real signature. Pair with Weekend vs Weekday for the day-level decomposition.
Sibling cards merchants should reference together
Peak Hours is the within-day pattern. The companions:| Card | Why pair it with Peak Hours |
|---|---|
| Revenue by Hour | Same shape but £-weighted. AOV-per-hour may differ from order-count-per-hour; pair to find premium-buying windows. |
| Revenue by Day of Week | Day-level cousin. Combine to find specific cells (e.g. “Tuesday 8pm”) rather than day-or-hour averages. |
| Weekend vs Weekday | The aggregated two-bucket version of DoW. |
| Total Orders | Denominator; for context. |
| Customer Countries | Geographic split; multi-region stores see blended pattern shift if region mix shifts. |
| Top Discount Codes | Promo-driven hours often spike at email-send time; cross-reference. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin: Shopify exposes hour-level granularity in:- Analytics → Live View: real-time map and order-by-hour ticker (today only).
- Analytics → Reports → “Sessions over time” with hourly granularity: traffic by hour.
- Reports → Sales over time with hourly granularity (Shopify Plus only): orders by hour.
- Apps like Glew, Polar Analytics: typically expose hourly distribution charts.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Shifted bucket | Shopify Admin uses store time zone; we use UTC. Each hour bucket represents different local time. Convert manually for comparison. |
| Granularity | Same | Both bucket by hour. |
| Channel filter | Either | Reports filtered to “Online Store” only differ from this blended figure. |
| Customer time zone | Same | Both record createdAt from the server’s perspective; the customer’s local time is not stored separately. |
| Sync lag | Ours lower for “today” | Most-recent 5 to 15 minutes of orders may not be in. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_analytics.ga_sessions_by_hour | Should track shape | GA4 measures sessions, not orders. Sessions peak earlier than purchases (browsing then buying lag). |
klaviyo.kl_email_engagement_by_hour | Use to align send times | Email-send-time should be 1-3 hours before peak buy time for maximum revenue lift. |
Known limitations / merchant FAQs
Why is the chart in UTC instead of my local time? Vortex IQ uses UTC for all time-series for consistency across stores in different time zones. To convert: identify your store’s primary customer time zone, subtract the UTC offset (PT = -8 winter / -7 summer; ET = -5/-4; BST = +1; CET = +1/+2). The chart is a fixed shape; the labels just shift. My peak time is unusual. Is it a problem? Patterns are category-driven:- Apparel and beauty: 19:00-22:00 local (post-work, leisure browsing).
- Food and grocery: 17:00-19:00 local (pre-dinner planning).
- B2B: 09:00-15:00 local (in-office hours).
- Subscriptions: spread by billing-day cycles, less hourly variation.
- Mobile-first impulse (TikTok-driven): 21:00-00:00 local (late-evening scroll-to-buy).
- Identify your top-3 peak hours: ad budget should pace 1.5-2× normal during these hours.
- Identify the lull windows (>50% below peak): reduce ad-spend; experiment with budget elsewhere.
- Email send timing: 1-3 hours before peak hour is typical optimal. Test 2-3 windows with A/B; what works varies meaningfully by category.
- Customer-service staffing: roughly track buy hours plus 24-48h lag (queries about today’s orders peak tomorrow morning).
- Inventory replenishment: PO arrivals timed to land before peak hours (warehouse can pick the resolved-OOS SKUs same-day).
- Site reliability: monitor server load and CDN health intensively during peak; downtime during peak hour costs disproportionately more than off-peak.