From January to November 2024, I used the legacy version of Shopify Analytics to track my warehouse team’s performance. Specifically, I relied on the “Time to Fulfill” report, which provided the median time (from order placement to fulfillment) for orders fulfilled on a given day. I would run this report daily and record the metrics in my spreadsheet.
In late December, my store transitioned to the new ShopifyQL Analytics. Since then, I have been unable to recreate the “Time to Fulfill” report as it existed in the legacy version. Shopify Support provided instructions to generate a similar report, but the results do not match my previously tracked data.
My goal is to generate a report that includes:
The total number of orders fulfilled on a specific date.
The median “time to fulfill” for those orders fulfilled on that date.
Could anyone assist me in accurately recreating this report in ShopifyQL Analytics? If additional details or clarification are needed, let me know.
Recreating the “Time to Fulfill” report in ShopifyQL Analytics sounds like an important task for tracking your warehouse performance. While I can’t provide a ready-made solution without knowing all the specifics of your data and how your legacy report was configured, here’s an overview of what’s typically required to resolve this.
First, you’ll need to map out and review the data fields used in your legacy report. This involves identifying the exact fields in ShopifyQL that correspond to the data you previously tracked. For instance, fulfillment times may now be stored in different formats or fields, so it’s essential to confirm how ShopifyQL defines and calculates “fulfillment time” to ensure it aligns with your legacy data.
Next, designing a custom ShopifyQL query will be necessary. The query should extract the total number of orders fulfilled on specific dates and calculate the median fulfillment time for those orders. You may also need to include filters to exclude unfulfilled or canceled orders and use grouping logic to break down the data by fulfillment date.
Once you’ve drafted a query, the output will need to be validated and cross-checked against your legacy data. Exporting the results to a spreadsheet and running side-by-side comparisons for a sample date range can help identify inconsistencies. If discrepancies arise, it’s important to determine whether they stem from differences in data sources, calculation methods, or ShopifyQL’s functionality.
Finally, expect some iteration in refining your query. Small adjustments to filters, grouping, or aggregation methods can often resolve inconsistencies.
I wish I could just offer a ready-made solution, but this will require a deeper dive. If you’d like, I’d be happy to help you resolve your reporting issue. Feel free to email me at martin.dejnicki@deploi.ca.
Here’s how you can get your “Time to Fulfill” metrics both natively in ShopifyQL and with ToolsForShop—so you can pick whichever fits your workflow best.
1. ShopifyQL Method
Open ShopifyQL Explorer
In Shopify Admin: Analytics → Explore → New query → ShopifyQL.
Run this Query
SELECT
DATE(fulfilled_at) AS fulfillment_date,
COUNT(*) AS total_orders,
MEDIAN(
TIMESTAMP_DIFF(fulfilled_at, created_at, MINUTE)
) AS median_time_to_fulfill_minutes
FROM orders
WHERE
fulfillment_status = 'fulfilled'
AND fulfilled_at IS NOT NULL
/* To limit to one date, uncomment:
AND DATE(fulfilled_at) = DATE("2024-12-15")
*/
GROUP BY
DATE(fulfilled_at)
ORDER BY
DATE(fulfilled_at) DESC
LIMIT 30
total_orders = # of orders fulfilled each day
median_time_to_fulfill_minutes = your median “Time to Fulfill” in minutes
Export & Schedule
Export as CSV or pin the chart to your dashboard.
Use Shopify’s scheduled reports to email yourself daily snapshots.
In ToolsForShop Dashboard → Analytics → Fulfillment Insights.
Toggle on “Time to Fulfill” analytics.
Configure Your Metrics
Date Range: Daily, weekly, or custom.
Metrics:
Total Fulfilled Orders
Median Time to Fulfill (in minutes or hours—you choose).
Automated Reporting & Alerts
Schedule PDF/CSV reports to your inbox or Slack at a set time each day.
Set Threshold Alerts: e.g. “Alert me if median time > 120 minutes.”
Deep Dive & Export
Click into any date to see the underlying order list, fulfillment timestamps, and drill into outliers.
Export raw data or push directly to BigQuery / Google Sheets with one click.
Why ToolsForShop Helps
Zero-Code Setup: No need to remember SQL syntax—Metrics are ready out of the box.
Lifetime Consistency: Tracks across any number of orders—past, present, or future—so you never miss a cumulative total.
Flexible Scheduling: Email, Slack, or CSV—whichever fits your team’s workflow.
Actionable Alerts: Proactively catch fulfillment slow-downs before they impact customers.
Choose ShopifyQL if you want hands-on control via custom queries. Choose ToolsForShop if you want a turnkey dashboard with scheduled reports, alerts, and deep drill-downs—no code required.