Shopify: channel guide
About this guide
This is a ChannelEngine guide on Shopify as a channel. Here you can find information on how to create an account on Shopify, how to configure this channel on ChannelEngine, what the specific requirements are, and more.
Table of contents
To start selling via Shopify you need to create an account on their website. ChannelEngine supports connections with the Basic, Shopify, Advanced, and Plus plans.
The costs related to using Shopify can be found on the pricing section of their website.
|Product offers (Merchant product number matching)||Multiple fulfillment locations|
|Product variations (size/color)||Draft orders|
|Product images||Partial cancelations|
|Returns/refunds (merchant and channel)|
* Although sales channels are supported, it is not possible to pick and choose where your products are/are not listed when this feature is enabled. I.e.: if you list a product on Shopify, it also becomes available on whatever marketplaces are integrated with it.
Settings and configuration
Setting up each marketplace on ChannelEngine follows the same flow, once you add the marketplace:
- Go through the Setup.
- Create a Product selection.
- Complete the Categorization.
- Set up the Mappings: content, offers, and carriers.
- Configure the Pricing: rules and currency conversion.
- Finish the Activation.
- Check the Listed products overview.
Channel-specific requirements and exceptions
To connect your Shopify store with ChannelEngine, you must add ChannelEngine as a private app in the back-end of your Shopify account.
To add ChannelEngine to Shopify:
- On your Shopify admin page, click Settings.
- In the left panel, go to Sales channels, Apps and sales channels.
- Click Develop app and then Create an app.
- In the Create an app dialog box, in the App name field, enter the app's name. The recommended name is 'ChannelEngine'.
- In the App developer field, enter the email address of the owner of this Shopify account.
- Update the permissions of the private app, so ChannelEngine has the required access:
- Customers - read and write
- Discounts - read and write
- Fulfillment services - read and write
- Inventory - read and write
- Order editing - read and write
- Orders - read and write
- Products - read and write
- Product listings - read and write
- Shipping- read and write
- Store content - read and write
- Third-party fulfillment orders - read and write (if you make use of third-party-logistics)
- Translations - read and write (only if Additional languages is configured)
- Click Create the app.
- Click the API credentials tab. The API credentials should be generated and visible in the API key and secret field.
Once your Shopify account is active, add the channel to your ChannelEngine environment and go to its Setup page. The following settings can then be configured:
- API key password - the Admin API access token from your Shopify back-end.
- API shop URL - your Shopify store URL. E.g.: myshop.myshopify.com.
- Shop URL - the public URL for your store. E.g.: www.myshop.com.
- Location identity on Shopify - on Shopify, go to Settings, Locations. Open the default location. You can find a number after /locations/ in the URL. This is your location identity. Add this number so ChannelEngine can update your stock and orders.
- Currency - enter the currency you want to use for prices and shipping costs, using the ISO standard currency code. E.g.: AUD, EUR, USD, etc.
- Name for option 1-3 - enter a name to replace the default.
- Additional languages - select from the list of languages in which you want to export product content (i.e.: Title, Body HTML, Option 1-3). Before you can use this setting, you need to make sure that the Translations scope has the required permissions.
- Extra metafields to product export - lets you specify extra product data. The name of the metafield can contain up to 30 characters.
- Cancelations are handled by Shopify - if enabled, ChannelEngine lets Shopify handle all cancelations.
- Delay orders with gifted order lines - if enabled, ChannelEngine delays importing orders to allow gift card transactions. This setting is added because gift card orders take longer to process on Shopify.
- Enable fallback for empty billing addresses - if enabled, ChannelEngine automatically fills out empty billing address fields based on details from the customer's data. If Shopify does not have the customer's data, ChannelEngine uses their shipping address. This is useful for orders placed on a channel other than your webstore, such as a brick-and-mortar store – and ChannelEngine requires billing information to save order data in its database.
- Include shipping costs for cancelation refunds - if enabled, the grand total of the order lines is refunded. I.e.: including the shipping costs.
- List products on all sales channels - if enabled, ChannelEngine publishes all your products to all sales channels.
- Notify customer on return/refund - if enabled, ChannelEngine sends an order refund notification.
- Notify customer of shipment/cancelation - if enabled, ChannelEngine sends shipping confirmation and order canceled notifications.
Order VAT/sales tax calculation option - the options are:
- Let ChannelEngine calculate the VAT rate, assuming the order prices include VAT/sales tax
- Use VAT/sales tax from Shopify
- Payment ID - if enabled, payment IDs are added to the order extra data for this channel.
- Product extra data aspects - select the custom attributes to be added to the order as extra order data when the import order task is executed.
- Restock items in case of refunds - if enabled, ChannelEngine automatically restocks products in the Shopify warehouse.
- Set orders to closed after import - when enabled, ChannelEngine sets order statuses to Closed, and orders are not handled. Instead, orders are handled on Shopify.
Use grandparent products
When disabled, ChannelEngine creates a product family for every parent under a grandparent product. When enabled, the following applies:
- All related child products are nested under the grandparent product.
- Parent products are ignored.
- Parent-child families are not affected.
- Standalone products are not affected.
In either case, you need to map the content attributes Option 1 and Option 2 accordingly to correctly set up the variations. Note that if you have already exported products to Shopify via ChannelEngine, you need to take the following steps before enabling or disabling this setting:
- Remove all products from the Shopify back-end.
- Request the deletion of your listed products.
- Save your existing product selection one more time.
- Run the content and offer exports.
If you are not sure of the impact this setting may have on your setup, get in touch with your contact person or a member of the Support team at ChannelEngine.
On Shopify, there are only mappings under the Content mappings tab. Make sure to map the attributes required across all product categories:
- Price - the product's price.
- SKU - the product's Merchant product number. To link to existing products, this attribute should be the same as the SKU field on Shopify.
- Title - the product's name.
There are also optional attributes that ChannelEngine advises you to map:
- Barcode - the product's EAN.
- Body HTML - the product's description.
- Compare at price - sets the from-to pricing and works as the product's catalog price.
- Fulfillment service - the ID of the fulfillment service associated with the variant.
- Handle - this value is automatically created from the product title.
- Inventory policy - indicates whether customers are allowed to place an order for the product variant when it is out of stock. I.e.: backorder.
- Option 1 - used to create a single variation (parent-child). The only way to create product variations on Shopify is to set up a correct grandparent-parent-child structure on ChannelEngine. Once this is set up, you must fill out the attributes Option 1 and Option 2. E.g.: if you have a t-shirt in various colors and sizes, Option 1 must be connected to the attribute Color and Option 2 to the attribute Size.
- Option 2 - used if Option 1 is filled out. This option generates a double variation (grandparent-parent-child).
- Product ID - specifies the product on which to create the variant.
- Product type - the product's category.
- Requires shipping - indicates whether the variant requires shipping.
- Tags - enter a comma-separated list of tags that have been added to the product.
- Vendor - the product's brand.
- Weight - the variant's weight.
- Weight unit - the weight unit used to measure the variant. E.g.: kg.
Shopify does not state if a product is published or not. The only visible aspects are the tasks and if their statuses on ChannelEngine. At first the status of a product is set to Created. After it is created on Shopify, it changes to Updated.
Note that when the creation of the product does not go well, Shopify only provides you with minor feedback. This feedback is shown under Reason, below the Last import from channel selection.
To create new products in your Shopify back-end, ChannelEngine needs to perform three tasks: export the product content to Shopify; export the offers; and export product images. When all three tasks are completed, the products are shown correctly in your Shopify account. Check with your Customer Success Manager or Onboarding Specialist when these tasks are scheduled for the Shopify channel, so you know how long it takes to see your new products online.
Link to existing products
To link to existing products in your Shopify back-end, set up the correct SKU of each Shopify product in the mapping attribute SKU. Make sure to inform your Customer Success Manager or Onboarding Specialist before you do that – and do not activate the channel until you get the go-ahead. ChannelEngine must update an export product setting in the back-end for you.
Work with product variations on Shopify or ChannelEngine
The only way to create product variations on Shopify is to set up a correct grandparent-parent-child structure on ChannelEngine. Once this is set up, you must fill out attributes Option 1 and Option 2 under Mappings. E.g.: if you have a t-shirt in various colors and sizes, Option 1 must be connected to the attribute Color and Option 2 to the attribute Size. If you have a grandparent-parent-child structure set up on ChannelEngine, it is not possible to set up the products on Shopify as standalones.
Return and refund handling
When using the Shopify integration, you have two options to set up return and refund handling:
- Shopify is leading - on Shopify you have the option to create a refund of an order. This refund becomes a return on ChannelEngine, which could be handled like a normal channel return on ChannelEngine.
- ChannelEngine is leading - when creating a return on ChannelEngine, it becomes a refund on Shopify and 'paid out' is triggered.
To see the information related to each payment you receive via Shopify, follow the steps below:
- On your Shopify channel, go to the Setup page and click Advanced settings.
- Enable the Payment ID setting.
You can then access the details of your incoming orders and see information such as the payment method and payment ID. The latter allows you to match the orders from your overview on ChannelEngine with the information received from your payment provider.
Metafields are a Shopify functionality that allows you to send additional information about your products, collections, orders, etc., that is usually not captured via the Shopify admin. This is a particularly useful feature if you are using a PIM system or a product feed, and want to send extra data or custom attributes to your Shopify store. A detailed explanation of metafields and examples of how they can be used can be found in the Shopify help center article Metafields.
Metafields can be mapped on the Setup page of your Shopify channel on ChannelEngine under Advanced settings. Select the extra data fields (a.k.a. custom fields) you want to map and click Save. ChannelEngine then creates these extra data fields as metafields on Shopify.
The following requirements apply to the metafields:
- Maximum character length - 30 (the field name); none (the field value).
- Plain text and new line characters (i.e.:
\n) are supported.
- HTML formatting is not supported.
An explanation of how to create and manage extra data fields can be found in the article ChannelEngine: custom attributes (a.k.a. custom fields/product extra data).
Order extra data items
When an order is imported to ChannelEngine, ChannelEngine also fetches extra data items related to the order itself – or to order lines. This extra data is specific to this marketplace. An explanation of each can be found below:
Order extra data
||Yes||Order number as taken from the channel order.|
||Yes||Name taken from the channel order.|
||Yes||CheckoutId from the channel order.|
||Yes||Payment gateway names from the channel order.|
||Yes||Payment IDs for transactions related to the order.|
||No||Carrier code of the shipping carrier that will fulfill the delivery of the channel order.|
||Yes||Indicates any discount applied to the shipping price against the shipping lines in the channel order.|
||Yes||Related to the tender transactions processed for a channel order.|
Order line extra data
||Yes||Related to any discount applied to the channel order.|
* Conditional fields are only displayed if the channel provides a value.
My shipments are no longer exported to Shopify, and the 'Channel status' displays 'Error: the API client does not have the required permission(s).' What is wrong?
That error is related to the permissions Shopify needs to provide ChannelEngine with. To solve it, refer to the Setup section of this guide – and make sure to grant all required permissions. Once this is done, get in touch with ChannelEngine to 'reset' all shipments that have been stuck.
Why is my order not imported?
ChannelEngine fetches Shopify orders from Shopify are fetched with the use of an order filter, to prevent having to filter through huge lists of orders every time ChannelEngine checks for new orders.
This filter's parameters are:
- The order is created in the last 7 days (from now).
- The order has the financial status Paid.
- The order has the status Open.
If the order does not comply with all three parameters, it will not turn up in the results and will never be imported on ChannelEngine. E.g.: if you have an order in Shopify that was set to paid after 3 days after creation, it will not appear in ChannelEngine.
Why is my return not visible?
While a return can be created in Shopify and the status of the order will change to Return in progress it is important to realize that these returns can be created in the Shopify backend, but are not in any way retrievable via the Shopify API (see the Shopify forums for more info). Therefore any return that is created in Shopify, will not be visible in ChannelEngine. Should Shopify add the option to fetch and update returns via an API endpoint this might change.
Next to creating returns in Shopify, it's also possible to create a refund. These refunds ARE retrievable via the Shopify API, so if one is created in Shopify, this should be imported in ChannelEngine. There is however one very important thing to note: Shopify will only return refunds with an actual value. So if you create an order with a value of 0.00 and you refund this, this refund will not be made available via the Shopify API and thus never be imported in ChannelEngine. If the refund has any value, this should appear in ChannelEngine as a return.
How often does each task run on Shopify?
every 30 minutes (parameter: 'full')
every 15 minutes
every 15 minutes
must be manually run
every 60 minutes
every 10 minutes
every 60 minutes
every 10 minutes
every 20 minutes
every 20 minutes
must be manually run or scheduled