Highstreet deeply integrates with your Salesforce Commerce Cloud (formerly known as Demandware) backend. We make sure that your app's catalog is always up-to-date and that it shows the same products and categories as your website.
We designed Highstreet as a SaaS platform that requires very little maintenance. Key to this strategy is that we have invested in a deep integration with existing e-commerce platforms, such as Salesforce Commerce Cloud.
The integration is real-time, it goes much further than a static XML import. Product stock and cart calculations are always requested real-time. Orders created in the app end up in Commerce Cloud and are processed in the same way as orders that are initiated from the web.
The app connects to our Mobile Delivery Platform (MDP). The MDP has three main features:
1. Well-designed APIs
It delivers a set of APIs that are tuned and tweaked for the app. Our API developers have designed this API from scratch to match the precise needs of a mobile app. Mobile users do not always have a reliable internet connection so it is crucial that an API contains exactly what the user wants to see in a specific view.
It is also important that we serve just that what the app needs for a specific view, not more than that because we don’t want to waste bandwidth. Well-designed APIs lead to a better user experience.
For example, when users are browsing on the category level we are able to serve product data and images very fast because we fetch only a subset of all product data. When the user opens the product detail page more data is loaded. We develop and maintain these APIs ourselves and because we want to be fully in control of the user experience.
2. Mobile Delivery Platform (MDP)
The MDP is an aggregator of different services. From a maintainability and architectural point of view, it is preferable that the app connects to one endpoint, this is the role of the MDP. Most of the data that the user sees are fetched from Commerce Cloud, but some data is fetched from others services. For example, home merchandise and lookbooks are retrieved from the Highstreet Studio.
We are able to fetch data from Commerce Cloud using the Salesforce OCAPI. This API offers a broad set of APIs that allow us to fetch catalog data and these APIs also enable a user to complete the checkout flow.
The MDP offers speed. We have created a smart cache layer such that we are able to serve data very quickly. Users behaviour often leads to similar API requests being made. If 1000 users are requesting the same data (e.g. the first 20 products of a category) it doesn’t make sense to send 1000 identical queries to Commerce Cloud.
Our cache layer is smart in a way that it caches more than just API responses, it also caches individual products. If a user searches in the app we are quickly able to retrieve the list of products. If the products are in cache we do not need to query additional product data.
Our implementation uses the Salesforce Commerce Cloud OCAPI. Our integration covers the following entities:
- Categories such that the categories shown in your app match the ones shown on your website. The order of the products that are shown when the user opens a category also matches the website.
- We query all price books to retrieve the product prices. We have support for two active prices per product (usually sale and regular price).
- Using Commerce Cloud’s product_search API we make sure that search resultsfor a given search term are identical on the website as in the app.
- Both the master product and the product variants are retrieved when showing a product. For example, if a T-shirt exists both in red and yellow and the user opens the red product, he is also able to switch colour and add the yellow shirt to his basket.
- The app shows if a product is in stock. It takes into account the stock level, whether the product is orderable, and whether it’s back orderable.
- The iPad app is also able to show related products on the product detail level. The iPhone app does not yet support this feature.
- The set of product images matches the images that are shown on the website, both at the category level and on product detail level. Images are scaled according to the screen size and pixel density of the device.
Basket and checkout integration
- Products can be added to the basket. The app asks Commerce Cloud to calculate the totals (subtotal, total and tax_total). We never perform price calculations ourselves, but always let Commerce Cloud do this.
- An anonymous basket is created in Commerce Cloud. When the user logs in beforehand in the app's accounts section or during the checkout the products are migrated to the basket of that user.
- The user is able to log in in the app or checkout with his existing webshop account. Users can also finish the checkout as a guest. If the user does the latter, he can also create a new account in the checkout.
- Users are asked to fill in their address information. They can create a separate billing and shipping address. Addresses are stored in Commerce Cloud and in the app's account section. Address information is pre-filled for users that log in and have address information linked to their account.
- After logging in the user can select a shipping method. This list of shipping methods matches the website. Custom shipping methods might require custom implementation.
- Similar to the website, users can add a coupon code to get a discount.
- The list of payment methods is also retrieved from Commerce Cloud. When the order is placed we show a hosted payment page in the app. Payment is always performed using our your payment service provider. Some payment service providers require custom implementation during the implementation phase.
- After a successful payment, we make sure that the order is created in Commerce Cloud and that the payment is recorded.