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, Customers, Sales Metrics, Product Analysis, Refund Analysis, Refund Line Analysis, Payouts, Balance Transactions, and all Analytics tabs. Products, Store, Locations, Inventory, and Inventory Locations always export current data.

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
  • Orders: One row per order, including discounts and refunded amount
  • Line Items: Product, shipping, and refund rows within orders
  • Customers: Customer accounts (filtered by creation date)
  • Sales Metrics: Aggregated sales performance
  • Analytics Sessions: Traffic and conversion with selectable breakdowns (Daily, By Source, Landing Page, Device, Country)
  • Analytics Campaigns: Campaign sales and campaign sessions (selectable)
  • Analytics Marketing Engagements: Channel-reported spend, impressions, clicks, and sales
  • Analytics Search: Search queries and search conversions (selectable)
  • Analytics Web Performance: Core Web Vitals and page load metrics
  • Analytics Shop Campaigns: Shop Campaign sales, ad spend, and ROAS
  • Product Analysis: Per-product sales rollups for the date range
  • Refund Analysis / Refund Line Analysis: Refund rollups and per-refund-line rows
  • Inventory / Inventory Locations: Current stock, including by location
  • Locations / Store / Collections: Store setup and collection membership
  • Discounts: Discount codes, rules, and usage
  • Payouts / Balance Transactions: Shopify Payments bank transfers and fees
  • Customer Segments: Customer-to-segment membership

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).

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 discounts for product and shipping rows (it equals Discounted Price). Refund rows use a negative Total Price equal to the refund amount. Sum Total Price across product, shipping, and refund rows of the same order to reconcile to Shopify net sales (excluding tax). Use Discount Amount for the discount allocated to each line.

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

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, and Collections 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

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.