Shopify Setup (A→Z)

The complete guide to connecting IEMSuite to your Shopify store - from installation to testing your first sync.

This guide takes you from zero to a fully operational IEMSuite ↔ Shopify integration. Follow each step in order - skipping steps causes sync failures.

Shopify integration is optional. IEMSuite works as a standalone web dashboard without any Shopify connection. Only follow this guide if you have a Shopify store.

Before You Start

Make sure you have the following ready:

  • A Shopify store with admin access (you need to be Owner, Co-owner, or have App installation permission)
  • An IEMSuite account - register at app.iemsuite.com if you haven't already
  • Your products already in Shopify - IEMSuite imports products from Shopify, not the other way around
  • At least one Shopify location enabled in Shopify Settings → Locations

Step 1 – Install the App

1

Go to the Shopify App Store

Search for "IEMSuite" or use the direct link from iemsuite.com. Click "Add app".

2

You are redirected to the IEMSuite OAuth screen

IEMSuite will show a login prompt. If you already have an IEMSuite account, log in. If not, you will be prompted to create one.

3

Link your Shopify store to your organization

After login, IEMSuite links your Shopify store to your existing organization (or creates a new one if this is your first login).

If you already use IEMSuite via the web dashboard and want to add Shopify, install the IEMSuite app from your Shopify admin and sign in with the same account email - the store is linked to your existing organization on first login.

Step 2 – Authorize OAuth Permissions

Shopify will show you a permission screen listing what IEMSuite needs access to. Here is what each permission is for:

PermissionWhy IEMSuite Needs It
read_products / write_productsImport product catalog and sync variant details.
read_inventory / write_inventoryRead current Shopify inventory levels and push updated levels after stock movements.
read_locationsDiscover your Shopify locations for location mapping.
read_orders / write_ordersImport Shopify orders and mark them as fulfilled.
read_fulfillments / write_fulfillmentsCreate Shopify fulfillment records when you confirm a shipment in IEMSuite.
read_customersLink Shopify customer records to IEMSuite client records.
Do not uncheck any permission. IEMSuite requires all listed permissions for full sync functionality. Missing permissions cause silent sync failures.
1

Click "Install" on the Shopify permission screen

This grants IEMSuite the OAuth access token for your store.

2

You are redirected back to IEMSuite

IEMSuite shows a "Connection Successful" confirmation and begins the initial sync.

Step 3 – Initial Product Sync

Immediately after authorization, IEMSuite runs an initial product import from Shopify. This may take 1–5 minutes depending on your catalog size.

What happens during the initial sync:

  • Every Shopify product variant is imported as an IEMSuite FINISHED_GOOD product
  • The Shopify Product ID and Variant ID are saved on each product for future inventory pushes
  • If a product already exists in IEMSuite with a matching SKU, the Shopify IDs are linked to the existing product (no duplicate created)
  • Products without a SKU in Shopify get an auto-generated SKU: SHOPIFY-{variant_id}
  • Current Shopify inventory levels are not imported - stock must be received through IEMSuite's Inbound Log
After the sync completes, go to Inventory → Products. You should see all your Shopify products listed with their Shopify IDs. This confirms the product sync worked correctly.

Step 4 – Map Inventory Locations

For inventory levels to push to the correct Shopify location, you must map each IEMSuite warehouse to a Shopify location.

1

Go to Inventory → Locations

Click on the warehouse you want to map.

2

Find your Shopify Location ID

In Shopify Admin, go to Settings → Locations. Click a location. The Location ID is the number in the URL: /admin/settings/locations/{locationId}.

3

Enter the Shopify Location ID

Paste the ID into the "Shopify Location ID" field on the IEMSuite location.

4

Save

Stock movements in this IEMSuite warehouse will now push inventory to the mapped Shopify location.

If you only have one Shopify location, map it to your primary IEMSuite warehouse. Multi-location mapping (Growth/Scale) allows different warehouses to push to different Shopify locations independently.

Step 5 – Test Order Sync

To verify orders flow from Shopify to IEMSuite in real-time:

1

Place a test order on your Shopify store

Use Shopify's draft orders or create a real test order. Shopify needs to send the orders/create webhook.

2

Wait 30–60 seconds

IEMSuite processes webhooks asynchronously via a background queue.

3

Check Orders in IEMSuite

Go to Orders. The Shopify order should appear with source = SHOPIFY and the Shopify Order ID visible.

4

Verify stock reservation

If the ordered product has available stock, the order should be in PACKED status with a stock reservation created.

If the order does not appear after 2 minutes:

  • Re-open the IEMSuite app from your Shopify admin - webhooks are re-registered automatically when the app loads
  • Place the test order again

Step 6 – Verify Inventory Push

1

Receive stock via Inbound Log

Create an inbound log for one of your Shopify-linked products with a quantity > 0.

2

Check Shopify inventory

Go to Shopify Admin → Products → [product] → Inventory. The available quantity should now reflect what you received in IEMSuite (within 30 seconds).

3

Verify the mapped location

The inventory should appear on the specific Shopify location you mapped in Step 4, not the default location.

IEMSuite pushes the total AVAILABLE quantity of a product across all mapped warehouses. Lots in PENDING_QC or QUARANTINE are excluded from the Shopify push.

Step 7 – Shopify Embedded App

After installation, IEMSuite appears as an embedded app inside your Shopify Admin. Access it from Shopify Admin → Apps → IEMSuite.

The embedded app gives you access to three Shopify-specific dashboards without leaving Shopify:

Embedded PagePlan RequiredWhat It Shows
QC DashboardGrowth & ScaleQuality control inspections for lots linked to Shopify products. Pass/fail rates, pending inspections.
Cost AnalyticsScale OnlyCOGS per Shopify product, profit margin trends, production cost breakdown.
Production CostsScale OnlyManufacturing cost analysis for production batches linked to Shopify orders.
During BETA, all three embedded pages are accessible regardless of plan.

Troubleshooting

Orders are not appearing in IEMSuite

Shopify webhooks may not be registered. Re-open the IEMSuite app from your Shopify admin (or reinstall it) - webhooks are re-registered automatically when the app is authorized. Then place a new test order.

Shopify inventory is out of sync

Stock levels are pushed to Shopify automatically whenever stock changes in IEMSuite. If products themselves are missing or outdated, use the "Sync Shopify" button on Inventory → Product Catalog to re-import products from your store.

Products show no Shopify Variant ID

Products created from the Shopify import are auto-linked. For manually created products, make sure the SKU matches the Shopify variant SKU, then run "Sync Shopify" on Inventory → Product Catalog so the product is matched and linked.

Fulfillment notification not sent to customer

IEMSuite creates the fulfillment record in Shopify when a shipment is confirmed as SHIPPED. Shopify automatically sends the customer email. If not received, check Shopify Admin → Notifications settings.

I see "Authorization failed" or "Store not connected"

The OAuth token may have expired. Re-open the IEMSuite app from your Shopify admin - if authorization is needed, Shopify prompts you to re-approve and the connection is refreshed.

My Shopify location shows 0 inventory even after receiving stock

Check that the IEMSuite warehouse is mapped to the correct Shopify Location ID (Step 4). Also verify the stock lot status is AVAILABLE, not PENDING_QC or QUARANTINE.

Environment Variables (Developers)

If you are self-hosting IEMSuite or setting up a development environment, you need the following Shopify-specific environment variables:

# Shopify App credentials (from Shopify Partner Dashboard → Your App → API credentials)
SHOPIFY_API_KEY=""           # Client ID
SHOPIFY_API_SECRET=""        # Client secret (keep this secret!)

# Public-facing URL of your IEMSuite deployment
# Shopify uses this as the redirect URL after OAuth
SHOPIFY_APP_URL=""           # e.g., https://app.iemsuite.com

# Same as SHOPIFY_API_KEY - exposed to the frontend for the install button
NEXT_PUBLIC_SHOPIFY_API_KEY=""
The Shopify app must be configured in your Shopify Partner Dashboard with: App URL = your SHOPIFY_APP_URL and Allowed redirection URL ={SHOPIFY_APP_URL}/api/auth/shopify/callback.