Set up a Shopify export, then choose tabs, columns, and a date range. Use the data reference when you need every field spelled out.
Create a Shopify export and pick tabs, columns, and a date range.
See every available field for each Shopify tab.
How Orders, Line Items, and refunds are filtered.
After connecting your Shopify store, configure exports to send store data to Google Sheets, BigQuery, or Excel. Start with a few tabs, run the export once, then add more fields as you need them.
The Shopify export configuration screen
The date range applies to Orders, Line Items, Orders + Line Items, Customers, Sales Metrics, Product Analysis, Refund Analysis, Refund Line Analysis, Gift Cards, Payouts, Balance Transactions, and all Analytics tabs. Products, Store, Locations, Inventory, Inventory Locations, Collections, Discounts, Customer Segments, and Metaobjects always export current data (full snapshot each run).
Shorter ranges run faster. Common options include:
The date range dropdown also includes Today, Yesterday, Last 3 / 14 / 28 / 90 days, Last 6 months, Last month, and This quarter.
Each data type writes to its own tab, worksheet, or BigQuery table. Enable a tab by selecting columns for it.
The tab interface for configuring different data types
Full column lists: Shopify data reference.
On each tab, choose the fields to include. Use Select All or Deselect All to start from a full or empty set, then keep only what you need.
The column selection interface for a data tab
Some tabs also offer JSON variants of list fields for BigQuery and scripts. See Segment and list JSON columns. For refunds, totals, and date columns, see Advanced features.
Use append for data you want to track over time (orders, sales metrics). Use replace for current-state data (inventory, products).
On the Orders and Line Items tabs you can control which Shopify orders are fetched for the export date range.
Chooses which Shopify date the export range applies to. Separate from append vs replace, and from optional status filters.
Use Add filter to narrow by fulfillment, payment, order status, order location, order tags, or product tags. Leave empty to export all orders in the date range. If you pick more than one value in the same status or location filter, an order is included when it matches any of them. Order tags must all be on the order. Product tags match when any product on the order has any tag you enter. On Orders, the whole order is included. On Line Items, matching product and refund rows are included, and shipping rows are left out while that filter is on.
UI labels follow Shopify admin order statuses where the meaning is the same. The Order location filter lists locations from your connected store (you pick names; SyncRange sends Shopify location IDs). Behind the scenes SyncRange sends Shopify Admin API search tokens for status, location, and order tags.
| Filter | Label in SyncRange (Shopify admin style) | API search token |
|---|---|---|
| Order status | Open | status:open |
| Archived | status:closed | |
| Canceled | status:cancelled | |
| Not closed | status:not_closed | |
| Order location | Names from your Shopify locations (same idea as the location selector on the Orders page) | reference_location_id: |
| Payment status | Authorized | financial_status:authorized |
| Expired | financial_status:expired | |
| Paid | financial_status:paid | |
| Partially paid | financial_status:partially_paid | |
| Partially refunded | financial_status:partially_refunded | |
| Pending | financial_status:pending | |
| Refunded | financial_status:refunded | |
| Voided | financial_status:voided | |
| Fulfillment status | Fulfilled | fulfillment_status:fulfilled |
| Unfulfilled | fulfillment_status:unfulfilled | |
| Partially fulfilled | fulfillment_status:partial | |
| Scheduled | fulfillment_status:scheduled | |
| On hold | fulfillment_status:on_hold | |
| Request declined | fulfillment_status:request_declined | |
| Unshipped | fulfillment_status:unshipped | |
| Shipped | fulfillment_status:shipped | |
| Order tags | Comma-separated order tags | tag:'…' (each tag ANDed) |
| Product tags | Comma-separated product tags | Any listed tag. Orders: include the order if a product matches. Line Items: include matching product and refund rows, and leave out shipping rows. |
Open a topic below if you need refunds, JSON columns, Shopify Payments, or metafields.
Orders and Line Items use slightly different filters for the same date range:
| Scenario | In Orders? | Products + Shipping in Line Items? | Refund row in Line Items? |
|---|---|---|---|
| Order created in window, never refunded | Yes | Yes | n/a |
| Order created in window, refunded in window | Yes | Yes | Yes |
| Order created in window, refunded before the window | Yes (Total Price already reflects the refund; Refunded Amount is populated) | Yes | No (refund happened in an earlier window) |
| Order created before the window, refunded in window | No | No | Yes (Order Date on the refund row is the original order date, outside the window) |
| Order created in window, refunded in a future window | Yes | Yes | No (refund has not been processed yet) |
created_at. Total Price, Subtotal, and Refunded Amount reflect the order's current state (all-time refunds included).created_at filter.refund.createdAt).If you sum Total Price on Orders and on Line Items for the same window, they may not match exactly. Use Refunded Amount to see how much of an order has been refunded. If an order has a refunded amount but no matching Refund rows in Line Items, the refund happened in an earlier window. Widen the date range to include the refund's processed date.
Line Items totals: Total Price is the net price after line-level discounts for product and shipping rows (it equals Discounted Price). Order-level discounts are not subtracted from line totals; they appear as Order Discount Amount (prorated on the line) and on the Orders tab as Discounts. Refund rows use a negative Total Price equal to the refund amount. To reconcile an order (excluding tax): sum line Total Price values, then subtract the order's Discounts (or sum line Order Discount Amount). Use Discount Amount for line-level discounts only.
Refund rows in Line Items: Each refunded line is its own row with Line Item Type = Refund, a negative Total Price, and the original product's SKU, variant, and product fields populated.
Refunded Amount on Line Items: Per-row. Refund rows show the amount for that line; product and shipping rows show 0. Sum across an order, or use the Orders tab Refunded Amount column.
Orders totals: Subtotal and Total Price are current values (refunds subtracted), matching Shopify's Total sales view. For a fully refunded order both are 0, with Refunded Amount equal to the original total.
Product Analysis and Refund Analysis: Gross Sales is product price × quantity before discounts and refunds. Net Sales subtracts Discounts and Returns, matching Shopify's Sales by product report.
On Orders and Line Items, Order Date is date only (YYYY-MM-DD), which is easier for grouping and pivoting. Add Order Date Time if you need the full timestamp (YYYY-MM-DD HH:MM:SS). Existing BigQuery tables with an order_date column keep their schema. If that column was typed as TIMESTAMP, new values are written as midnight (00:00:00). Add Order Date Time to recover full precision.
Segment and discount lists are available as comma-separated columns and as JSON array strings on the same row. Use the JSON variants with PARSE_JSON in BigQuery or JSON.parse in Apps Script.
If the Customers export feels slow, remove the segment columns. See Tips.
[].When you enable Note Attributes on the Orders tab, SyncRange exports additional details as a JSON array string column named Order Note Attributes. Example: [{"key":"delivery_window","value":"Afternoon"}]. Duplicate keys are preserved. This works in Google Sheets and BigQuery.
One row per issued gift card. Filtered by gift card created_at. Supports Since last export. Requires the read_gift_cards OAuth scope.
Reconnect required: Stores connected before this feature was added must reconnect Shopify to grant read_gift_cards. If the scope is missing, the Gift Cards tab is skipped and the rest of the export continues.
Column definitions: Gift Cards.
One row per metaobject entry from Shopify Content → Metaobjects. Leave as a single tab (identity + Fields JSON), or enable One sheet per definition for a separate sheet/table per type with that definition's fields as columns. Optionally pick which definitions to include. Full snapshot each run (date range does not apply).
Reconnect required: Stores must grant read_metaobjects and read_metaobject_definitions. If those scopes are missing, the Metaobjects tab is skipped and the rest of the export continues.
Column definitions: Metaobjects.
SyncRange can export Shopify Payments data when your store uses Shopify Payments and has granted the read_shopify_payments_accounts and read_shopify_payments_payouts scopes.
issued_at. Supports Since last export.processed_at. Supports Since last export.Reconnect required: Stores connected before this feature was added must reconnect Shopify to grant the new scope. If the scope is missing or Shopify Payments is not activated, those tabs are skipped and the rest of the export continues.
Column definitions: Payouts and Balance Transactions.
Analytics tabs pull aggregated report data from Shopify via ShopifyQL (shopifyqlQuery). They are grouped into six chips (Sessions, Campaigns, Marketing Engagements, Search, Web Performance, Shop Campaigns). Groups with multiple reports let you select one or more breakdowns; each selected breakdown still exports to its own destination table.
These tabs require the read_reports access scope. Shopify may also require Level 2 protected customer data access for Analytics queries.
Reconnect required: Stores connected before this feature was added must reconnect Shopify to grant read_reports. If the scope is missing, Analytics tabs are skipped and the rest of the export continues.
Column definitions: Analytics tabs.
On the Orders, Products, Collections, and Customers tabs you can add up to eight custom metafield columns. Each key becomes its own column: the header is the metafield name (for example custom.internal_id), and each row shows that metafield's value. This works in Google Sheets and BigQuery.
Enter keys in namespace.key format. Leave a slot blank if you do not need it. In Shopify admin, copy the name from Settings → Custom data for that resource (or from a record's metafields).
| Tab | Shopify admin | Example keys |
|---|---|---|
| Orders | Settings → Custom data → Orders | custom.internal_id, custom.po_number |
| Products | Settings → Custom data → Products | custom.brand, custom.segment |
| Collections | Settings → Custom data → Collections | custom.segment, custom.brand |
| Customers | Settings → Custom data → Customers | custom.loyalty_tier, custom.segment |
Where to find the metafield name (namespace.key) in Shopify admin.
Something missing on this page? Email [email protected]