Shopify Integration
Integrate your Shopify instance through Shopify Private Apps
Eytan Daniyalzade avatar
Written by Eytan Daniyalzade
Updated over a week ago


Toolio provides turn-key integration with your Shopify instance via Shopify Private Apps. With the Shopify integration, Shopify can serve as a source of truth for your Sales, Inventory and Product information. The table below gives an overview of the type of information available for each of the data feeds, and your options where Shopify doesn’t have all the required information.

Shopify Feeds

Products, variants and collections

Provides variant level meta-data and pricing information. Shopify will likely not have the merchandise hierarchy information you need for planning. In this case, you can manually upload product attributes directly into Toolio.

Orders, transactions and fulfillments

Provides variant and location level sale information. If you are running all your commerce activity on Shopify, then Shopify will be your source of truth for sales information. If not, integrating the sales feed from your ERP will be a better option.


Provides variant and location level daily inventory information. Toolio snapshots your inventory daily, so that you can leverage historical inventory data effectively.

How to Integrate Shopify and Toolio

2. Grant ‘Read Access’ in Admin API for the following scopes:

  • Inventory

  • Locations

  • Products

  • Orders

Here is an example for how to grant access for the inventory scope.

You can read more about API Scopes on Shopify here

3. Share Integration Details

Please share the following integration details with your Customer Success manager at Toolio:

  • Admin API access token

  • API Key

  • API Secret Key

  • Shopify Shop Name


Gross Sales Cost in Toolio is lower than expected

Please make sure that all products in your Shopify account are attributed with accurate costs at the variant level. Please see how to bulk update products on Shopify here.

If you cannot update your pricing information on Shopify, you can use Toolio's data enriching capability; however, managing the sales cost information directly in Shopify (or your ERP) would be the recommended option.

Gross Sales Retail in Toolio is lower than expected

Gross Sales Retail in Toolio is defined as topline sales after discounts and markdown but before returns. Please note that this definition differs from "Gross Sales" in Shopify, which is before discounts. Please make sure that discounts and markdowns have been deducted from your Shopify Gross Sales when comparing against the Gross Sales Retail value in Toolio. You can read more about the metrics in Toolio and how they are defined here.

Discounts in Toolio are higher than expected

If you are using a returns solution such as Loop Returns, please read more about how exchanges are handled in Toolio here.

How are Markdowns captured with Shopify?

Please see this article to understand how Markdowns are calculated automatically as a part of the Shopify Integration.

Product Images are Incorrect
Please make sure that your product images are attributed at the variant level in Shopify, and that the Variant Ids in Shopify are identical to the Variant Ids on your product feed.

Sales Location Discrepancies

Because sales location from Shopify is captured after fulfillment has begun, please note that sales which have not yet entered the fulfillment process will be tagged with a default fulfillment location. Please consult with your Customer Success Manager to change your default location.

How are Returns Calculated?

Shopify Orders feed contains the items that were refunded in each Order, and that is the information Toolio uses to calculate returns. Note that the returns values are attributed to the day that the refund was initiated, not the date of they original sale.

How do Shopify API fields map into Toolio fields?

Sales Feed

Toolio Field

Shopify Field










fetched from product feed


(lineItem.price) * lineItem.quantity - totalDiscount


Math.max(0,(NUMBER('{shopify_variant__compare_at_price}' || 0) * NUMBER('{sales_units}') - '{discount}' - '{sales_retail}'))






fetched from product feed




Related Articles

Did this answer your question?