Internationalization
The Dakine North American website is hosted by a single shopify+ website and admin. This allows for a streamlined management process for operating commerce in multiple regions at once. As this is a somewhat new opportunity in ecommerce we will explain this further below and in greater detail in the follow-up sections.
The site uses 4 main domain / cnames.
Domain | Priority | Location | Language |
www.dakine.com | Default | USA | English |
dakine.com | Secondary | USA | English |
ce.dakine.com | Secondary | Canada | English |
cf.dakine.com | Secondary | Canada | French |
No server level redirection.
As we are leveraging multiple domains on a single install we are not using domain redirection from a server level. Any redirections will use our cart attributes and javascript to facilitate the desired experience.
To facilitate hreflangs we use Shopify attributes in liquid to ensure that these are all set correctly on page render for all experiences.
For specific sections like homepage slideshow we have integrated a location picker where you can define what region or regions should be able to see that art. This can be added to whatever sections you would like, just let us know if you need additional access.
We are currently leveraging "Omega Instant Search" to ensure that relative links are being presented to customers in their search results. By this we mean that with many apps would show results that linked back to www.dakine.com even if a customer was shopping on ce.dakine.com.
In addition Omega will adjust the UX verbiage based on the page language further unifying our multilingual experience.
Due to the complex integration of price books, we are not presenting prices within search results at this time.
Related products are being personalized by 4tell. The prices and availability within their results are being pulled from the pricebooks metafields to be localized. Product availability is being sync'd from the product feeds.
Locational Restrictions
If a customer is shopping the site in USA then when they get into the checkout experience they will have the option of shipping to Canada removed and vice versa. This makes sure that we don't get into any over selling issues based on warehouse availability.
Visual Adjustments
As you'll read more about later in this document ( see:pricing ), all prices are actually discounted from Shopify's standpoint as the pricebook adjustments are lowering the price to meet the MAP rules. Due to this shopify checkout will want to show discount lines on everything which is not the experience we are looking to deliver to the customer. Of note this will apply to the Cart & Minicart scenarios as well. So to make sure we deliver the set prices we're looking for we need to adjust the labels within the checkout experience. Happily this is relatively simple.
Pricing
In the top left corner of the website you can swap between locations. This will change your:
- domain
- currency
- availability
- language
Dakine's available to sell is based on 3 warehouse locations
- Dakine US - only ships to US
- Dakine Canada - only ships to Canada
- GBGSAL - ships to both US and Canada
Every morning at 9am our middleware will sweep the site to see if a product is available to sell in the USA and again for Canada. This takes into effect any inventory buffers that might be running. A product will be tagged as soldoutcanada or soldoutusa based on it's availability.
So if a single variant is available to sell then that product will stay online for that specific region. Otherwise it'll be removed.
Hide Out of Stock - Customization
Only applicable for apparel
As we are currently in a warehouse migration for apparel this rule only applies for apparel, Packs of all types will always be hidden if out of stock.
Product grid items on the collection / PLP pages are filtered by if the product is available in that region which is determined by the Available to Sell rules above - generated daily.
We currently do not give different navigational items per region.
- The consumer can choose french from the dropdown in the header and they will be loaded into the french Canadian experience.
- They can visit the site at the specific subdomain - cf.dakine.com and will be loaded into the experience.
Products won't have translated url handles
As each product/page is only a single record it can onyl have a single handle. So while each product can have a translated experience it won't have a uniquely translated url handle.
Defined Translations
On the website we have defined translations for
- Product title
- Product Description (including details)
- Meta Description
- Meta Title
French Defined Translations https://docs.google.com/spreadsheets/d/1pnW7nSp7Y7f4n8IT4rWE4hDlLPt5jeAVm5SV8nF1rQo/edit?usp=sharing
General Translations
For copy outside of the product data we are leveraging google translate natively within the code to translate the additional copy points. This is using the google api & has the inpage elements (popups & additional bars) removed.
No Translate
For items that we do not want translated we leverage the no translate tag. <span class="notranslate" translate="no"> </span>
Checkout Language
The checkout experience leverages the google api as well to deliver a translated experience if the customers language preference is FR, again this comes from the cart attribute that was set, in checkout this becomes a checkout attribute and is activated in checkout.liquid
When a customer visits the site they are given 2 cart tags.
- Cart language
- Cart location
These tags will dictate:
- the cart contents (meaning a cart built in Canada will not be available in the US and vice versa.) Though one customer can actually have 2 carts going, 1 for each region and they will be remembered between the sessions.
- The post purchase communication. The cart language will catalog what language that order was checked out in. Yes this does mean if the next cart they wanted to shop english then that purchases emails would switch to english.
These tags are switched when someone switched locations along with their presentment currency.
Emails are available in both French and English and will be sent to the customer based on the language they were using in checkout. You can see the verbiage for these in the shopify admin. The translations are the default communication for each language provided by Shopify.
This does affect both copy & subjects. it uses {% if attributes.language == "FR" %} to adjust the language as needed.
The Dakine site is run using price books designed by Wick Creative. These run using variant metafields to facilitate all pricing both regional MAP and Sale or off-MAP.
Metafields Used
Name | Description |
dkprice-us | MSRP pricing for US |
dkprice-us-sale | Sale price (if exists) for US |
dkprice-ca | MSRP pricing for Canada |
dkprice-ca-sale | Sale price (if exists) for Canada |
Important Notes
- These prices should be set as the number in the desired currency and not a converted price. We will use shopify scripts to confirm customers will always see the MAP price no matter the current conversion rate for the currency.
- The price for the product will be an inflated price = 1.5x the US MAP. WHY?? Well the shopify price can only be lowered in checkout, so the shopify price is intentionally inflated on the variant to leave room for fluctuations in prices due to currency conversions.
- Default price visualizations will be generally incorrect while using price books as we will not be using the default shopify pricing system this applies, but isn't limited to:
- Search apps
- email notifications
- discounts
- feeds
- Shopify Launchpad can be used but the price adjustments aspect of the app CAN NOT be used. As our shopify prices are bloated to make room for the MAP price books we don't want anything adjusting those prices.
When looking at an order in Shopify's admin it's important to understand how to read the pricebooks data that comes along with the item. If we see this item we can notice a few things.
- The "inflated" shopify price is $375 - never shown to the customer.
- The US price was $250 as was charged to the customer & shown as price-us
- The price in Canadian was $299.99 but not used.
- Both the pro prices are set to MSRP price as this consumer was not a pro.
- FR Title is the title this customer would have been shown if they were shopping in french.
- Inv-us is the stock that was available in the US available to sell (see inventory rules for deeper info) at the time of purchase.
- Inv-ca is how much stock was available at the time of sale, again for this order that was not referenced, which is a good thing as it would have been an oversell.
The pro program works for all customer types and have the same % discount but the base prices changes based on the specific price book.
For further information on pro pricing rules you can visit the Pro Program tab in the left hand navigation here.
What if sale is better than pro?
Great question =), If there is a sale price that is better than what the pro would get than the system will compare the two prices and give the customer the cheaper price.
Discount = long term price reduction
For past seasons or once MAP has expired.
Discounts are facilitated through updating the price books. This is done in bulk using spreadsheets. For the time being these requests should be sent to Wick Creative, but we'd be happy to transition this access to your team in the future.
Promotion = temporary price reduction
For off-MAP windows, season sales, etc.
To run a promotion you can submit a promotion request or issue a Discount Code.
Promotion Request Form
This type of promotion is an overall adjustment to the price rules running the site. This is the most flexible type of promotional pricing and will allow for very specific customization. In addition this can be scheduled to go live with Shopify Launchpad.
Benefits of a Promotion Request
- Can be region specific
- Can be customer group specific
- Can be a variable price discount
- Can be Scheduled
- Can work alongside warranty
- No customer action needed, auto applied
Create a Discount Code
Standard discount code, enter X at Checkout.
Create a Code
Benefits of a Discount Code
- Fast & easy to make, no scheduling needed
- Great for a single use or limited use scenario
Automatic Discounts
No Automatic Discounts
We wil not be using automatic discounts at this time as they interfere with warranty claims. We can do discount codes, just not automatic discounts.
Launchpad Discount
No Launchpad Discounts
We will not be using launchpad discounts as they will interfere with MAP rules and the price books.
Real time tax calculations are managed on your site using Avalara for every region.
Currently gift cards have no way to be set specifically for individual currencies and regions so these are only available in the US at this point.
Shipping rates are managed in shopify with a profile for standard shipping and a profile for oversized shipping.
All orders are split when pulled from ecom manager. These are done by store numbers.
2 = Canada
4 = USA
In addition 2 seperate database numbers are kept with records of what the last Canadian order was that was pulled and what the last USA order was as well.
Admin Visualization
Orders are able to be visualized in the presentment currency for all orders that are not in USD. Go to an order charged in Canadian Dollars and you can reference these fields.
Fulfillment is sent to our middleware with locational store numbers, this information is mostly ignored as the Shopify install doesn't need the information.
Inventory is filtered into our SFTP in a single file with columns for each location. We combine this with the GBGSAL feed to update the shopify location numbers for each variant in the store every 4 hours. You can see more on this process in Inventory section.
In turn these numbers are combined to form our Available To Sell numbers which are passed to each variant as a metafield to facilitate the regional specific ATS options for customers & in checkout.
Metafields
Name | Description |
dkinv-us | This is the inventory from the dakine US warehouse + the inventory from the GBGSAL warehouse |
dkinv-ca | This is the inventory from the dakine CA warehouse + the inventory from the GBGSAL warehouse |
Inventory buffer
As there have been some difficulties with inventory numbers in the warehouse we have added on an adjustable inventory buffer in the theme customizer. This not only affects the item's availability in real time but it also is communicated to the process that dictates whether a product is sold out per country, which will remove it from the collection page for a region specific shopping experience.
Shopify only allows one bank account to be tied to each store. The currency will be sent into your account in your accounts preferred currency (USD).
Customers are grouped in shopify by both their region and language. This helps for quick differentiation as well a segmented discounting. Customers are tagged in checkout with their language preference of their last checkout. This does mean a customer can jump between groups as they desire.
This is handled by Shopify Flow and can be viewed here - https://dakine-prod.myshopify.com/admin/apps/15100ebca4d221b650a7671125cd1444/web/flow-summary?shop=dakine-prod.myshopify.com&flowId=69263
Customer | Tag | Region | Quick Link to Group |
USA | lang-english | USA | |
CA English | lang-english | Canada | |
CA French | lang-french | Canada |
To ensure we bring the most relevant experience to the email marketing platform we are tagging customers with their desired language preference after their order is made using Shopify Flow. Using this tag and their location we can adjust the url that gets put into the emails so that the customer is sent back to their desired experience.
Feeds are built daily by our middleware system and special shopify collections. These are made to facilitate. These include considerations for inventory rules/fulfillment centers, price books, and language.
- USA
- Canada English
- Canada French
The feeds for the 3 regions will all be different.
All regions warranty and returns will be managed in the same place, via their respective channels. See their specific documents for further details. Warranty Docs
We are using Returnly to facilitate returns. As this is an international return scenario we can't use their ad hoc system and have signed up for the enterprise solution. Part of this scenario includes specific rules for labels and duties as Canadian returns will be required to ship back to our USA warehouse in Missouri at this point in time.
See more information here - Returns Docs
Refund processing from the fulfillment warehouse in regards to shortages will need to accommodate presentment currency in the refund response via API. This is an additional step in calculating the return from the API that will make sure that the refund follows the logic set forth with the presentment currency for the customer.
If there's been an abuse, please report it here