Kaddra integrates with Shopify using a Private App model.
Go to Apps > Manage Private Apps > Create New Private App
Admin API Permissions
The integration is based on a Webhooks model. How this works is when an action happens e.g. Product is saved it will send an update to Kaddra and vice versa.
With this configuration it means that Shopify is the source of truth for all product data.
● Integration will look for a category in Kaddra based on the collection name, if none found then the product will not be imported.
● The primary category in Kaddra will be set to the first collection in Shopify, any subsequent collections will be added as Related Categories in Publishing Tab
● Categories must be published in Kaddra
NB: Due to a limitation of Shopify API if only the product/collection relationship is changed in Shopify it won’t trigger the webhook
● Shopify does not have a concept of publishing rules
● Each product arriving from Shopify will copy the publishing rules from the matched Category
● If a Vendor in Shopify does not exist in Kaddra then it will be created as a Partner
● If a Product Type in Shopify does not exist in Kaddra then it will revert to a default product type with the code “INTEGRATION_PRODUCT_TYPE”
● When an order is placed in Shopify then the inventory will be updated in Kaddra
● The inventory locations in Shopify will be matched with a Market in Kaddra
○ As long as one matches the product will be imported, but only the inventory for the inventory location that is matched will be set.
With this configuration it means that Kaddra is the source of truth for all product data.
● When a product in Kaddra is saved as Draft it will be sent to Shopify
○ NB: If the product has been published in Kaddra and a change is made in Kaddra (changing it to the Draft) the change won’t be synchronized to Shopify until the product is Published in Kaddra.
● Integration will look for a collection in Shopify based on the category name, if none found then the product will be imported but won’t be associated with the collection.
● The primary category in Kaddra will be set as the first collection in Shopify, any related categories will be added as collections.
● Categories must be published
● If a Partner in Kaddra does not exist in Shopify then it will be added.
● If a Product Type in Kaddra does not exist in Shopify then it will be added.
● The price will be set highest price available or come from a tier called “Web”
● “This is a physical product” will come from the Product Type “Physical Delivery Required” but only when variants
● Inventory management will be enabled by default
● Kaddra will match the warehouse if it’s set or the market name with a Shopify inventory location, if no match is found then no inventory will be set.
● Shopify has no concept of tier-based pricing. The integration will look for a tier named “Web” and will use this price, if there is no “Web” tier then it will take the highest price available for the variant.
● Tax will be charged if the variant is available in a market that has a tax rate > 0
● Shopify does not allow to have a published version and draft version at the same time. Because of this, once a product is published in Kaddra any change in Kaddra will set it in Kaddra as draft, only once the product is published will the changes be synchronized with Shopify.
○ Exception: Price and Inventory changes will be synchronized irrespective of
● Product expiry.
○ Shopify does not have a concept of expiration date on products, as such to remove products from Shopify would need to be done manually.
○ Shopify does not have a concept of multiple markets, as such there is no match for this. It will take the inventory across all markets and find a matching inventory location based on warehouse name, or market name
● When an order is created, the customer will be created in Shopify if it doesn’t exist already.
● Customers created by Kaddra will be tagged with “Kaddra”
● Orders originating in Kaddra will have notifications managed by Kaddra and so Shopify will not send notifications
Identifying Kaddra Orders in Shopify
● The source_name field will be set to kaddra
● Also a tag called “kaddra” will be added.
● Kaddra will use the “decrement_obeying_policy” option when creating an order
○ “Follow the product's inventory policy and claim inventory, if possible.”
● Any delivery fee in Kaddra will be added as the Shipping fee and the name of the fee will be in the Delivery Method.
● Kaddra allows different prices for the same SKU, Shopify however does not support this. When the price in Kaddra is lower than or higher than the price in Shopify, when the Order goes to Shopify the price taken will be the price as stored in Shopify.
● Discounts applied in Kaddra will not be reflected in Shopify
● If the order is cancelled in Kaddra it will be cancelled in Shopify ○ On Hold / PayNow / Credit Terms transactions will be marked as Voided ○ CC Transactions will be marked as Refunded, but the refund will be via Kaddra
● Changes to the Shipping Address will be updated in Shopify
● Changes to the Billing address will NOT be updated in Shopify due to a limitation of Shopify API and System.
○ https://community.shopify.com/c/Payments-Shipping-Fulfillment/Chan ge-Customers-Billing-Address/td-p/201980
● Fulfillment in Shopify will be done when in Kaddra the order is marked as “Dispatched”
○ The inventory location to fulfill from will match based on the market or warehouse name.