🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Airtable meets Shopify for accurate product inventory

Lisa Granqvist Partner Workflow Automation Expert

Product updates shouldn’t feel like whack-a-mole. But one change in your spreadsheet turns into five edits in Shopify, a missed inventory adjustment, and a “why is this still live?” message from your team.

This Airtable Shopify sync hits eCommerce Managers hard. Agency teams running multiple storefronts feel it too. And a small business owner doing “quick updates” between calls knows the pain by heart.

This workflow makes Airtable your product source of truth and keeps Shopify products, variants, and inventory aligned. You’ll see exactly how it works, what you need, and where teams usually get stuck.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Airtable meets Shopify for accurate product inventory

The Problem: Inventory and product updates drift across tools

When Airtable is where your catalog lives, Shopify can quietly become “the place things go wrong.” Someone updates a title, a price, or stock-on-hand in Airtable, but the Shopify product stays unchanged. A week later you’ve got mismatched descriptions, duplicate products because a handle changed, and inventory that looks fine in one tool and totally wrong at checkout. The real cost isn’t just time spent fixing it. It’s the mental overhead of second-guessing every product edit and the revenue risk when customers buy items that aren’t actually available.

It adds up fast. Here’s where it usually breaks down in day-to-day operations.

  • Teams copy and paste product fields into Shopify, which invites typos and inconsistent formatting.
  • Inventory gets updated in the wrong place, so Shopify shows stock that doesn’t match what you can ship.
  • Duplicate listings appear when there’s no reliable “match key” between Airtable and Shopify.
  • People stop trusting the catalog, then everything slows down because every change needs a double-check.

The Solution: Create and update Shopify products from Airtable (with inventory)

This workflow turns Airtable into your controlled publishing queue for Shopify. It starts by pulling product rows from an Airtable “products” table, but only the ones you’ve marked for syncing (a simple true/false field). For each record, it looks up the matching Shopify product using the slug field (Shopify calls this the handle). If the product exists, the workflow updates it and adjusts the variant details. If it doesn’t exist, it creates the product, creates variant details, and then sets inventory at your store’s default location. Finally, it flags the Airtable record as synced so the same row doesn’t get pushed again.

The workflow kicks off from n8n, fetches your Shopify locations once, then iterates through Airtable records in batches. From there it chooses “create” or “update,” then applies inventory changes and marks the Airtable row complete. Clean loop. Clear ownership.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you manage 40 products and you update 10 of them each week. Manually, you might spend about 10 minutes per product to update Shopify fields, double-check the handle, and adjust inventory, which is roughly 100 minutes weekly. With this workflow, you update Airtable once, flip the sync flag, and run the automation; your hands-on time is closer to 10 minutes total, then Shopify updates in the background. That’s about 1.5 hours back every week, plus fewer mistakes that lead to customer support headaches.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Airtable for your products table and sync flag
  • Shopify Admin API (GraphQL) to create/update products and inventory
  • Shopify Admin API access token (create a custom app in Shopify admin)

Skill level: Intermediate. You’ll connect Airtable + Shopify credentials and confirm a few field mappings like slug/handle and stock quantities.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A manual run starts the sync. You launch the workflow in n8n (many teams later swap this for a scheduled or webhook trigger). Before it touches products, it fetches your Shopify locations so inventory updates land in the right place.

Airtable records are pulled and filtered. The workflow retrieves rows from your Airtable products table, and you control what moves by setting the sync field to true. That keeps random edits from instantly changing live storefront data.

Shopify is updated with create-or-update logic. For each Airtable record, n8n looks up a Shopify product using the Airtable slug (which Shopify treats as the handle). If it’s found, it updates product and variant details; if not, it creates them.

Inventory is set, then Airtable is marked done. Inventory gets set at the default location, and the Airtable row is flagged as synced so the workflow can move on to the next item without reprocessing old records.

You can easily modify the “sync” rules to support approvals, scheduled publishing, or separate tables for draft vs. active products based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

Start the workflow manually so you can test and validate the product sync before scheduling it.

  1. Add the Manual Launch Trigger node as the workflow trigger.
  2. Leave default settings as-is since this node requires no parameters.
  3. Confirm the first connection flows from Manual Launch Trigger to Shopify Fetch Locations.

Step 2: Connect Airtable and Load Source Records

Pull the product rows from Airtable that are flagged for syncing.

  1. Open Airtable Retrieve Rows and set Operation to search.
  2. Set Filter By Formula to sync so only rows marked for sync are returned.
  3. Under Options → Fields, include title, description, company, status, slug, price, compare_at_price, sku, stock_on_hand, and type.
  4. Credential Required: Connect your airtableTokenApi credentials in Airtable Retrieve Rows.
  5. Ensure the flow continues from Shopify Fetch Locations to Airtable Retrieve Rows, then to Iterate Records.

⚠️ Common Pitfall: If the Airtable base or table IDs are still placeholders like [YOUR_ID], update them or the search will return no records.

Step 3: Retrieve Shopify Context and Iterate Records

Fetch the Shopify location once, then iterate through Airtable rows to check for existing products.

  1. Open Shopify Fetch Locations and confirm Endpoint is https://store99563.myshopify.com/admin/api/2025-04/graphql.json.
  2. Credential Required: Connect your httpHeaderAuth credentials in Shopify Fetch Locations.
  3. In Iterate Records, keep default batch settings to loop through each Airtable row.
  4. Open Shopify Lookup Product and set Variables to ={ "handle" : "{{ $json.slug }}" } so it searches by the Airtable slug.
  5. Credential Required: Connect your httpHeaderAuth credentials in Shopify Lookup Product.
  6. In Check Product Presence, verify the condition checks ={{ $json.data.productByHandle }} with the exists operator.

Step 4: Configure Product Create/Update Branches and Variant Updates

Route existing products to updates and new products to creation, then update variant details in Shopify.

  1. From Check Product Presence, connect the true output to Shopify Modify Product and the false output to Shopify Generate Product.
  2. In Shopify Modify Product, set Variables to the provided expression block, including "id" : "{{$('Shopify Lookup Product').item.json.data.productByHandle.id}}" and fields mapped from Iterate Records.
  3. In Shopify Generate Product, set Variables to the provided expression block, including "title": " {{ $('Iterate Records').item.json.title }} " and "handle": "{{ $('Iterate Records').item.json.slug }}".
  4. Open Update Variant Details and confirm Variables uses {{ $json.data.productUpdate.product.id }} and fields from Iterate Records (price, compare_at_price, sku).
  5. Open Create Variant Details and confirm Variables uses {{ $json.data.productCreate.product.id }} and fields from Iterate Records.
  6. Credential Required: Connect your httpHeaderAuth credentials to all Shopify GraphQL nodes (8+ nodes handling lookup, create/update, variants, and inventory).

Use the same Shopify access token across all GraphQL nodes to avoid mismatched permissions between lookup, create, update, and inventory steps.

Step 5: Set Inventory Levels and Flag Airtable as Synced

Update inventory for both new and existing products, then mark the Airtable row as synced.

  1. In Set Initial Inventory, verify Variables uses {{ $('Shopify Generate Product').item.json.data.productCreate.product.variants.edges[0].node.inventoryItem.id }}, {{ $('Shopify Fetch Locations').item.json.data.locations.edges[0].node.id }}, and {{ $('Iterate Records').item.json.stock_on_hand }}.
  2. In Adjust Inventory Level, verify Variables uses {{ $('Shopify Modify Product').item.json.data.productUpdate.product.variants.edges[0].node.inventoryItem.id }}, the same location ID, and {{ $('Iterate Records').item.json.stock_on_hand }}.
  3. Configure Airtable Flag Synced with Operation set to update and map the record ID to ={{ $('Iterate Records').item.json.id }}.
  4. Credential Required: Connect your airtableTokenApi credentials in Airtable Flag Synced.
  5. Confirm the flow returns from Airtable Flag Synced to Iterate Records, and then to Completion Marker when finished.

⚠️ Common Pitfall: Inventory updates depend on Shopify Fetch Locations. If the location query fails, inventory updates in Set Initial Inventory and Adjust Inventory Level will error.

Step 6: Test and Activate Your Workflow

Run a manual test to verify product creation, updates, and Airtable sync flags before activating.

  1. Click Execute Workflow and trigger Manual Launch Trigger to run a test.
  2. Verify Airtable Retrieve Rows returns records with sync enabled.
  3. Check Shopify: existing products should go through Shopify Modify ProductUpdate Variant DetailsAdjust Inventory Level, while new products go through Shopify Generate ProductCreate Variant DetailsSet Initial Inventory.
  4. Confirm Airtable Flag Synced updates the record so sync is cleared or set appropriately.
  5. Once validated, switch the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Shopify GraphQL credentials can expire or miss required scopes. If things break, check your custom app permissions and the Admin API access token in n8n first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Handles are unforgiving. If your Airtable slug changes (or contains spaces), Shopify matching fails and you can accidentally create duplicates instead of updating the existing product.

Frequently Asked Questions

How long does it take to set up this Airtable Shopify sync automation?

About an hour if your Airtable base and Shopify access are ready.

Do I need coding skills to automate Airtable-to-Shopify product syncing?

No. You’ll mostly map fields and paste in an API token.

Is n8n free to use for this Airtable Shopify sync workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Shopify/Airtable plan limits (and API rate limits) if you’re syncing lots of products.

Where can I host n8n to run this Airtable Shopify sync automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Airtable Shopify sync workflow for a draft/approval process?

Yes, and honestly it’s a common upgrade. Keep using the sync checkbox, but only set it to true when a second field like “approved_by” is filled in, or when status equals DRAFT/ACTIVE. You can also add a second Airtable table for pending changes, then only push to Shopify after approval. In n8n, this is usually just extra conditions before the Shopify GraphQL create/update nodes.

Why is my Shopify connection failing in this workflow?

Usually it’s the Admin API token or missing scopes on the Shopify custom app. Regenerate the token, confirm the workflow’s GraphQL nodes point at your store’s correct URL, and make sure permissions cover products, inventory, and locations. If you’re pushing lots of updates at once, rate limiting can also cause intermittent failures, so batching helps.

How many products can this Airtable Shopify sync automation handle?

Hundreds at a time is typical; the practical limit is Shopify API rate limits and how you batch records in n8n.

Is this Airtable Shopify sync automation better than using Zapier or Make?

Often, yes. This workflow leans on Shopify’s GraphQL Admin API, which is where the “real” product and inventory control lives, and n8n handles branching logic (create vs. update) without forcing you into expensive multi-step task chains. Self-hosting is a big deal if you run lots of syncs, because executions aren’t metered the same way. Zapier or Make can still be fine for simple pushes, like “create product when row is added,” but inventory/location updates get messy fast. If you want help deciding, Talk to an automation expert.

Once Airtable is the source of truth and Shopify stays aligned, product updates stop being a weekly fire drill. Set it up, run it when you need it, and move on to work that actually grows the store.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal