Skip to content
Adapters

Shopify to BigQuery integration for analytics-ready store data

The Shopify to BigQuery integration from Adapters loads orders, line items, customers, products, and refunds from Shopify into partitioned BigQuery tables on an incremental schedule, so cohort, LTV, and margin models run on a full order history instead of a manual export. Field mapping is no-code, so try it against sample records in the live demo.

The live demo needs no card, and Starter is $49 a month.

Field mapping auto-plugged · tap a port to rewire

5 sample records ready

What running Shopify to BigQuery by hand costs you

  • The Shopify Admin API paginates by cursor and throttles by leaky bucket, so full-catalog and full-order backfills are slow to script.
  • Order edits, refunds, and cancellations change records after the fact, and a naive nightly dump into BigQuery misses those updates.
  • Blending Shopify with ad spend and payment fees for true margin means a warehouse table, not a folder of exported CSVs.

The field mapping, out of the box

All 6 of these Shopify to BigQuery fields arrive mapped. Rewire any of them, or add your own, in the same visual data mapping tool you use for every adapter.

Input / SHOPIFY

order.id
fct_order.order_id
order.total_price
fct_order.total_price
order.created_at
fct_order.created_at
line_item.sku
fct_order_line.sku
customer.id
dim_customer.customer_id
order.updated_at
fct_order.loaded_at

Transforms included

Incremental loads use the Shopify updated_at watermark so edits, refunds, and cancellations flow through on the next run; money fields cast to BigQuery NUMERIC, ISO 8601 timestamps land as TIMESTAMP in UTC, tables partition by order date, and line items land in their own table so margin and cohort models read one clean, deduplicated order history.

Shopify to BigQuery in depth

The Shopify side of this route is a cost budget and a bulk export. The BigQuery side is a set of load quotas that quietly decide your schedule. Read from Shopify and Google Cloud documentation on 20 August 2026.

Your Shopify plan sets the extraction rate

The GraphQL Admin API meters calculated query cost in points per second: 100 on Standard, 200 on Advanced, 1,000 on Plus, 2,000 on Enterprise. A single query may never exceed 1,000 points, and exceeding it rejects the query rather than throttling it, so no amount of backoff helps. Flatten the query and split the work. Every response carries a throttleStatus block you can pace against, which is the difference between a load that finishes and one that spends its budget rediscovering the limit.

Bulk operations are how you get the history

Paged queries stop at the 25,000 object pagination ceiling, and counts are only accurate up to the same figure, so do not verify a load by comparing a Shopify count to a BigQuery row count. Bulk operations sidestep both: asynchronous, exempt from the normal cost limits, JSONL output, and five concurrent bulk queries per app per shop from API version 2026-01. The result URL expires after a week. JSONL is convenient here because BigQuery loads newline-delimited JSON natively.

Load job quotas shape the schedule more than data volume

BigQuery allows 1,500 load jobs per table per day and 100,000 per project per day. That works out to a load every 58 seconds per table at best, so a near-real-time design built on load jobs runs out of quota rather than throughput. Batch to a few minutes, or use the storage write API for streaming. The upside is that batch load jobs are free, running on a shared slot pool, so a frequent small-batch schedule costs nothing in compute.

File and row size ceilings on the load itself

A single load job accepts up to 15 TB and must finish within 6 hours. For ndJSON the maximum row size is 100 MB, and a compressed source file cannot exceed 4 GB (5 TB uncompressed). Shopify orders with long line item arrays and heavy metafields are the realistic candidates for hitting the row ceiling. Split large bulk exports before loading rather than discovering the limit at hour five of a six hour job.

Shopify money is a decimal string, so use NUMERIC

A Shopify MoneyV2 returns amount as a Decimal such as 12.99 with a separate currencyCode. Load it into NUMERIC, not FLOAT64: floating point sums of order totals drift, and the drift shows up as a reconciliation gap nobody can locate. Keep the currency code in its own column even if you only sell in USD today, because adding it retroactively means restating every historical row.

Partition on the event date, cluster on the store

Partition orders by the order date and cluster by shop domain if you run multiple stores. That combination keeps a query for one store in one month reading a small fraction of the table, which matters because BigQuery bills on bytes scanned. An unpartitioned orders table is cheap to create and expensive forever after. The same partitioning discipline applies on Postgres to BigQuery.

Flatten line items deliberately

Shopify orders are naturally nested and BigQuery supports nested and repeated fields, so you can keep line items as an ARRAY of STRUCT inside the order row. That preserves fidelity and avoids a join. The cost is that every analyst has to know to UNNEST. If your consumers are BI tools rather than SQL users, land a flat line-items table alongside the nested order. Tables cap at 10,000 columns, which is generous unless metafields are being exploded into columns.

Late refunds mean the warehouse restates

Refunds and fulfillments arrive after the order they belong to, sometimes in a later month. Extract on updated_at rather than created_at, or the entire refund stream is invisible to an incremental load. Use partition overwrite for the affected days rather than appending, so a restated period does not double count. The wider set of decisions on this route is on Shopify integration tools.

How it goes live

Moving Shopify data into BigQuery on flat data integration pricing from $49 a month.

STEP 01

Pick the pair

Authorize a read scope on Shopify and a write scope on BigQuery, nothing wider.

STEP 02

Confirm the mapping

Check that order.id lands in fct_order.order_id and order.updated_at in fct_order.loaded_at on a sample record.

STEP 03

Schedule the sync

Turn on the SHOPIFY → BIGQUERY schedule; failed records retry and every run is logged.

Try it in the live demo Preloads SHOPIFY → BIGQUERY with sample records

Shopify to BigQuery sync common questions

How do I connect Shopify to BigQuery?

Through the Shopify Admin API, reading orders, line items, customers, products, variants, refunds and transactions, then loading each into a partitioned BigQuery table. There is no direct link from BigQuery to Shopify, so a connector or scheduled job holds the API credentials and owns the incremental watermark.

How long does a Shopify backfill to BigQuery take?

Longer than most people expect on a large store, because of rate limits. The REST Admin API uses a leaky bucket with a 40 request capacity that drains at 2 requests per second on standard plans, 4 per second on Advanced and 20 per second on Shopify Plus. A multi year order history is therefore measured in hours, not minutes.

Which Shopify data should you load into BigQuery?

Orders and order line items first, then customers, products and variants, then refunds and transactions. Line items are what let you analyze by product and margin, and they are the table most first attempts omit. Transactions matter if you need to reconcile payouts rather than just report on sales.

How do you handle Shopify order edits in BigQuery?

Merge rather than append. Shopify orders change after creation through edits, refunds, fulfillment updates and cancellations, so an append only load produces several versions of the same order and every revenue query double counts. Read on updated_at and merge on the order ID so the table always holds the current state.

How does the Shopify to BigQuery sync work?

The Shopify to BigQuery integration from Adapters loads orders, line items, customers, products, and refunds from Shopify into partitioned BigQuery tables on an incremental schedule, so cohort, LTV, and margin models run on a full order history instead of a manual export. Field mapping is no-code, so try it against sample records in the live demo.

How much does the Shopify BigQuery integration cost?

The Shopify to BigQuery pair is included on every plan: Starter $49, Growth $149, Scale $399 a month. You pay per plan, not per row or task, so a busier month costs the same.

Do I need to write code to connect Shopify and BigQuery?

No. Fields are auto-mapped the moment you pick the pair, and you can rewire any mapping visually before the first sync. Incremental loads use the Shopify updated_at watermark so edits, refunds, and cancellations flow through on the next run; money fields cast to BigQuery NUMERIC, ISO 8601 timestamps land as TIMESTAMP in UTC, tables partition by order date, and line items land in their own table so margin and cohort models read one clean, deduplicated order history.

Shopify and BigQuery, finally in agreement

Map the pair once and let it sync on schedule. Flat price from $49 a month, no per-task fees.

The live demo needs no card, and Starter is $49 a month.

Get started