Sync Shopify to PostgreSQL
in plain English.
Land Shopify orders, products, customers, and inventory in Postgres on the schedule you describe. Schema-qualified, PII-safe by default, source-available, self-hosted.
rsync.ai's Shopify connector uses the Admin GraphQL API (v2024-10) to extract 6 resources and upserts them into Postgres under a dedicated `shopify` schema. Customer email, phone, and addresses are omitted from default queries. REPLICA IDENTITY is set for CDC publication safety. Works with Postgres 11+, RDS, Aurora, Cloud SQL, Supabase, Neon, Timescale.
- Schema-qualified writes — shopify.orders, not public.orders
- Scheduled batch sync — every minute, hour, or cron
- Customer PII excluded from default GraphQL queries
- Per-pipeline namespace isolation (multi-store ready)
How to sync Shopify to PostgreSQL — 5 steps
From chat prompt to rows in Postgres — a few minutes for a small store.
- 1
Connect your Shopify store
Provide your Shopify store subdomain (e.g. acme.myshopify.com) and a Shopify Admin API access token — custom-app token or OAuth-issued. Token is sent as `X-Shopify-Access-Token` on every request.
shop + access_token - 2
Connect your PostgreSQL database
Provide a connection string or host/port/user/password. rsync.ai supports Postgres 11+, Amazon RDS, Aurora Postgres, Google Cloud SQL, Azure Database for PostgreSQL, Supabase, Neon, Timescale, and self-managed clusters.
postgres://user:pass@host:5432/db - 3
Describe the sync
Type: 'Sync Shopify orders, products, and customers into Postgres every 5 minutes.' rsync.ai turns it into a pipeline — pulls schema from Shopify's GraphQL API, proposes Postgres tables under a `shopify` schema.
No SQL · No Airflow · No DAGs - 4
Review proposed schema
rsync.ai shows the 6 discovered Shopify resources with column counts. Tick which to sync. Postgres DDL preview: schema-qualified tables (`shopify.orders`), upsert unique index on the Shopify GraphQL `id` field, REPLICA IDENTITY set for CDC publication safety.
- 5
Run on a schedule
Each scheduled run paginates Shopify with Relay cursors (250 nodes/page), upserts into Postgres on `id`, and resumes from the saved cursor on failure. Live row counts and run history in the UI.
Schema-qualified writes: shopify.orders, not public.orders
Shopify → PostgreSQL schema mapping
What rsync.ai proposes by default. Override columns, types, and JSONB strategy before approving.
| Shopify resource | Postgres table | Notes | |
|---|---|---|---|
| Order | shopify.orders | line_items embedded (first 10) — customer/email/address fields excluded by default | |
| Product | shopify.products | variants embedded (first 5) | |
| Customer | shopify.customers | PII-free by default: id, timestamps, numberOfOrders, amountSpent, tags only | |
| Collection | shopify.collections | productsCount, ruleSet (2024-10 schema) | |
| InventoryItem | shopify.inventory_items | inventory_levels per location embedded (first 5) | |
| Shop | shopify.shop | Singleton — 57 columns including plan, currency, timezone |
rsync.ai vs. Fivetran, Airbyte, Zapier for Shopify → PostgreSQL
Honest feature comparison for the Postgres data path.