The Shopify integration allows you to seamlessly connect your Shopify store with your manufacturing operations. This two-way integration automatically syncs orders from Shopify to Controlata and updates inventory levels from Controlata back to Shopify.
What the Integration Does
Shopify → Controlata
-
Order Import: All new orders from Shopify are automatically imported to Controlata
-
Order Updates: Changes made to orders in Shopify are reflected in Controlata
-
Order Deletion: If an order is deleted in Shopify, it's also removed from Controlata
Controlata → Shopify
- Inventory Sync: Stock levels are updated from Controlata to Shopify
Customer Data Limitation
According to Shopify policies, to access Customer data with custom apps, your store must be on the Grow plan or higher. So if your store is on a lower plan, all orders received from Shopify will use a generic "Shopify Customer" as the customer.
Setting Up the Integration
Step 1: Create an app in Shopify
-
From your Shopify admin, go to Settings > Apps.
-
Click Develop apps, then click Build apps in Dev Dashboard. This opens the Shopify Dev Dashboard.
-
Create a new app and give it a name (for example, "Controlata").
-
On the Create version screen, go to the Access section. Under Scopes, click Select scopes and add the following:
-
write_inventory
-
read_inventory
-
read_locations
-
read_orders
-
read_assigned_fulfillment_orders
-
read_products
-
read_fulfillments
-
-
In Webhooks API version select 2025-07
-
Click Release (top right) to release the version
-
Click Install app to install it on your store
-
Open Settings > Credentials and copy:
-
Client ID
-
Secret
-
Step 2: Configure Integration in Controlata
-
In your Controlata account, go to Settings
-
Scroll down to Integrations
-
Find Shopify and click Connect
-
Input all fields:
-
Your Store domain (your permanent .myshopify.com address, see the note below)
-
API credentials you saved at the previous step:
-
Client ID
-
Secret
-
-
-
Optionally, customize the Sale number prefix (default is "S-")
-
Choose the default Fulfillment method for new orders: From Inventory or Made to order
-
If you chose "From Inventory" at the previous step, then you can select the Default storage location for new sales orders.
-
Click Save
-
If all information is correct, you will see Connection created successfully
-
Finally, map your Shopify locations to Controlata locations by clicking Locations Mapping
-
Map locations and click Save
Important: use your permanent .myshopify.com address, not your custom domain. Every Shopify store has a permanent address ending in .myshopify.com that is set when the store is first created. To find yours, while logged into your Shopify admin look at the address bar (it looks like admin.shopify.com/store/XYZ, where XYZ is your store handle), or go to Settings > Domains and use the address ending in .myshopify.com.
Product Matching
Products between Shopify and Controlata are matched using SKU codes.
-
Ensure your products have consistent SKUs in both systems
-
You can set Alternative SKUs in Controlata for additional matching flexibility
-
If a product from a Shopify order isn't found in Controlata, the product information will be added to the order notes, but no new product will be created automatically
-
If no products are matched, the order will not be created in Controlata
Location Mapping
-
Location mapping is required to sync inventory levels between your locations in Controlata and in Shopify.
-
You can select Not mapped for any Shopify location if you wish not to sync inventory levels for this location with Controlata.
-
When orders are created in Shopify, no inventory location is assigned to them, so Controlata will use your Default storage location from connection settings, if your chosen fulfillment method for new sales orders is set to From Inventory in connection settings.
-
When you fulfill the order in Shopify, the location will be assigned to the order and it will be updated in Controlata.
Real-time updates
-
Order data syncs happen in real-time, but sometimes updates may take up to a few minutes
-
Inventory level updates happen once every minute