Configuring Shopify Exports

Set up a Shopify export, then choose tabs, columns, and a date range. Use the data reference when you need every field spelled out.

Overview

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.

Prerequisites

Creating a Shopify Export

  1. From your dashboard, go to Export Builder and click Create New Export.
  2. Choose Shopify as the data source, then select the store if you have more than one connected.
  3. Pick a destination (Google Sheet, BigQuery, or Excel).
  4. Set the date range, tabs, and columns as described below.
  5. Click Create Export, then run it once to confirm the output.
Shopify Export Configuration

The Shopify export configuration screen

Export configuration

Date range

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:

  • Since last export: Incremental sync from the previous successful run (UTC). The first run falls back to today. Best with Orders in Append mode. Refunds in incremental runs use the refund processed date, not the original order date. Customers are filtered by account creation date.
  • Last 7 days / Last 30 days (default): Rolling windows for weekly or monthly reporting.
  • This month: From the start of the current month through today.
  • Last year: The past 365 days.
  • Maximum: Up to 2 years of history. Use manual runs only, and one data tab at a time on large stores.
  • Backup (10 years): Paid Pro, Scale, and Growth plans (not trial). Manual Run only; your schedule is paused while this is selected.
  • Custom range: Exact start and end dates (maximum 1 year; end date cannot be in the future). The same calendar window is exported on every run. Scheduled runs are paused, so use Run now. Switch back to a preset to resume a schedule.

The date range dropdown also includes Today, Yesterday, Last 3 / 14 / 28 / 90 days, Last 6 months, Last month, and This quarter.

Data tabs

Each data type writes to its own tab, worksheet, or BigQuery table. Enable a tab by selecting columns for it.

Shopify Data Tabs

The tab interface for configuring different data types

  • Products: Catalog, variants, pricing, and inventory quantity (current data each run)
  • Orders: One row per order, including discounts and refunded amount (date range)
  • Line Items: Product, shipping, and refund rows within orders (date range)
  • Orders + Line Items: Denormalized order fields on each line row (date range)
  • Customers: Customer accounts filtered by creation date (date range)
  • Sales Metrics: Aggregated sales performance (date range)
  • Analytics Sessions: Traffic and conversion with selectable breakdowns (Daily, By Source, Landing Page, Device, Country) (date range)
  • Analytics Campaigns: Campaign sales and campaign sessions (selectable) (date range)
  • Analytics Marketing Engagements: Channel-reported spend, impressions, clicks, and sales (date range)
  • Analytics Search: Search queries and search conversions (selectable) (date range)
  • Analytics Web Performance: Core Web Vitals and page load metrics (date range)
  • Analytics Shop Campaigns: Shop Campaign sales, ad spend, and ROAS (date range)
  • Product Analysis: Per-product sales rollups for the date range
  • Refund Analysis / Refund Line Analysis: Refund rollups and per-refund-line rows (date range)
  • Inventory / Inventory Locations: Current stock, including by location (current data each run)
  • Locations / Store / Collections: Store setup and collection membership (current data each run)
  • Discounts: Discount codes, rules, and usage (current data each run)
  • Gift Cards: Issued gift cards with balance, customer, order, and recipient details (date range by created date)
  • Metaobjects: Content → Metaobjects entries; pick definitions and export all fields as columns (full snapshot)
  • Payouts / Balance Transactions: Shopify Payments bank transfers and fees (date range)
  • Customer Segments: Customer-to-segment membership (current data each run)

Full column lists: Shopify data reference.

Column selection

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.

Shopify Column Selection

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.

Data handling

  • Replace (default): Each run clears existing data and writes a fresh snapshot
  • Append: Each run adds new rows and leaves existing rows in place

Pro tip

Use append for data you want to track over time (orders, sales metrics). Use replace for current-state data (inventory, products).

Order date and filters (Orders / Line Items)

On the Orders and Line Items tabs you can control which Shopify orders are fetched for the export date range.

Include orders by

Chooses which Shopify date the export range applies to. Separate from append vs replace, and from optional status filters.

  • Order created date (default): only orders placed in the date range. Best for new-order feeds.
  • Order updated date: orders that changed in the window (fulfillment, refunds, edits).

Order filters (optional)

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 statusOpenstatus:open
Archivedstatus:closed
Canceledstatus:cancelled
Not closedstatus:not_closed
Order locationNames from your Shopify locations (same idea as the location selector on the Orders page)reference_location_id:
Payment statusAuthorizedfinancial_status:authorized
Expiredfinancial_status:expired
Paidfinancial_status:paid
Partially paidfinancial_status:partially_paid
Partially refundedfinancial_status:partially_refunded
Pendingfinancial_status:pending
Refundedfinancial_status:refunded
Voidedfinancial_status:voided
Fulfillment statusFulfilledfulfillment_status:fulfilled
Unfulfilledfulfillment_status:unfulfilled
Partially fulfilledfulfillment_status:partial
Scheduledfulfillment_status:scheduled
On holdfulfillment_status:on_hold
Request declinedfulfillment_status:request_declined
Unshippedfulfillment_status:unshipped
Shippedfulfillment_status:shipped
Order tagsComma-separated order tagstag:'…' (each tag ANDed)
Product tagsComma-separated product tagsAny listed tag. Orders: include the order if a product matches. Line Items: include matching product and refund rows, and leave out shipping rows.

Tips

  • Start with one or two tabs and only the columns you need. Extra tabs and columns slow the run and grow the destination.
  • Use a shorter date range on large stores. Split heavy work into focused exports instead of one export that pulls everything.
  • If the Customers tab is slow, remove the customer segment columns unless you need them.
  • Use append for historical tracking, and replace for current state. Append will grow the sheet over time.
  • Run the export manually and check the output before turning on a schedule.

Advanced features

Open a topic below if you need refunds, JSON columns, Shopify Payments, or metafields.

Reconciling Orders and Line Items

Reconciling Orders and Line Items exports

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)
  • Orders filter on the order's created_at. Total Price, Subtotal, and Refunded Amount reflect the order's current state (all-time refunds included).
  • Line Items product and shipping rows use the same order created_at filter.
  • Line Items refund rows filter on the refund processed date (refund.createdAt).
  • Product Analysis, Refund Analysis, and Refund Line Analysis use the same product and refund rows as Line Items for the window.

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.

How refunds and totals work

How refunds and totals work (Orders, Line Items, Product Analysis, Refund Analysis)

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.

Order Date vs Order Date Time

Order Date vs Order Date Time (Orders, Line Items)

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, list, and discount JSON columns

Segment and list JSON columns (Customers, Discounts, Orders, Line Items)

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.

  • Customers: Customer Segment IDs / Names, plus JSON variants.
  • Discounts: Eligibility Customer Segment IDs / Names, plus JSON variants.
  • Orders and Line Items: Manual Discount Codes for typed or admin-applied discounts, and Automatic Discount Titles for automatic discounts. You can also export Discount Codes Applied / Discount Code IDs with JSON variants.

If the Customers export feels slow, remove the segment columns. See Tips.

Discount codes JSON (Orders and Line Items)

  • Discount Codes Applied (JSON): JSON array of the same values as Discount Codes Applied.
  • Discount Code IDs (JSON): JSON array of numeric Shopify discount catalog IDs for code-based discounts.
  • Manual Discount Codes: Customer-typed codes and admin-applied manual discount titles.
  • Automatic Discount Titles: Automatic discount titles only.
  • Automatic ID matching: We look up automatic discounts by exact title. If an old title is reused later, historical rows can map to the newer discount with the same title.
  • Line Items: Labels and IDs reflect discounts allocated to that row. Empty discounts export as [].

Order note attributes (additional details)

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.

Shopify Payments exports

Gift Cards

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.

Metaobjects

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.

Shopify Payments exports (Payouts, Balance Transactions)

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.

  • Payouts: One row per bank transfer, with net amount and rolled-up charge, refund, and adjustment fees. Filtered by payout issued_at. Supports Since last export.
  • Balance Transactions: One row per charge, refund, or adjustment, with Gross Amount, Fee Amount, Net Amount, and links to Order ID and Payout ID. Filtered by 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.

Shopify Analytics exports

Shopify Analytics exports (ShopifyQL)

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.

Custom metafield columns

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.

Where to find the order metafield name in the Shopify admin (Settings → Custom data → Orders or order detail metafields)

Troubleshooting

Missing data

  • Confirm the columns you need are selected for that tab
  • Check the date range, and that the data exists in Shopify
  • Confirm you have permission to access that data in Shopify

Export errors

  • Check the export logs (see Viewing Export Logs)
  • Verify the Shopify connection is still active and the destination still exists
  • Reduce columns or the date range if you are hitting API limits

Slow or timed-out exports

  • Export fewer columns, use a shorter date range, or split into smaller exports
  • On large stores, start with recent data rather than Maximum or Backup

Something missing on this page? Email [email protected]

Start syncing your ecommerce data in minutes Start free today. No credit card required.