Shopify to Snowflake

Shopify is usually the order record for a DTC brand. Getting it into Snowflake is quick. Getting numbers that match Shopify reports, finance and marketing takes deliberate modeling.

The short answer

A connector can land Shopify orders, refunds and customers in Snowflake within a day, but full history needs all-orders access and the totals rarely match Shopify reports on the first try. What usually breaks is dates (refunds land on the day they are processed, and time zones shift late orders), orders copied in from TikTok Shop or Amazon, and joins that repeat order totals across line items.

What you can load from Shopify

Orders and order lines
Item sales, discounts, shipping, tax, customer ID and the store time zone. Keep line level and order level separate so totals are not repeated.
Refunds and sales reversals
Each refund with its own processing date and parent order ID. One order can have several partial refunds, and each one is real.
Customers and emails
The Shopify customer ID and email, used to join Klaviyo and Recharge into one customer view.
Products and variants
Native product and variant IDs plus SKU text, mapped to a canonical product so cost and margin line up with Amazon and TikTok listings.

How we set it up

  1. 1

    Load the full history

    Shopify only exposes the last 60 days of orders unless the app has all-orders access. We confirm that access before the backfill so history is not cut short.

  2. 2

    Keep raw records and every date

    We keep order, refund and load timestamps with their time zones in raw tables, so later corrections do not mean reloading from Shopify.

  3. 3

    Model named revenue metrics

    We build separate measures for sales by activity date and value by order cohort, each with a written definition, a time zone and an owner.

  4. 4

    Reconcile one month to Shopify

    We bridge a closed month from the Shopify sales report to the warehouse total, with shipping, tax and late refunds in their own columns.

What breaks, and how we handle it

Refund date versus order date
Shopify records a sale on the day it was made and a reversal on the day it was processed. We keep both views and label which one each report uses.
Store time zone versus UTC
An order placed late on the last day of the month in New York falls in the next month in UTC. We convert once, with a named rule, using the store time zone.
Orders copied from other channels
A TikTok Shop purchase can create a Shopify order and an Amazon fulfillment record. We store sales channel, fulfillment provider and source system separately and link copies to one business order.
Joins that repeat totals
Joining order lines to shipments or refunds can multiply rows. We aggregate each table to its own level before joining and test totals before and after.
Subscription renewals counted twice
A Recharge charge can point to a Shopify order. We take money from Shopify and use Recharge only to label the order as a first order or a renewal.

What we build on top of the Shopify data

  • Net sales by activity date and by order cohort
  • Business order crosswalk across Shopify, Amazon and TikTok Shop
  • Product crosswalk with dated costs and pack quantities
  • Customer timeline joining Shopify, Klaviyo and Recharge
  • Monthly reconciliation bridge to Shopify reports

Common questions

Why does my Snowflake revenue not match the Shopify sales report?

Usually the date, time zone or population differs. Shopify puts refunds on the day they were processed and uses the store time zone, while a warehouse query may tie refunds to the order and use UTC. Reconcile one closed month line by line before changing any formula.

Can I load more than 60 days of Shopify order history?

Yes, but the app needs all-orders access. Without it, the Shopify Order object only exposes the last 60 days, so a backfill can stop early without an error.

How do I stop TikTok Shop and Amazon orders being counted twice in Shopify data?

Record where the customer bought separately from who fulfilled the order and which system sent the record. Then link each copy to one business order and count sales only from the originating order.

Should refunds reduce the month of the sale or the month of the refund?

Both views are valid for different questions. Activity reporting puts the refund in the month it was processed. Order cohort reporting ties it back to the order. Name both measures and say which date each one uses.

Do I need dbt to model Shopify data in Snowflake?

No. What matters is that each metric has one written definition, grain, date rule and owner. We often build those in dbt, but Snowflake semantic views or your BI tool model can hold them too.

Want Shopify data you can trust?

Bring the Shopify reports that don't match. We'll trace them to the source and show you where to start.

Book a Call