Shopify
Also integrates with CarrierBot
Creating Products and Variants
Section titled “Creating Products and Variants”It is recommended to create your Shopify Products and Variants from BrewKeeper.
If creating your products in Shopify, there are some rules to follow to allow syncing in BrewKeeper
Products:
- A product must have a product type to be able to sync with BrewKeeper. In general for Breweries, the product type is Beer.
Product Variants:
- Variants must have skus. CarrierBot returns its rates by looking at SKUS
- The option name for a variant must be “Title” (not Size, Colour, Matrial, Style, etc…)
- Examples of (Title) option values: “Can - 350ml”, “Can - 350ml 6 Pack”
Note: these match our “Variant Type” descriptions
- Examples of (Title) option values: “Can - 350ml”, “Can - 350ml 6 Pack”

Inventory Tracking on a Shopify Variant
Section titled “Inventory Tracking on a Shopify Variant”There are two ways to stop tracking inventory in Shopify.
- Uncheck ‘Track Quantity’ on the variant
- Uncheck a location in the ‘Edit locations’ form
Only applies if you have multiple locations
Uncheck ‘Track Quantity’ on the variant
Before you can view or adjust inventory levels for a product, you need to set up inventory tracking for that product. When you track inventory for a product in Shopify, you can view the history of inventory for that product for up to the most recent 180 days
In Shopify
- Open a variant
- Scroll down to “Inventory”
- Uncheck “Track Quantity”
(Dev notes) As a result:
shop_variant.shop_inventory_item.tracked
is set tofalse
Uncheck a location on the variant
You can manage inventory for products from multiple locations, which could include one or more store locations as well as one or more fulfillment apps that has multi-managed inventory enabled.
In Shopify
- Open a variant
- Scroll down to “Inventory”
- Click “Edit locations” (a modal will open)
- Uncheck a location
This can also be done via the bulk editor
(Dev notes) As a result:
shop_inventory_level.available
is set tonil
Link Shop Locations to Sales Channels
Section titled “Link Shop Locations to Sales Channels”If you have a new Shopify Location, and you want BrewKeeper to control the inventory levels, you would link that Shop Location to a Sales Channel
Out of sync inventory levels
Once BrewKeeper is controlling the inventory levels in Shopify, it is possible BrewKeeper and Shopify inventory levels can be different.
A few ways this can happen:
- In BrewKeeper, user moves stock into sales channel BEFORE it is linked with Shopify (can be common)
- User changes inventory levels in Shopify (this does not change inventory levels in BrewKeeper)
- BrewKeeper somehow fails to update the stock levels (maybe Shopify rejects our request to update, this rarely happens)
The ‘sync’ page just shows you if the levels between BrewKeeper and Shopify are different. It is always assumed BrewKeeper has the correct shopify inventory levels
Shipping Rates - CarrierBot Integration (JP only)
Section titled “Shipping Rates - CarrierBot Integration (JP only)”B2B stores are ‘tax exclusive’ which means tax is added onto the shipping rate

B2C stores are ‘tax inclusive’ which means tax needs to be included in the shipping rates

We create a CarrierBot enpoint for each Shopify store, and for B2C, we multiply the rates by 1.1 (adding 10%).
# B2BC306: hokkaido: 560 north_tohoku: 490
# B2Ctax_rate: 1.1 # this setting is a multiplierC306: hokkaido: 560 north_tohoku: 490
Requested Delivery Dates (JP only)
Section titled “Requested Delivery Dates (JP only)”Some customers do not want their orders delivered as soon as possible.
This app (~$10 p/m) puts a calendar and time picker on your checkout page
https://apps.shopify.com/deliverydate-production
You can customise the calendar in several ways:
- minimum date (eg. 3 days from order creation)
- delivery period (eg. 14 days)
- …
It also understands timeslot codes from different Japanese shipping companies, including Sagawa, Yamato, Japan Post, etc.
Recommended settings if you wish to include pickup and local delivery on top of your current shipping rates:
- add the date picker, and it is NOT required
- in BrewKeeper, add ‘hold times’ to sagawa shipping codes which matches the RDD minimum date (eg. minimum date is 3 days, make sure hold time of 3 days)
Further explanation
if you offer pickup, that generally means the customer can pick it up the next day. This isnt possible if the rdd is a required field, and its minimum is 3 days from the order.
In this case, you need to let the user not enter any RDD, which just means ‘send this as soon as you can’. For pickup, you can add 0 hold days so its shipping date is tomorrow, for sagawa add 3 hold days.
Customer addresses limit
Section titled “Customer addresses limit”Shopify will only share the first 10 addresses of a customer with BrewKeeper (or any integration). A customer will usually do this when they want 1 shopify login for all of their bars.
Shopify does no allow BrewKeeper to access additional customer addresses.
Multiple shipping codes on an order
Section titled “Multiple shipping codes on an order”Shipping codes can be assigned to Carriers in BrewKeeper, which determines the shipment it will be added to.
eg.,
- refrigerated_shipping -> Sagawa
- custom -> Pickup
When editing an order, Shopify allows you to edit the shipping code.
Doing this adds a second shipping code to the order, which is generally “custom”.
The issue here is, if 1 order has 2 shipping codes, each of which is assigned to a different carrier, which one should BrewKeeper choose?
To keep things simple, BrewKeeper just stays with the first shipping code
Multiple payment methods on an order
Section titled “Multiple payment methods on an order”BrewKeeper has settings that allow you to set which payment methods contribute to making a monthly invoice.
An order can have two payment methods if the customer tries to use a card and is rejected. In this case, we assume the last payment method is the correct one, since the first is the one that failed.