If you build or maintain Shopify apps that rely on the GraphQL Admin API, the latest exclusive timestamp filter change is something you need to understand right away. Starting with API version 2026‑10, a filter using the greater‑than operator (>) no longer includes records that fall within the same second you specify. This seemingly small shift can cause missed orders, shipments, or any time‑based data if your queries aren’t updated. In this post we’ll break down what changed, who is affected, and the concrete steps you should take before moving to the new version.
What Changed in API version 2026‑10
Previously, when you wrote a filter like created_at:>'2026-09-15T12:00:02Z' the GraphQL engine compared the literal 2026‑09‑15T12:00:02.000000 against the stored timestamp. Because many resources store timestamps with fractional seconds (e.g., 2026‑09‑15T12:00:02.500Z), the query would return records created later in that same second, even though the API displayed them as 2026‑09‑15T12:00:02Z. In effect, the exclusive ‘>’ bound overlapped with the inclusive ‘<=’ bound for that second.
With the 2026‑10 update, if the value you pass to a ‘>’ filter does not contain fractional seconds, the filter starts after the entire second (i.e., 12:00:02.999999). Consequently, a record whose visible createdAt value is 2026‑09‑15T12:00:02Z will no longer match created_at:>'2026-09-15T12:00:02Z'. This change isolates the exclusive and inclusive bounds, eliminating the overlap but also introducing a potential “gap” for records that sit in the same second.
Who Is Affected
The impact is limited to developers—specifically, any app or custom integration that builds a GraphQL query with a ‘>’ timestamp filter without fractional seconds. Typical use‑cases include:
• Sync jobs that fetch “new” orders, customers, or fulfillment events by passing the last seen createdAt as a ‘>’ bound.
• Pagination strategies that rely on the timestamp of the last node in a result set.
• Any background process that stores a timestamp string and re‑uses it verbatim in a subsequent query.
How the New Logic Affects Your Queries
Consider a sync that runs every minute. The job stores the timestamp of the newest order it processed, say 2026‑09‑15T12:00:02Z, and then queries for newer orders using created_at:>'2026-09-15T12:00:02Z'. Under the pre‑2026‑10 behavior, an order created at 12:00:02.500 would be returned, ensuring no gaps. After the update, that same order is excluded because the exclusive filter now starts after 12:00:02.999999. If you continue to use the same query pattern, you’ll miss every record that lands in the same second as the stored cursor – a subtle bug that can cascade into data inconsistency, missed fulfillment, or inaccurate analytics.
Actionable Steps for Your Apps
graphql
query OrdersSinceLastSync {
orders(first: 50, sortKey: CREATED_AT, query: "created_at:>='2026-09-15T12:00:02Z'") {
nodes {
id
createdAt
}
}
}
Using ‘>=’ ensures the record with exactly 12:00:02Z is included. To avoid duplicate processing, de‑duplicate on the id field after the fetch.
Testing Before You Upgrade
Set up a staging environment that runs API version 2026‑10. Run your existing sync job against a sandbox store populated with orders that have fractional‑second timestamps (you can create them via the Admin API using the created_at field with millisecond precision). Compare the result set against the same job on version 2026‑07. Any discrepancy points to a filter that needs the ‘>=’ or fractional‑second adjustment.
If you use GraphQL Explorer, you can manually test a query like:
graphql
{ orders(first: 5, query: "created_at:>'2026-09-15T12:00:02Z'", sortKey: CREATED_AT) { edges { node { id createdAt } } } }
Observe whether an order with createdAt "2026-09-15T12:00:02.500Z" appears. If it doesn’t, you know the exclusive filter is behaving as documented and you need to adjust your logic.
Conclusion & Next Steps
The exclusive timestamp filter tweak in API version 2026‑10 is a precision‑focused improvement that protects you from accidental overlap, but it also requires a small code change for many sync‑heavy apps. By swapping ‘>’ for ‘>=’ (or by preserving fractional seconds), you eliminate the one‑second blind spot and keep your data pipelines reliable.
Ready to update your app? Review your GraphQL queries today, run the staging tests, and push the changes before you bump to the new API version. Need a hand or have questions about edge‑case handling? Drop a comment below or reach out to the Shopify developer community – we’re all in this together!
