Shopify to Databricks: How to Move Your Data

Move Shopify into Databricks with Airbyte. Why a missing scope silently removes a stream, handling nested order payloads, and modelling bronze and silver layers.

Summarize with AI:

Moving Shopify into Databricks puts commerce data where it can be modelled rather than only reported. Shopify knows what was ordered and by whom. It does not know what those customers cost to acquire, whether they came back, or what support they needed, and the questions worth asking combine all of it.

This guide covers the managed path with Airbyte. The Shopify connector spans three different APIs and its most common failure is silent, so knowing which scopes you granted matters more here than on most sources.

Shopify to Databricks at a glance:

CapabilitySupportedWhat it means for this pipeline
APIs usedThreeREST, GraphQL and GraphQL Bulk, depending on the stream
Missing a scopeSilentThe stream is absent rather than raising an error
Rate limit warningsExpectedThey appear in normal logs and are not a fault
Nested payloadsPreservedWhich suits a lakehouse, since Spark handles them natively
Volume ceilingNone in practiceOrder history can grow indefinitely without a redesign

Why move data from Shopify to Databricks?

Two situations account for most of these pipelines.

The first is modelling rather than reporting. Lifetime value prediction, churn, propensity and recommendation work all need notebooks and Spark rather than a reporting interface, and order history with its nested line items is exactly the shape a lakehouse handles comfortably.

The second is joining commerce data to acquisition cost and support load, which lets you ask what a customer is actually worth rather than what they spent. If your questions are this month's sales by product, Shopify's own reporting already answers them.

What do you need before you start?

The first item is the one that quietly determines whether your dataset is complete:

A complete scope list, written down. Shopify grants access per resource, and a missing scope produces a missing stream rather than an error. Granting them all at once and recording what you granted turns a confusing investigation into a two-minute check. The Shopify source documentation lists them.

Your shop identifier and authentication. OAuth on Airbyte Cloud, or a custom app with an access token. The shop name is the subdomain portion of your myshopify.com address rather than the full URL.

A deliberate start date. On an established store this is the difference between a first sync measured in hours and one measured in days, since order history accumulates steadily and the bulk operations that fetch it are not instantaneous.

Unity Catalog access. Each stream becomes a table in Unity Catalog and the connector needs permission to create Volumes for Avro staging. Agree the catalog and schema before the first sync, particularly since customer records are involved.

If your organisation restricts inbound traffic by IP, add the Airbyte Cloud IP addresses to the allow list before you begin.

How do you build a Shopify to Databricks pipeline in Airbyte?

Step 1: Grant every scope you will need at once

Work out which streams your models need, then grant the corresponding scopes together rather than incrementally. Keep the list somewhere you will find it later, because an empty table six months from now is indistinguishable from a store with no data of that kind, and the scope record is what tells the two apart.

Step 2: Configure the Shopify source

Click Sources in the left navigation, then New Source, and select Shopify, following adding a source. Supply the shop name, your chosen authentication and a start date. After saving, refresh the source schema and compare the available streams against your scope list before assuming anything is missing.

Step 3: Configure the Databricks destination

Click Destinations, then New Destination, and select Databricks, following adding a destination. Supply your workspace details, the catalog and schema, and authentication. Order records nest heavily, carrying line items, addresses and discount applications inside each one, and the connector preserves that structure rather than guessing at a flattening.

Step 4: Create the connection and schedule realistically

Click Connections, then New connection, select your streams and an incremental sync mode where available. Daily suits commerce data for modelling purposes, and rate limit warnings in the logs are expected behaviour rather than something to investigate.

If a stream backed by a bulk operation stalls, the usual cause is a single cursor value carrying more rows than the checkpoint threshold allows. Raising the bulk job checkpoint value is the documented remedy.

Why is a missing stream usually a missing scope?

Because Shopify's permission model is per resource, and the connector can only offer streams your credentials are allowed to read. A scope you did not grant means the corresponding stream simply is not in the catalogue, with no error and nothing in the logs pointing at the cause.

That is difficult to diagnose from the destination, because an absent table looks the same whether the scope is missing or the store genuinely has no data of that type. A young store with no draft orders and a store whose credentials cannot read draft orders produce identical results.

Hence writing down what you granted. It is the difference between a two-minute check and an afternoon, and it is worth revisiting whenever somebody asks for a stream you do not have, because adding a scope and refreshing the schema is usually the whole fix.

How should you model commerce data in a lakehouse?

Land the streams as a bronze layer and build your models on top, because the nested structure is an advantage here rather than an obstacle. An order carrying its line items inside it is closer to how the business thinks about an order than the same data split across two tables, and Spark reads it natively.

Build a silver layer that explodes line items where you need per-product analysis, and keeps the order-level grain where you do not. Having both available from the same raw table is precisely what a lakehouse gives you over a relational destination that would have forced the choice at load time.

Keep the bronze layer. Shopify's APIs change, scopes get added, and being able to reprocess history from what you already hold is worth more than the storage it costs, particularly on a source where a schema change is somebody else's decision.

Frequently asked questions

Why is a stream missing from my Shopify catalogue?

Almost always a missing scope. Shopify grants access per resource and a missing one produces an absent stream rather than an error. Add the scope and refresh the source schema.

Should I worry about rate limit warnings in the logs?

No. They appear during normal operation as the connector paces itself against Shopify's limits, and are not a sign of failure.

A stream backed by a bulk operation keeps stalling. What now?

Usually a single cursor value carrying more rows than the checkpoint threshold allows. Raise the bulk job checkpoint value, which is the documented remedy.

Should I flatten order line items before loading?

No. Land the nested structure and explode it in a silver model where you need per-product grain, keeping order-level grain available from the same raw table.

Can I do this without writing code?

The Airbyte setup is entirely UI-driven. You will want Spark or SQL models exploding line items and joining to your acquisition and support data, which is where the analysis lives.

Get your Shopify data into Databricks

Grant every scope at once and write the list down, because a missing stream is silent. Set a deliberate start date, land the nested payloads as bronze rather than flattening them, and build silver models at whichever grain each question needs.

Airbyte's connector catalog includes 600+ pre-built connectors, so commerce data can sit beside the marketing and support sources that explain it. For the same source in an application database, see Shopify to PostgreSQL, and for the paid media side of acquisition, Facebook Ads to Snowflake.

Start syncing now →

Integrate with 700+ apps using Airbyte

Move data from 700+ sources into warehouses, lakes, and beyond. Set up pipelines in minutes with pre-built connectors and the Connector Builder.