Only this pageAll pages
Powered by GitBook
1 of 97

User Guide

Intro

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Core

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Customers

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loyalty

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

What is DotApparel?

DotApparel connects your ERP instance to many different online platforms, we have partnered with most of the leading platforms to help drive your omni-channeling offering. Our solutions are a middleware that syncs different things from products, inventory, orders, customers, rewards, loyalty, gift cards, coupons and much more, along with a range of other features.

The solutions offer an easy-to-use interface to view and configure data without having to write custom code. Our standout feature is Mappings which allows you to map data from one format to another, and route them to their intended destinations (e.g. if you want to map a new Shopify tag, or metafield using ERP attributes).

Where is it hosted?

DotApparel solutions are hosted on a Google Cloud product called Firebase. This platform is designed to be more stable, scalable, and powerful than traditional server hosting. It is built using a serverless approach, which means that it automatically scales up and down based on usage, eliminating the need for manual scaling.

Serverless, essentially means there is not a server running 24/7 which makes it more cost-effective. This approach is the same as what larger products like Netflix and Spotify use, making it a reliable and proven option for hosting middleware.

What platform(s) do we support?

Apparel21

Apparel21 is a leading ERP solution designed specifically for fashion, footwear, and accessories retailers. It streamlines business operations by integrating point of sale (POS), inventory management, customer data, and supply chain processes. The platform is widely used by brands to manage their entire retail lifecycle, from product development and stock control to sales reporting and customer engagement. With built-in industry-specific features, Apparel21 enables seamless management of omni-channel retail operations, supporting everything from store sales to online orders and logistics, making it a trusted choice for the fashion industry.

Harmony

Harmony is a versatile ERP platform offering comprehensive solutions for retailers and wholesalers seeking robust integration across their supply chain and retail operations. It manages a wide range of business functions, including inventory, order processing, financial management, and customer relationship management (CRM). Harmony is particularly known for its reliability in syncing product data, managing orders, and ensuring real-time inventory accuracy across various sales channels. Its adaptability allows retailers to maintain a cohesive omni-channel strategy while ensuring efficient back-end processes, making Harmony a strong contender in the retail ERP landscape.

About DotApparel

For the last decade, we've specialised in crafting omni-channel solutions that create efficiency, increase conversions, and improve customer experience.

Over time we had developed and launched over 30+ custom ERP integrations. We found that each integration took time and we were repeating the same thing over again. So for us, creating DotApparel was the next step.

Why Our Clients Love DotApparel

Extensive features: Products and images, customers, orders & fulfillments, stores & inventory, gift cards, loyalty & rewards

Zero-code configuration: Attribute mapping tool to shape ERP references and custom data into tags and metafields

Welcome

This guide contains everything you need to know about DotApparel. It includes steps for installation and information to get you confident in understanding how the app works end-to-end. Whether you're a manager or coordinator, this guide will help you get the most out of DotApparel.

If you're interested in a demo of the app or more training,

Real-time integration: Live-triggered events to keep orders and customers accurate across all channels

Highly-reliable solution: Serverless architecture based on the Google Cloud platform

Omni-channel retail: Click and collect, ship from store, retail gift cards, and online returns

Blazing-fast inventory API: 100ms average response time on click & collect inventory checks

International scalability: Multi-region and multi-currency to support global brands

Fantastic support team: Support through our dedicated product team

About DotApparel
What is DotApparel?
Where is it hosted?
How does syncing work?
Solution architecture
Definition of “Instance”
Publishing products
schedule a meeting here.

Definition of “Instance”

DotApparel connects a Shopify store to a Retail API. Each Shopify store needs its own DotApparel app, which is called an "instance" and needs a separate project created within Google Cloud.

As explained in our Creating a Google Cloud account guide, DotApparel runs in a dedicated Firebase project. A single Google Cloud account can have many Firebase projects created. We will usually ask for a staging and production project so that we can test the DotApparel solutions before moving it to production.

Mappings

This section shows all the possible return mapping reasons that ERP is configured to accept. Reasons must be pre-configured in ERP before DotApparel can complete the return mappings configuration.

ERP credentials

This is where we save the URL of the ERP Retail API. We need these details to allow Shopify to connect to your ERP instance.

Modules

We offer a number of addtional modules that can be enabled within your instance to futher enahnce the base offering by providing a more omni-channel feature set to your customers.

Overview

Welcome to the DotApparel Core User Guide

Our aim is to help you get started with our app and make use of its features for smooth integration between your ERP and Shopify.

DotApparel Core is a middleware that syncs products, inventory, orders, customers and many others thing back and forth between your online store and your ERP.

Mappings

With the DotApparel app, you can control how information from your ERP is displayed in Shopify. This is done through "mappings", which are templates and rules that you can customise. DotDev will set up the initial mappings based on your preferences, but you can always make changes yourself within the app.

Examples

Ignore sync

Skipping inventory sync for specific products or SKUs

Ignore Sync

Inventory buffer

Set inventory buffer for specific products or SKUs

Inventory Buffer

Keep items sold out

Set inventory to ZERO in Shopify for specific products or SKUs

Unlimited inventory

Set unlimited stock for specific products or SKUs in Shopify

Keep Items Sold Out

Example: all products in the Pokemon collection set inventory to ZERO

Assuming the stock level in ERP has never exceeded 999999.

Quick Links

Order errors & how to resolve them

Read more:

If you need further assistance, please reach out to DotApparel Support using the in-app support widget.

Fraud Solution

Shopify offers a built-in feature which will be utilised for this integration. When Shopify captures an order, it assigns a level of "risk" to the order which indicates whether further investigation should be made before dispatching the goods.

Shopify will be configured such that payments are not captured by default, only authorised. A will be created such that when an order fraud risk is acceptable, the payment will be automatically captured.

If the order risk is unacceptable, the payment will remain in an authorized state, the order will be tagged with a fraud tag and an email sent to the store email address. A saved search will be set up in the Shopify admin to enable the retail team to easily see these orders.

Only orders which have a captured payment will be synced to ERP.

In the case that an order is erroneously marked as fraudulent, it can be synced simply by capturing the payment in the Shopify admin, which will trigger a fresh webhook to the integration.

Unlimited Inventory

Example: all products in the 7-Day collection have UNLIMITED stock.

Note: this mapping rule should be set up within the product mappings section.

Ignore Sync

Example: skipping inventory sync for all products with style code BMF2224

Troubleshooting

Customers

This section presents an inclusive list of customers featured in the customers CSV export. Merchants typically integrate both online and in-store customer data into the customers CSV export. Consequently, this list will show all available customer profiles.

Keep Items Sold Out
Unlimited Inventory
FAQs
How to raise a support ticket for an issue
Good and bad examples of a problem ticket
Want to enable a new omnichannel feature?
Want to integrate a marketplace using DotApparel?

Settings

This section will display all the crucial settings for your DotApparel instance. It is advised to exercise caution while navigating this section within the app.

ERP credentialsProduct imagesFulfillmentsPayment gatewaysGift cardsRefunds

System Alerts

System Alerts provides helpful error notifications and guidance for resolving issues, ensuring smooth operations for your team.

It's important that all tasks, especially orders, flow through to the ERP. However, this is not always the case. If something has failed, all issues are collated in one place. We've made information around alerts much more actionable and insighful so that it's easier for you and your team to resolve it with minimal reliance on developers.

View our detailed FAQs here

Want to enable a new omnichannel feature?

DotApparel can help you enable many omni-channel features such as Gift Cards, Click & Collect/Find Instore, Returns (Loop), Rewards, and Shopify Markets.

Simply raise a support ticket and provide the following information:

  • Which feature(s)

  • Desired launch date

  • Desired Shopify store(s)

Want to integrate a marketplace using DotApparel?

So, you want to integrate a new marketplace such as Amazon, Catch, Ebay, The Iconic, etc. You can set this up yourself by referring to the instructions here. Alternatively, we can help you set this up. Simply raise a support ticket and provide the following information:

  • Which marketplaces(s)

  • Desired launch date

  • Desired Shopify store(s)

Please note, the marketplace needs to already be connected to Shopify for DotApparel to sync it to Apparel21.

Good and bad examples of a problem ticket

We love it when merchants provide context and actionability in a support ticket. This allows our support team to focus on solving the problem quickly and efficiently, ultimately leading to a better customer experience. Here’s a bad and good example:

Bad ❌
Good ✅  Why? It provides context and is actionable

Hello,

It’d be great if you could take a look at our store, seems like a sync issue. Thanks

Hello,

I'm having an issue with DotApparel. I'm hoping you can help me out!

So far, I've looked into the issue and noticed that [summary of what you've done to solve the problem]. I've attached [any relevant screenshots] so you can get a better idea of what's going on. I was under the impression that [briefly explain your understanding]. However, the problem I'm experiencing is [describe the issue]. Can you please assist me with resolving this issue? Let me know if there's any additional information you need from me or if there are any steps I should take on my end. Thanks for your help!

Orders section & how to use

Read more: Orders

Set up a Click & Collect Location

You must inform DotApparel Support if you plan to use this feature. Onve we're aligned, feel free learn about the steps here:

Read more:

Setup inventory buffers

Apply a buffer across any (or all) of these:

  1. SKU-Level Buffers: Apply a buffer to a high-demand SKU

  2. ERP Attribute Buffers: Apply a buffer to products that have an ERP attribute like ERP_Category:SALE

  3. Store Location Buffers: Apply a bugger for each store or group of stores

Inventory buffers are managed and controlled by the merchant.

Anytime, there are changes to inventory posting, pause bulk and deltas. These steps must be followed

Read more:

Learn how syncing works

Read more: How does syncing work?

FAQs
Shopify flow workflow

The following workflow can be used to achieve the above. Remember to update the email address against the "Send email" step.

DotApparel Mapping

Once your fraud flow is set up and tags orders accordingly, you can create a mapping rule in DotApparel to only allow low-medium risk orders to be processed.

DotApparel recommends configuring the flow to apply a “FraudCheck:Pass” tag for low- to medium-risk orders, and then setting up a rule that only allows these tagged orders to proceed.

We don’t block high-risk orders because DotApparel can process orders before the Shopify fraud flow completes, which could result in orders being posted before they are fully checked.

To set this up in DotApparel:

Fraud analysis
Shopify flow
7KB
Fraud workflow.flow
Open

Orders

This section shows all orders that have been placed online. Each line item represents an order.

Next to each order, you’ll see the sync status and the fulfilment status. "Posted" means that the order has been successfully synced to ERP.

There are three fulfilment statuses, and these statuses are automatically updated as soon as the next sync run has been completed. This fulfilment sync runs every hour.

  • Unfulfilled

  • Fulfilled

  • Partially fulfilled

View more details about the order

You can click on each line item to display the data associated with each order. On the left, is Shopify data. On the right, is ERP Request data which is the data that is sent through to ERP from Shopify.

This data is very useful for debugging any order issues with ERP. They'll usually ask for an "Order Payload" in which case, you can simply copy this yourself by clicking Show XML in the ERP request XML section.

Integrations

This section allows you to configure additional order sources. External apps and marketplaces can be added here which means that DotApparel is helping those orders to flow through to ERP.

Adding a New Order Source

  1. Click on Add New Source.

  2. Select the desired order source from the dropdown menu.

  3. Fill in the required details and apply the appropriate mapping template for these orders.

Dependancy: Integration via Direct API

Some third-party apps and marketplaces offer direct API integration via Shopify, enabling read and write access between Shopify and the platform. Here's an example:

While direct API integration is possible, the execution is managed by the platform provider (The DOM, Qantas Marketplace, etc.) and is not project-managed by the DotApparel team.

DotApparel becomes involved only after the API configuration is complete. At that point, DotApparel will configure the new order source in the app and ensure that orders from the platform are synced to ERP with the necessary order data.

Configuring the order integrations section

Before our team can configure a new order source, our team will need to review a sample order to set up the source identifiers, along with the merchant ID and card type (which are used for other regular orders).

Once our team has configured this, we handover to the merchant for review and confirm that the order is appearing in ERP as expected.

Mandatory

  • Sources - Where the order is from, distinguishing between marketplaces and Shopify orders

  • Label - The name of each config

  • Identifier source field

Most likely needed

  • AP21 Payment Merchant ID

  • AP21 Payment Card Type

Optional based on specific needs

  • Country code - Useful if posting orders using a different country code.

  • Default Email address - Handy if posting orders using a guest email.

  • ERP Person IDX - Useful for posting orders using a guest AP21 person ID.

Example of Qantas Marketplace order configuration

A Shopify tag qantas is automatically to Qantas orders by the Qantas API integration.

In the screenshot above, orders from the Qantas Marketplace are automatically tagged with qantas

Through the qantas tag, DotApparel Core identifies these and then syncs them into ERP, ensuring that the respective Email Address, AP21 Person IDX, Payment Merchant ID, and Payment Card Type are included in the order details.

This process gives merchants the flexibility to enrich order data from third-party platforms, differentiate them in ERP, and achieve accurate reporting.

Returns

If you’re already using a third-party returns app, you can also leverage the Returns feature in DotApparel which will show the list of refunded orders. This section displays the information associated with all orders that have been approved to get returned.

We still need the return reasons mapped in your ERP, regardless of which returns platform you use.

Set up return reason mappings

DotApparel offers a flexible option to map return reasons between Loop Returns and ERP, enabling enhanced return reason reporting in ERP.

To configure the return reason mappings, follow these steps in your DotApparel admin:

  1. Navigate to Returns > Mappings.

  2. Under the Return Reasons section on the right-hand side, click "Add new return reason".

  3. From the "ERP return reason type" dropdown, select a reason from the provided list.

Support

At DotApparel, we’re committed to providing fast, reliable, and transparent support for all our partners.

This document outlines our agreed Service Level Agreements (SLAs), detailing how we prioritise, respond to, and resolve issues based on their impact to your business.


🔺 Priority Levels and Response Times

Priority


🤝 Contact & Support

For any questions about this SLA or to discuss an ongoing issue, please reach out to your

Customer Success Manager directly.

Payment gateways

Any payment that's accepted in your Shopify store will also need to be configured in both the ERP and DotApparel Core.

Common Payment Gateways

  • Afterpay

  • Paypal

  • Shop Pay

  • Gift card (Shopify gift cards only)

Customers can also pay through an ERP Gift Voucher. This also needs to be setup before hand. Visit this page for more info:

Fulfillments

When an order is posted to the ERP, it will work its way through the system and then on to your warehouse for dispatch. When the warehouse dispatches the order, the tracking number for the shipment will find its way back to the ERP as a “consignment note” on the order line items.

DotApparel checks posted orders once per hour, to see if they have had a consignment note added to any of the line items. If a new consignment note is found, then a Shopify fulfilment is created, with the connote attached as a tracking number. This will trigger Shopify to send an email notification to the customer, noting that the items have been dispatched and a link to the courier tracking page.

Configuring carriers

To ensure that Shopify provides the correct tracking link for the consignment note, you should map each of your ERP carrier codes to a carrier that Shopify understands. This prevents Shopify from trying to guess the carrier from the format of the tracking number, which is often incorrect.

Carriers can be configured on the settings page, where you will see a list of each of the carriers you use and the associated ERP carrier code.

In most cases, you can select a well-known carrier from the “Shopify tracking company” field, and Shopify will automatically generate the tracking page URL. However, in cases where Shopify does not recognise a carrier, you can manually define the template for the tracking URL, such that the URLs are correctly formatted in the customer dispatch emails.

How to raise a support ticket for an issue

  1. Step 1: Issue is discovered

  2. Step 2: If you notice a system alert, simply navigate to the alert within the app to find instructions to solve it. Alternatively, you can refer to our detailed FAQs for more info.

  3. Step 3: If our FAQs don’t cover the issue you’re experiencing, you can contact us through the in-app support widget. We’ll get back to you within 24 hours but if it’s urgent, it’ll be much sooner than that.

In the DotApparel app, you'll see a Support widget. Raise a ticket directly here to get in touch with our team for help. .

Access your tickets using our support portal

View all tickets in our support portal:

If you haven't already done so, make sure to register for a support portal account to access your tickets. Simply Sign up to create an account.

If you'd like to view all of your historical tickets (resolved or closed), simply click on this button.

Orders

This section presents an inclusive list of orders featured in the orders CSV export. Merchants typically integrate both online and in-store orders data into the orders CSV export. Consequently, this list encompasses all available orders.

Each line item in the list corresponds to a specific order and is accompanied by its sync status. A "Complete" status indicates that the order has been successfully synced with Klaviyo. By clicking on an order, you can view the raw CSV and Klaviyo data specific to that order.

Publishing products

It’s important that all new products are first created within ERP and then marked as web active. Once that step has been completed DotApparel can detect these and then sync into Shopify with the correct linking between platforms. When this process is not followed, important information like pricing, inventory and order syncing will not function as DotApparel will not be aware of any products created directly within Shopify. When a product is created in Shopify, DotApparel will leave it unpublished. This means that you can see the product in the Shopify admin area and update its attributes where necessary, but it will not yet be available for purchase by customers.

When you have added any missing attributes to the product and are happy that you wish to make it public, you will need to using the button in Shopify.

Inversely, when wishing to make a product unavailable to customers (it is retired), you will need to unpublish the product from Shopify using the button in the Shopify admin.

This process means that you can precisely manage when products are available and unavailable on the website whilst managing your product content at your own pace.

How does syncing work?

DotApparel keeps your Shopify store in perfect sync with your ERP through a series of automated tasks. These syncs run like clockwork. Some in near real-time, others at scheduled intervals to ensure your store always reflects the latest data.

What Gets Synced?

Several key types of data are synced between your ERP and Shopify throughout the day:

  • Products

Inventory Buffer

Example: all products in the Tees category set inventory buffer to 2

Dashboard

The Dashboard is the first screen you will see as soon as you go on the app. It will show every task that’s running behind the scenes. Here are the definitions of each section:

  • Orders posted: Total # of orders that have successfully synced to ERP since DotApparel was first turned on

  • All tasks: Shows all tasks (uploads to Shopify and downloads from ERP). This is displayed in one sequential list

Products

This section is a list of all the products that DotApparel is aware of. It excludes any products that pre-existed before the implementation of DotApparel and any product archived in ERP.

Manually sync product updates so they appear online

The download task in DotApparel automatically fetches your products from ERP every 24 hours and uploads any changes to Shopify. But if you make a change in ERP and want it to update immediately, you can manually run the task.

To do this, go to the products section and click Products > Download from ERP

Solution architecture

DotApparel is exclusively installed on , a cost-effective and secure cloud computing platform. Here is a diagram that shows the connection between two brands running our DotApparel Core solution connecting ERP into Shopify, one of which has two regional stores. We can see that each of the DotApparel projects sits within a single Google Cloud account and it gets its data from the ERP database.

For merchants using the Apparel21 ERP, you may be interested to learn which Retail API endpoints DotApparel is using to fetch product data. We use two separate endpoints.

Customers

This section shows all the customers that have been created through the online sales channel. This can happen in three ways:

  • Customer signed up to create an account

  • Customer signed up to join the newsletter

  • Customer places an online order

Refunding Shopify Orders from POS (In-Store)

For merchants offering in-store returns for online orders, DotApparel supports automatic refunds through Apparel21 POS. This process ensures refunds are correctly mapped and processed in Shopify without manual intervention.

A refunds.csv is required for this functionality. An Apparel21 Consultant can set this up for you for a one-time fee

Getting Started

The following is a step by step guide to complete the implementation

Step 1: Onboarding

Data Sync

High level overview of how the solution syncs data

Customers

Once the preferred frequency is determined by the merchant, the timings in Apparel21 must be configured accordingly. This automated scheduled process operates seamlessly in the background, where the SFTP service, integrated with the DotCustomerHub app, efficiently exports the necessary files and promptly triggers the import task into Klaviyo.

Based on the determined schedule, the 2 CSV files containing Apparel21 customer and order data are uploaded to the SFTP of each DotCustomerHub instance and then instantly flow through to Klaviyo. Customer attributes are synced to a Klaviyo profile with a matching Apparel21 email. If a matching profile is not found, a new profile is created.

Notifications

Experience a new level of efficiency and responsiveness with automated system alert notifications. Seamlessly stay connected and informed at every turn, ensuring you're in the know the moment errors arise.

How to set up notifications

Manage your alert preferences by navigating to the settings section. A simple checkbox and your email address are all it takes to activate this feature. Once enabled, you'll receive comprehensive alert details directly to your inbox.

When a system alert is generated, an email notification is automatically sent from to the configured recipient email.

Dashboard

The Dashboard is the first screen you will see as soon as you go on the app. It will show a log of every task in the last 7 days. Here are the definitions of each tab:

  • All tasks: Shows all tasks that have successfully imported into Klaviyo. Please note, logs will be cleaned every 7 days.

  • Failed: Shows any task that has unsuccessfully synced into Klaviyo. Failed tasks may already be resolved so this view is simply here for historical reference. Most failed tasks will be related to invalid data in the CSV files. While rare, failed tasks will be stored in the SFTP which will allow the DotDev Support team to further investigate. Once resolved, DotDev will re-upload the failed tasks to ensure that any data is up-to-date in Klaviyo.

Option B: In-House

Self setup using in-house expert or Apparel21 representative

Merchants who have an in-house Apparel21 expert have the capability to independently configure the Apparel21 exports. Nonetheless, there are certain steps in which our involvement is still necessary. Please refer to the details below:

Setup Process

Terminology

Apparel21 Gift Voucher: A voucher triggered by Apparel21, featuring a voucher number and a 4-digit pin. Redeemable both in-store and online (). This voucher can only redeem dollar ($) amounts, not a percentages (%) off.

Coupon: The term that Yotpo will typically use to refer to a discount. Here at DotApparel, we use the term "Voucher" to denote the same concept.

Shopify discount code: You can create codes for a dollar value discount, a percentage discount, a buy X get Y discount, or a free shipping discount. Customers can enter discount codes online during checkout. Existing discounts can be updated and managed from the Discounts page in Shopify. Please note that these codes are not redeemable in-store via Apparel21 POS.

Overview

Welcome to the DotApparel Loyalty User Guide

DotApparel Loyalty is a middleware that syncs loyalty data, and imports customer information between Apparel21 and the Yotpo Loyalty platform. This solution gives full visibility of the loyalty and rewards program across both platforms and allows customers to redeem rewards points, both in-store (via POS) and online.

This guide aims to help you get started with our app and make use of its features for smooth synchronisation between Yotpo Loyalty and Apparel21.

What are the Benefits?

Yotpo Loyalty is a great alternative to the Apparel21 Rewards module. By using Yotpo Loyalty, there won’t be a need to enable the Apparel21 Rewards module.

Settings

Automations

Data Sync

Data sync automation provides a greater flexibility in controlling the data sync from the app to Klaviyo. Merchants now have the ability to control when the data is synchronised to Klaviyo.

Rewards Emails

Engage with customers who are enrolled to the program

Show some love to loyal customers for connecting with your brand, not just for spending money. Whether you're utilising the Yotpo Loyalty app, Apparel21 Mailer or another ESP (i.e., Klaviyo or Salesforce Marketing Cloud), emails empower you to build a deeper and more meaningful connection with your valued customers.

Here are a few example of rewards emails:

  • Reward Received

  • Points Reminder

Front-End Implementation

This outlines the steps for integrating Yotpo Loyalty into the front-end of the website.

  1. Confirm Front-end Requirements: The merchant initiates the process by confirming their front-end requirements.

  2. Select Loyalty Module: The merchant collaborates with the Yotpo team to choose appropriate loyalty modules and configure them to match their needs. These modules may have some default styling options.

  3. Custom Front-end Development: In cases where the default modules have limitations or don't fully meet the requirements, custom front-end development is performed. This involves creating tailored solutions for specific design or functionality needs.

Customers that were first created in-store through an in-store purchase for example, will not appear in this list. Only online customers will be visible in the DotApparel app.

Customers in ERP

When a customer is created in Shopify. DotApparel will create a corresponding person record in ERP. Any subsequent orders placed by the customer will then be nested under the relevant ERP person ID.

Customers in ERP are identified using their email address, such that if the customer already exists, then a new customer will not be created. If a customer is created in Shopify without an email address, then a person record cannot be created in ERP, and will be ignored by DotApparel.

DotApparel Core syncs online customers into ERP. For those seeking synchronisation of ERP (retail data) with Klaviyo or Salesforce Marketing Cloud, explore our additional solution called DotApparel Customers.

How to Refund Shopify orders from POS (in-store)
  1. Store staff processes the return in Apparel21 POS using the correct return reason.

  2. A refunds.csv file is uploaded to SFTP at a set frequency (i.e., every 5 mins)

  3. DotApparel receives and processes the refunds in Shopify when it's eligible for Auto-Refunds

Merchants must notify the DotApparel team about wanting the ability to refund via Apparel21 POS (In-store). An Apparel21 Specialist needs to generate the refunds.csv file

The refunds.csv consists of online orders that were refunded in-store via Apparel21 POS.

refunds.csv File Requirements

  • The refunds.csv must only include refund transactions, not exchanges or store credits.

  • The file must include the WEB_ORDER_NUMBER column for Shopify order mapping.

  • Merchants must notify DotApparel if they want to enable POS refunds via Apparel21.

  • An Apparel21 Specialist must generate the refunds.csv file.

Understanding refunds.csv

The refunds.csv contains online orders refunded in-store via Apparel21 POS. DotApparel uses this file to verify refund eligibility and process the refund in Shopify.

Each record must include:

  • WEB_ORDER_NUMBER – The Shopify Order Number. DotApparel uses this to validate the order in Firestore.

  • RETURN_REASON – The Apparel21 return reason code. It must match a pre-configured reason in DotApparel Core.

  • Refund Amount – If multiple products were refunded in a single transaction, DotApparel will sum the refund amounts before processing.

Additionally:

  • The same AP21 payment type (tender) used for web sales should be applied for refunds (e.g., "Shopify Payment").

  • The Apparel21 Consultant will configure POS to surface the correct tender.

  • The refund record should meet these conditions:

    • A retail transaction contains a negative amount (e.g., -$50), indicating a refund.

    • The original sale was an online (web) purchase.

    • The return (credit) value is correctly recorded.

For Web-Based Refunds

For refunds processed directly via Apparel21, DotApparel regularly downloads updated orders and checks for returned items. If the return reason matches the pre-configured settings in DotApparel, the system will automatically trigger the refund in Shopify.

ℹ️ Merchants using Auto-refunds & Yotpo Loyalty

If a future merchant is using both DotApparel Core; Auto-refunds and Yotpo Loyalty, they may require a refunds.csv to be sent to two different SFTP destinations.

Profile Creation

When a profile cannot be found by email as a result of Apparel21 to Klaviyo sync, it is created and added to a “Klaviyo List”. The profile will not be subscribed if Privacy is set to Yes during sync. The profile’s source will be set to the name of the retail store at which the customer signed up.

Apparel21 Privacy is set to No = Customer will receive emails

Apparel21 Privacy is set to Yes = Customer will not receive emails

Segment Setup

Once the solution is configured and the customer and order data is flowing through to Klaviyo successfully, there are a few steps to ensure that the data populates the respective customer segments correctly. By using the mapping tool, customers can be assigned to a default list, such as "{branch name} Retail Customers." However, for more specific segments or groups, it is necessary to set up rules within Klaviyo based on the properties of the Klaviyo profiles. These properties could include information like the joined store code, which helps differentiate customers who signed up in-store versus online.

Orders

Once the required customer profile has been created within Klaviyo, we are able to send through "In-Store Order" events that include all the related information for the transaction, include amounts, store, staff details, and the specific item details.

Event will be added to the customer profile and can be used to trigger various flows.

Rewards

An additional feature that we support is syncing across information from your reward program. This information includes top level details like program, points, tier that are saved to the customer profile as custom properties and also specific information about the reward event like date, reason, description, points gained/redeemed and gifts.

Bulk Sync

The bulk sync is a one-time task designed to seamlessly sync historical data and persons from AP21 into Klaviyo. This is needed to ensure that all customers (not just online) actually have a profile in Klaviyo.

Before generating the bulk file, we must be informed of the specific date you wish to have the data from (i.e., from Jan 1, 2023 to present).

It's crucial to note that with the Bulk Sync, marketing preferences within Klaviyo will remain unchanged for existing Klaviyo profiles.

Following the successful import of the bulk file and the initiation of automations, any subsequent modifications to an individual's record in AP21 will seamlessly update Klaviyo, including privacy status. This sequence guarantees that historical data takes precedence, and any subsequent "events" will be accurately reflected in the Activity Log section in Klaviyo.

Importing Bulk Files

Bulk files encompass historical data from a specific predetermined date extracted from customers.csv, orders.csv, and rewards.csv (only applicable if rewards are enabled).

As a standard procedure, bulk files are imported during the initial step, allowing all historical data to be utilised for segmentation rules.

  • The CSV files must be set up as two or three separate files:

    1. Customers

    2. Orders

    3. Rewards

    These files must includes all the necessary fields needed to sync to Klaviyo. Please note, customers should be uploaded before orders on the scheduled task.

    Definition

    First Response

    Resolution Target

    🚨 Urgent

    A critical issue blocking sales, orders posting to your or impacting the launch or performance of a live promotion

    4 hours

    1 day

    ⚠️ High

    An issue impacting a high volume of orders, products or inventory

    8 hours

    2 days

    🔧 Medium

    A general issue or improvement that does not immediately impact conversions or sales

    16 hours

    5 days

    🚦Low

    A non essential issue or minor enhancement

    24 hours

    10 days

    Splitting colours

    When creating products in Shopify, DotApparel will create a separate product per colour. This is not configurable, and is done for a number of reasons.

    1. It is easier to manage images at a product level in Shopify (one set of images per colour)

    2. Each colour will automatically appear independently on collection pages (a big plus for merchandising)

    3. One one variant option needs to be used in Shopify (size)

    To allow colours to be “linked together” in Shopify using swatches, a metafield is written to every product in the key dotapparel21.siblings, which lists all of the sibling colours, their URLs and swatch images if DotApparel is linked to Cloudinary.

    This metafield can be used to output a series of swatch links on each product page, which allows customers to horizontally navigate between the colours, while still maintaining the benefits which a separate product approach brings to Shopify.

    publish it
    only if DotApparel Core and Gift Card payments are configured
    In the "Source return reason pattern" input field, enter a relevant keyword that best corresponds to the Loop return reason.
    Here's an example of raising a good problem ticket
    support.dotapparel.com.au
    First, we use the ProductsSimple endpoint to get a list of all the visible style codes according to your filter. Then, we make a separate request to the Products/{id} endpoint for each style code to get all the details, like colours, sizes, and notes.
  • In some versions of Apparel21, they also make separate requests to the ProductNotes/{id} endpoint to get product notes, but in newer versions, these notes are included in the main Products/{id} endpoint, so they don't need to use the separate endpoint anymore.

  • Google Cloud
    • Sync reward points for in-store and online purchases.

    • Get points beyond $ spend (follow on social, sign up for texts and more).

    • Advanced segmentation and tracking to ensure your loyalty program is a success.

    • Out of the box on-site and checkout widgets for simple front-end implementation.

    • Enhanced analytics dashboard to track rewards, allowing you to optimise the program based on helpful insights.

    • Send loyalty emails such as changes to loyalty status and redemption reminders.

    Redemption Reminder

  • Gift Card Redeemed

  • Happy Birthday

  • VIP Tier Earned

  • Need more inspo? Click here

    Gift cards
    Identifier source value
    ERP Freight Option ID - Necessary for posting orders using a fixed freight option.
    This screenshot shows that the Qantas Marketplace integration does the following for the Shopify store: write inventory and orders read inventory and orders read products (Shopify to Qantas)
    The Identifier Source Field and Identifier Source Value allow DotApparel to identify orders from the Marketplace source and sync them to ERP according to the configured settings. For example, orders tagged with "Qantas" will be synced to ERP based on the DotApparel app configuration setting.

    Security Overview

    Introduction

    DotApparel stands as a leading SaaS application seamlessly integrating ERP systems with Shopify and other leading platforms, offering a robust, scalable solution for Apparel21 retailers. Our commitment to security and data integrity is paramount, utilising Google Firebase's comprehensive suite of tools, including Auth, Functions, Hosting, and Firestore. This overview outlines the security measures and protocols incorporated to ensure the utmost security for our users.

    Secure Authentication

    DotApparel utilises Firebase Auth to manage user sessions and authentication, supporting various methods, including email and password, third-party providers, and phone authentication.

    Key features include:

    • SSL/TLS Encryption: All authentication activities are conducted over secure connections.

    • OAuth 2.0 and OpenID Connect: Standard practices for third-party authentication.

    • Token Management: Securely generated and managed tokens for authenticated sessions.

    Serverless Architecture

    Leveraging Firebase Functions for serverless compute ensures secure, scalable, and efficient backend code execution. Key features include:

    • Isolation: Each function operates in its own isolated environment to minimise unauthorised access.

    • Automatic Scaling: Ensures performance under any load, enhancing reliability and security.

    • Integrated Security: Functions seamlessly work with Firebase Auth and Firestore Security Rules.

    Cloud Hosting

    Firebase Hosting provides fast, secure, and reliable web hosting with a global CDN, automatic SSL certificate provisioning, and HTTP/2 support. Key features include:

    • SSL by Default: Ensures all content served over the web is encrypted.

    • Secure Deployment: Integrated with Cloud Build for secure and automated deployments.

    Realtime Database

    Firestore, a flexible and scalable database, includes security features for fine-grained access control. Key features include:

    • Security Rules: Configure read/write access to collections and documents.

    • Data Encryption: Encrypt data in transit and at rest for confidentiality.

    • Audit Logs: Integration with Google Cloud's operations suite for monitoring and auditing.

    Apparel21 Integration

    DotApparel integrates securely with Apparel21 ERP through its Retail API, implementing the following measures:

    • Static IP and Whitelisted Access: Configured static IP addresses and whitelisted access for authorised connections.

    • VPN for Developer Access: Regulated developer access via VPN for additional security.

    • Encryption and Authentication: Industry-standard protocols like TLS ensure data security during transmission, with robust authentication mechanisms in place.

    Shopify Integration

    DotApparel ensures a secure integration with Shopify through the Shopify Admin API, adhering to best practices:

    • Access to Shopify Admin API: Secure storage of access tokens for explicit authorisation.

    • Rate Limiting and Monitoring: Adherence to API rate limits and continuous monitoring for risk mitigation.

    • Shopify App and Platform Security: Compliance with Shopify's requirements, including OAuth 2.0 for authentication and adherence to data handling and privacy standards.

  • Inventory

  • Fulfilments

  • Images

  • Swatches

  • Markets pricing

  • Customers

  • Reference data

  • Sync Schedule: The Breakdown

    Here’s a snapshot of how often each sync runs:

    Data Type
    Frequency

    Products

    Once daily

    Images & Swatches

    Once daily

    Markets Pricing

    Once daily

    Fulfilments

    Every hour

    Orders & Customers (from Shopify)

    Instantly posted to ERP

    Orders & Customers (from ERP)

    Every 15 minutes

    Default sync time: Daily bulk syncs (Products, Images, Swatches, Markets Pricing, Full Inventory) run at 1am (GMT+10).

    Inventory Syncing

    Inventory syncing is optimised for both speed and reliability:

    • Every 5 minutes: DotApparel runs a delta inventory sync, pulling only SKUs that have changed in the last 5 minutes. These updates are processed through your store-level and buffer settings to calculate the final stock values for Shopify.

    • Once daily: A full inventory sync ensures that all SKUs from your ERP—regardless of whether they’ve changed—are accounted for in Shopify.

    Can I Change the Sync Schedule?

    Yes, some sync intervals can be customised based on your store's needs. Just keep in mind: More frequent syncing = more load on your systems, so it’s best to strike the right balance between speed and stability.

    Failed: Shows anything that has unsuccessfully synced to/from Shopify and ERP. The failed tasks may already be resolved so this view is simply here for historical reference
  • Timeout: Shows any task that hasn’t been captured in the daily bulk sync. This usually happens because the server closed the connection before returning any response due to network or server issues, and it may be from either Google Cloud or ERP. Usually, nothing will appear here but if there are a few line items, it will sync throughout the day via a queueing system.

  • View more details about the task

    You can click on a task to open a window. It'll show you the status of the task as it runs and you can see from the log messages what the task is currently doing.

    The task status will appear in a window, and the log messages will show what's happening. When it's done, check the
    Needs update
    tab to see which products have changed.

    These changes are automatically uploaded to Shopify every 30 minutes, but you can do it manually by clicking Product > Upload to Shopify for a specific product or running the task from the product listing page to upload all pending products.

    Publishing products

    When a product is created in Shopify, DotApparel will leave it unpublished. This means that you can see the product in the Shopify admin area and update its attributes where necessary, but it will not yet be available for purchase by customers.

    When you have added any missing attributes to the product and are happy that you wish to make it public, you will need to publish it using the button in Shopify.

    Inversely, when wishing to make a product unavailable to customers (it is retired), you will need to unpublish the product from Shopify using the button in the Shopify admin.

    This process means that you can precisely manage when products are available and unavailable on the website whilst managing your product content at your own pace.

    Sign the MNDA via DocuSign (sent on completion of the above) [Merchant]
  • Step 2: Access

    Detailed instructions can be found on the Implementation page.

    Step 3: Data Exports

    Step 4: Configuration

    Detailed instructions can be found on the Configuration page.

    Step 5: Test & Launch

    Customer Setup Form
    emails are sent from
    [email protected]

    Timeout: It will be rare for any task to "timeout". However, if this does occur it will be due to the Klaviyo API timing out. No further action is required for Timeout tasks as these will sync throughout the day via a queueing system.

  • Enabling data sync will allow data to be synced automatically to Klaviyo after file import is completed.

  • Disabling data sync will not allow data to be synced automatically to Klaviyo after file import. However, data will still live on the app (marked as Pending) and you can manually do a sync at a time that suits your needs.

  • File Cleanup

    An automated task that runs once a day which scans all processed files to check if any need to be deleted. The check for deletion is based on the configured file cleanup threshold.

    • Enable - will allow the task to run once a day

    • Disable - the task will not run and no files will be deleted even if file cleanup threshold is configured.

    File Clean Up

    To ensure efficient management of storage resources, cleanup process will help maintain a clean and organised storage environment after file import process. Merchant can configure the number of days to keep processed files before it is automatically deleted.

    The file cleanup logic is as follows:

    • For example, a file is uploaded and processed on July 10th

    • Retention days is set to 30 days

    • Then, the processed file will be automatically deleted on July 15th

    In summary, the process begins with requirement confirmation and proceeds with the use of Yotpo's Loyalty modules, followed by custom front-end development as necessary to address any limitations or unique design requirements.

    Webpages with Reward Touchpoints

    Specific sections of the website will feature touchpoints related to rewards. Please keep these pages in mind when creating the mock-up for the user experience of your online loyalty program. These include, but are not limited to, the following:

    Implemented with Yotpo Embeddable Modules

    • Rewards Summary Page

    • Account Sign-Up & Sign-In

    • Rewards Redemption Landing Page

    There are two Yotpo modules that allow customers to redeem points and thus turn their points into Apparel21 Gift Vouchers:

    • Yotpo "Redeem" In-Store Module can be used out-of-the box

    • Yotpo "Redeem" Online Module is not compatible with this integration and will require front-end customisation. When points are redeemed online, a "custom reward" must be configured

    Implemented with Checkout UI Extension (checkout upgrade is required)

    • Apparel21 Gift Card Redemption at checkout (more info here)

    Apparel21 Gift Voucher redemption must be possible at checkout. Either through DotApparel Core or another Apparel21 Connector. Talk to us if you need DotApparel Core installed for your Shopify store: [email protected]

    Implementation

    What's it look like to implement a DotApparel solution?

    Setup [Merchant]

    Create your Google Cloud account and Firebase projects on paid Blaze Plan. Please note to ensure that your project is not downgraded at any point, it is mandatory that billing details are added at the time of Project creation. If you need help, reference our Google Cloud & Firebase Setup guide.

    Provide Firebase access

    • Firebase Production project

    • Firebase Staging project

    • Invite [email protected] an owner.

    Provide Apparel21 access

    • Retail API URL and logins

    • Whitelist VPN IP (46.102.153.187)

    • Whitelist Solution Static IP (provided once the Firebase project is created)

    Provide platform access

    • Core (Shopify)

      • Provide URLs for us to request collabrator access

      • Approve request and grant store access

    Installation & Configuration [DotApparel]

    Once the steps above have been completed, we will commence on the the installation and configuration. To kickoff this part of the project we'll have an onboarding call to run through a reference sheet and collection all the information we need.

    During this phase we'll setup, configure and deployment your solutions ready for testing.

    Testing [Both]

    We will conduct various testing scenarios and only proceed once each one has been successfully passed. Subsequently, our Customer Success Manager will provide your team with a Google Sheet containing the required testing scenarios which you will need to complete.

    We will both work through this phase until both sides are comfortable your solution has been configured correctly and we are ready for launch.

    Once final approvals has been given we'll conduct a launch planning call and discuss how this will play out, specifics around data migration and any down time if required for front-end changes.

    Launch [DotApparel]

    Upon successful completion of all testing scenarios, we will initiate the necessary steps to deploy your solution into your production environment, as agreed upon for the go-live day and time.

    Pre-launch

    • Any required frontend changes deployed

    • Data migrations and syncing processes completed

    • Final checks and testing before go-live

    • Launch your DotApparel solution

    Post-launch

    For merchants using existing custom solutions, we will keep these running for around one more month to process any remaining data. Afterward, we will arrange to terminate your old solution (this should also stop services since they’re no longer needed at this point).

    Launch [DotApparel]

    All our support in handled through in-solution widgets and also through our dedicated [email protected] inbox. We have a dedicated team in Australia that monitor throughout each day and aim to adhere to our set SLAs.

    During the post-launch hyper-care period we also monitor your solution using the dashboard and help to resolve any configuration issues or things that might arise.

    We also have urgent support available after hours by calling 1800DOTANZ.

    Markets

    This guide aims to provide step-by-step instructions for configuring and connecting your Shopify Markets to additional ERP APIs.

    DotApparel's Markets and ERP Multi-Currency Integration empower merchants to effortlessly connect their Shopify Markets to multiple ERP APIs. This feature allows for seamless synchronization of product pricing in different currencies, ensuring accurate and up-to-date information for customers across various markets.

    For further information: Shopify Markets

    Configuring Shopify Markets and ERP API

    Downloading Markets from Shopify

    1. Click the Refresh Markets button in the settings form.

    1. You'll be able to see the Shopify Markets that are available in the app.

    Update Market and ERP Mapping

    Once Markets are downloaded from Shopify, we are able to configure the Market and API connection in the app.

    1. Click one of the Market from the list (i.e. Australia).

    1. Configure the additional country code for the ERP API.

    1. Tick the "Post markets orders to regional ERP API" if you'd like to receive the orders in the market's currency. (Default to the store currency)

    1. Click the Update Market button to save the configuration.

    Manual Tasks

    An automation task within DotApparel downloads the product prices from AP21 on a daily basis and automatically uploads the fixed prices to the respective Shopify Markets. Apart from automation, the app also offers certain actions that enable users to execute tasks as and when required.

    1. Upload fixed prices for a particular market

    1. Reset the price list for a particular market

    1. Download all product prices from ERP

    1. Upload all fixed prices to Shopify Markets

    Rewards

    DotApparel can integrate with the Rewards module in ERP, enabling merchants to offer an enhanced shopping experience for their customers. With this integration, customers can easily earn and track loyalty points, view their rewards status, and even make purchases online while earning points towards their rewards.

    How it works

    DotApparel retrieves rewards account details for a given customer by providing their email address.

    If a customer does not already have a rewards account in ERP, the endpoint can automatically create a new account and proceed with it. However, this functionality must be enabled in the app's settings.

    Types of Rewards Data and how they sync

    • Customer tier status: DotApparel retrieves the "status" from ERP. DotApparel doesn't calculate the spending, or control the tier rules as that's all handled by ERP.

    • New customers: DotApparel creates a person record for new accounts signed up online.

    • Existing customers: DotApparel attaches online order history to an existing person record.

    FAQ for Rewards

    Is it possible to tag a reward profile to allow for rewards-specific marketing whilst the marketing status for all other marketing emails is false?

    DotApparel does not handle marketing emails, but it does apply tier tags to customers to enable the email marketing platform to trigger transactional flows. Merchants need to configure the flow and request the email marketing platform to make reward-specific emails "transactional" so that the subscribe status of customers is ignored.

    Rewards product SKU and discount application title

    It may be necessary for the front-end to locate Shopify rewards products by their SKU number. These products will require discounts to be applied to line items using Shopify Script, and it's important to ensure that both the rewards product SKU and discount application title are consistent with DotApparel.

    While both the SKU and title can be customized in DotApparel settings, we suggest using the following conventions:

    • Rewards product SKU: LOYALTY_REWARD

    • Discount application title: Reward Redemption

    The Reward product SKU will simply exist in your Shopify product catalogue but will not be active or purchasable on the front-end.

    Inventory

    View inventory levels per SKU

    Access real-time in-store levels per SKU by going into Products > Search for the product > Click on the product > Select variant


    Get your stock in the right place with DotApparel

    For merchants managing multiple locations and fulfilling online orders like Click & Collect or Ship from Store, staying on top of inventory accuracy is essential. That’s why DotApparel offers intelligent inventory buffer options to protect stock levels, prevent overselling, and keep your operations running smoothly.

    Here’s what you can do

    1. SKU-Level Buffers: Apply specific buffers to high-demand SKUs to ensure availability.

    2. ERP Attribute Buffers: Define rules by product type, such as:

      1. “Core” & “Seasonal” → Buffer of 1

      2. “Outlet” → Buffer of 3

    How to apply inventory buffers

    In terms of applying the inventory buffer, a new approach is now available utilising the inventor mapping tool. For further details, please refer to the .

    We highly recommend utilising the store location option via DotApparel Core -> Locations as it enables easier tracking of the inventory buffer. Though applying inventory buffers on an SKU level via the inventory mapping tool is still a feasible option, we advise keeping track of them closely.

    SKU level

    Go to Inventory section. This section has two tabs:

    • All: Each line item represents an individual SKU. You can click on each line item and set up your desired inventory buffer on an SKU level or view the inventory for each SKU.

    • Inventory buffer: This is a list view of all the inventory buffers that have been applied on an SKU level.

    By selecting any SKU listed, a pop-up window is opened for editing the inventory buffer for that specific SKU.

    Inventory mappings

    To configure inventory mappings, navigate to Inventory > Mappings. For more information and detailed instructions, please refer to the .

    Store location

    Go to Settings > Shopify locations > Select Location

    Apply your buffer in the Location Buffer field or ERP Store A field

    Want to see your changes to Inventory Mapper & Inventory Buffers instantly? Do this:

    1. Apply inventory buffers in the DotApparel app.

    2. Stop the 5-minute inventory sync (and ensure all previous inventory sync tasks are completed).

    3. Download all inventory from AP21.

    4. Reset the cache.

    How to apply inventory buffers

    Ship From Store

    Terminologies

    Ship From Store (SFS)

    Generally, Ship From Store is a fulfilment strategy that allows retailers to utilise their physical stores as additional distribution centres for fulfilling online orders. Instead of shipping products from centralised warehouses or distribution centres, retailers can leverage their store inventory to fulfil online orders and ship them directly to customers.

    Web Stores and Web Inventory

    When we make a request to the StockChanged endpoint (Retail API), Apparel21 returns to us a list of what they call "stores". However, this "store" isn't necessarily a physical store (or warehouse). You can configure in the Apparel21 backend which stock locations and pools contribute to a particular "store" which is how the Web Stores work.

    Please note that these are "stores" over the Retail API, but they're actually groupings of various warehouse and/or store locations in the backend, to form the stock counts which go to the website.

    The Web Inventory refers to the total amount of available inventory for sale on a website. Typically, this includes the inventory stored in your warehouse. However, with the Ship From Store feature, you can also include the available stock from your physical stores. For instance, you can have a designated "store" such as Web Sales, Online Store, or Web Store, where the stock number is calculated by adding up the inventory from your warehouse and all the stores that are enabled for SFS.

    Your ERP representatives need to configure the Web Stores and Web Inventory, and then share the "Store ID" with us so we can configure the correct Web Store in DotApparel and sync the Web Inventory into Shopify.

    SFS with Shopify and DotApparel

    DotApparel only integrates the Web Inventory with a Shopify location to facilitate the SFS feature. All other processes will be managed by the ERP. This means that DotApparel will continue to send online orders as normal, and Apparel21 will decide if an order will be shipped from a physical store based on the configured logic or rules.

    Are any changes required in DotApparel?

    In essence, there will be no changes unless the Web Store is modified. As previously stated, your ERP representatives will need to set up your Web Stores and Web Inventory in the ERP backend. This will guarantee that the inventory counts from the WEB Store already include the store inventory. For example, if the inventory number of Product A was 3 in the warehouse and 2 in Retail A, without SFS, the total inventory number from your WEB store would be 3. However, with SFS, it will be 5.

    Are any changes required in Shopify?

    No. Since the Web Inventory has been configured in the ERP, the Shopify inventory also includes the floor stock available in your physical stores. Let's say that Product B is out of stock at the warehouse but there are 2 units available at Retail B. With SFS, in Shopify, there are 2 units available for purchase on the website. When customers purchase them, the orders will be sent to the ERP by DotApparel and then they will be processed by the ERP according to the SFS configuration.

    What is the process to get started?

    1. Contact your ERP representatives and discuss your requirements to enable SFS.

    2. Agree on the locations(stores) that will be included in the inventory pool (Web Inventory).

    3. Let us know when you plan to launch SFS and also if the existing Web Store will be used or new Store ID provided.

    4. Schedule your configuration change with the ERP and confirm that date and time with us.

    Default mapping rules

    This table presents the default product mapping values within DotApparel. In the absence of any explicitly defined mapping rules, DotApparel will employ these values as the default settings.

    Shopify field
    AP21 field
    Fixed value

    Product title

    Style name

    Description

    Empty value ("")

    Product options

    Translations

    We are excited to introduce a new feature in the app called "Mapping Translation Tables" that will greatly simplify the process of adding translations for Shopify attributes. With Mapping Translation Tables, you can now easily create and manage translation mappings, allowing you to provide localised and meaningful representations of attributes to enhance the user experience for your customers. Whether you need to map category codes to descriptive names or convert abbreviations to full words, this feature has got you covered.

    Key Features of Mapping Translation Tables:

    1. Easy Setup: Merchants can add a new "translation table" from the app. Each table is identified with a unique ID, such as "cat_codes_to_category."

    2. Add Rules: Within a translation table, merchants can add rows consisting of "from" and "to" values. This allows for defining the translations between the original values (from) and the desired translated values (to).

    3. User-Friendly Interface: The interface for managing translation tables is designed to be intuitive and easy to use, even with a large number of rows. Merchants can add translations one at a time or in bulk using a textarea input, with each translation on a separate line and separated by commas.

    4. Search Functionality: Merchants can search within a translation table to quickly find a particular translation they are looking for.

    5. Edit and Remove Translations: Translations can be easily edited by clicking on the "from" or "to" value within a row. Additionally, merchants can remove translations by clicking a delete button associated with each row.

    Using Translation Tables in Mapping Tool:

    Once a translation table is defined, merchants can utilize it in the existing attribute mapper. Within the attribute template, merchants can specify a particular lookup translation table and output the translated "to" value. The syntax for this is as follows:

    In this syntax, "translation_table_id" refers to the ID of the translation table, and "attribute_to_lookup" is the attribute used to find the corresponding "from" value.

    If a table entry for the "from" value is not found, the raw "from" value will be outputted into the template.

    Example Usage:

    Let's consider a scenario where a translation table named "cat_codes_to_category" has been created to map the category reference codes from the ERP to more meaningful words for display on the storefront. This translation table aims to provide a user-friendly representation of categories. For instance, it maps "BBY" to "Baby," "ACC" to "Accessories," and "PNT" to "Pants."

    To utilize this translation table in the mapping tool, we can use the following template:

    In this case, the translation table "cat_codes_to_category" is referenced, and the attribute "references.category.code" is used as the key to look up the corresponding translated value. The output in the template will be the translated category name based on the mapping defined in the translation table.

    Release Notes

    Sync Refund Data for DotApparel Customers & Loyalty

    You can now sync refund data into your CRM and Yotpo Loyalty. This enables the loyalty engine to process refunds and adjust loyalty points accordingly, ensuring accurate customer tier statuses.

    Additionally, importing refund data into your CRM offers a comprehensive view of customer orders, allowing you to set up targeted email communications based on net purchases.


    Sync Gift Card Data for DotApparel Customers

    Import eGift card data into Klaviyo to create email flows to remind their customers of outstanding Gift Card balances before they expire.


    DotApparel Customers now available for Endear

    We are pleased to announce that DotApparel Customers can now integrate retail customer and order data into Endear, a CRM designed for in-store clienteling.


    Notification from Klaviyo

    For merchants using DotApparel Customers, you may have received a notification from Klaviyo regarding the retirement of their on June 30, 2024.

    Our team has recently updated to Klaviyo's latest API version, ensuring all API calls are functioning correctly. We are not using the legacy v1 or v2 APIs, so you can disregard this notification from Klaviyo.


    Refund Online Orders In-Store

    Enhanced auto-refund feature allows items originally purchased online to be refunded in-store.

    Note: Auto-Refunds is an additional module that costs $100 per month and must be configured in DotApparel Core.


    Editable Order Payload

    To address any orders not accepted into Apparel21 due to Shopify data issues, such as "Address Line 1, 53 is too long," you can efficiently resolve these by simply hovering over the affected line item and editing the address/name accordingly.


    Reallocate Shopify Fulfillment Locations

    When you upload orders, DotApparel Core will now automatically double-check if the Shopify location matches the Apparel21 location. If they don't match, our solution will fit it for you behind the scenes, ensuring smooth order processing. This helps prevent errors and ensures your orders are fulfilled accurately and efficiently.


    Customer Mapper

    Now Supporting Gift Wrapping


    Mapping Tool

    Now Supports UpdateIfEmpty Flag

    Added Support for List Metafields


    Global Stock Buffers

    Implemented a global stock buffer per size which applies across the region (all locations). Allows merchants more control over inventory buffers on aggregated stock quantity grouped by style-colour-size


    Sibling metafields

    Enhancing sibling metafields to includes product images and min/max prices.


    Inventory Endpoint

    New Cached Version


    Sync COGs with “cost per item”

    Sync COGs for product variants from Apparel21 to Shopify’s “cost per item” field. Easily compare the price you paid for the item with the buyer’s price and get an idea of how much profit you’re making.

    Testing

    Review the synced data to insure that this is correct

    Overview

    Once your instance has been fully configured both within the app and your Apparel21 instance, the data sync will remain disabled until the merchant is satisfied that all data is correct. Our team will sync 5-10 Customer profiles for your review along with the corresponding Apparel21 CSV export for reference.

    How do I review?

    What if there is an error or missing values?

    Everything looks correct, what next?

    • We recommend going live first thing in the morning, early in the week

    Data Cleanup

    • After the one-week monitoring period, we will enable the Data Sync Cleanup task, we'll notify you once this has been enabled.

    • The Data Sync Cleanup task will clean up any legacy processed data files, this task will run once every 2 weeks.

    Please follow this process to ensure accurate syncing of data between Apparel21 and Klaviyo using DotApparel Customers. If you encounter any issues, feel free to reach out to or use the in-app support widget for assistance.

    Australia Post (AusPost)

    AusPost Returns offers a streamlined returns process, allowing customers to generate labels and track returns easily. Integrating DotApparel Core with your ERP automates return management, reduces manual errors, and updates stock levels in real-time. This improves efficiency, enhances customer experience, and provides better inventory visibility for merchants.

    Pre-requisite to enable AusPost Returns

    Responsibility: Merchant

    To enable return creation in AP21, we need to configure a webhook URL in Loop Returns' admin.

    1. Install and configure the Australia Post Shopify app

      • Ensure the app is installed on the relevant Shopify store and basic setup is complete.

    2. Contact Australia Post support

      • Request that they enable webhook subscriptions for your account (required for DotApparel to receive return events).

    3. Notify the DotApparel team

      • Once webhook access is granted, let our team know so we can proceed with configuration.

    4. Provide ERP Return Reasons

      • Please share your ERP’s standard list of return reasons. These will be mapped into the Core app.

    Example:

    ERP Return Reason Name
    ERP Return Reason Pattern
    Return ID

    Configuration: Performed by DotApparel once prerequisites are met

    1. Enter Australia Post API credentials into the Core app

      • Our team will retrieve these details from the AusPost app in your Shopify admin:

        • Company ID

        • API Domain URL

    Apparel21 Export Changelog

    May, 2024

    Sync products between the Klaviyo Catalogue synced for Shopify and Apparel21 data. It involves retrieving Shopify products via API, and matching barcodes.

    • Placed In-Store Order

      • Contains the transaction details and the various products within that

    • Ordered Product

      • Contains only the one product

    April, 2024

    customers.csv

    If privacy is null (not set) set privacy = 0

    The privacy field now has three states.

    • 1 = Privacy Ticked / unsubscribe

    • 0 = Privacy unticked (was ticked) / subscribe

    • Null = Privacy never ticked / default is unsubscribe but can be modified to set as "subscribe" depending on the company's privacy policy

    March 23, 2024

    orders.csv

    Conversion of SALE_DATE to ''YYYY-MM-DD"T"HH24:MI:SS+11:00'' format.

    The date and time of the transaction will reflect as the date of the event in Klaviyo. The +11:00 at end represents the timezone.

    Example: 2018-12-27T12:30:00+011:00

    Feb 8, 2024

    orders.csv

    • Product REFs

    • Markdown: Y / N

    • Dispatch Store ID + Dispatch Store Name

    • Dispatch Order Number

    customers.csv

    • Person REFs

    Jan 25, 2024

    To ensure smooth syncing to Klaviyo, make sure that all files, especially large ones like bulk files, contain up to 20,000 records or fewer. This will prevent timeouts and syncing issues between DotApparel Customers into Klaviyo.

    Data Export Approaches

    How to configure the required data exports

    Scheduled Exports from Apparel21

    A scheduled job needs to be configured in Apparel21 in order to bulk export customer and order data into an SFTP service, that we we will provide. It is mandatory that customer data should always be uploaded first, with a delay of 30 minutes then followed by the upload of the order data file.

    To best understand what will need to be configured in Apparel21, please reference the below Customer & Order sample files. Apparel21 will need to be configured in order to automatically export CSV files, alongside the frequency of the export task.

    Once the sample files have been confirmed by the merchant, the scheduled jobs must be set up in Apparel21 to export the CSV files and upload them to the provided SFTP server. Apparel21 supports this natively so if you do not have a team member who is across this, you can either:

    Frequency of Scheduled Syncs

    The frequency of scheduled jobs is determined by the merchant. While many merchants opt for a daily sync, certain brands that send post-purchase emails may require more frequent job runs, even as often as every 30 minutes.

    File Naming Convention

    It’s important to note that for our solution to process the uploaded CSV files, a particular naming convention needs to be followed when uploading files to the SFTP server.

    Format: {type}_{datetime}.csv

    Type: customers or orders or rewards

    Datetime: ISO 8601 date and time in UTC

    Examples

    Workflows

    Detailed overview of how the solution syncs data from Apparel21 to Yotpo Loyalty.

    New Loyalty Sign-Ups

    When a new customer signs up, their info is taken from Apparel21 and either put into Shopify or added directly to Yotpo. This makes sure that no matter where they shop, their data is saved to Yotpo. It means customers can earn and use their loyalty points whether they're in the store or online.

    Yotpo Tiers

    When it comes to syncing Yotpo tiers, DotApparel is consistently working behind the scenes, constantly "listening" for changes in a customer's loyalty status. Additionally, the app assists in updating the customer with vital information, such as their current tier status and tier expiry date.

    Rewards Redemption

    DotApparel Loyalty provides customers a way to redeem their accumulated loyalty points through Apparel21 Vouchers which can be used both in-store and online.

    Apparel21 Gift Vouchers ($ Off)

    Customers with accumulated loyalty points can choose to redeem them for Apparel21 Vouchers. The process involves retail staff assistance, customer sign-in/sign-up on the loyalty program website, voucher generation through the DotApparel Loyalty app, and voucher redemption at POS. This option allows customers to receive unique vouchers with specific discounts or benefits, which can be applied in-store or online.

    To enable rewards redemption through Apparel21 Gift Vouchers, merchants need to set up E-vouchers within Apparel21. This allows the DotApparel Loyalty app to generate vouchers for customers when they choose to redeem their points for vouchers.

    Setting up rewards in Yotpo Loyalty

    When setting up Direct Rewards in your Yotpo Loyalty account, make sure to select the coupon type Custom Reward

    DotApparel Loyalty only supports the "Custom Reward" coupon type. This is because redeeming these custom rewards will not generate Shopify discount codes, preventing customers from accidentally redeeming rewards and receiving benefits twice.

    Support

    Additional fields required

    To utilise additional attributes from Apparel21, please follow these steps:

    1. Inform the support team using the in-app support widget.

    2. Ensure that your Apparel21 instance is updated with the new fields.

    3. Configure the CSV file format to include the newly added fields. Let us know if you would like our Apparel21 consultant to do or if you would like an in-house Apparel21 expert to action this instead.

    4. In the app's section, we will configure the new field.

    Syncing Errors

    While instances of failed syncs/jobs are expected to be rare, should you encounter any, we kindly request that you raise a support ticket for prompt assistance and resolution.

    Changing or Migrating Servers

    You may encounter the need to update or migrate servers. To ensure a smooth transition and avoid disruptions, please adhere to the following guidelines:

    • Kindly inform our team at least 7 business days in advance if you plan to change or migrate servers.

    • Merchants will incur a one-time fee of $540AUD which covers the efforts required to maintain seamless data syncs.

    Consequences of Non-Notification:

    • Failure to inform our team about server changes may result in the failure of in-store data syncs to Klaviyo. To rectify this, an Apparel21 specialist will be needed to reinstate scripts.

    • The reinstatement process removes any scripts previously set up, and scripts are crucial for scheduled jobs exporting CSV files to the DotApparel Customers app.

    Q: In the event of a sync failure, will the fix retroactively update customer data for those who were not processed during the time the issue persisted?

    A: No, an Apparel21 Specialist will need to generate a new bulk file for the missing period. We also require the exact date range needed for backdating data.

    What else can we support with?

    Apparel21 consultant

    If merchants don't have an Apparel21 expert in-house then they have the option to have their Apparel21 exports configured by our experienced Apparel21 consultant.

    Customer data clean-up

    Should you wish for us to align the Apparel21 privacy status with Klaviyo and other platforms, please note that this involves additional data cleanup efforts and will result in an additional one-time fee of $500.

    Things To Know

    Here are things to know when finalising your loyalty program and the deliverables of the project

    Rewards Redemption

    • When converting points to rewards, Apparel21 Coupons (% discounts) is currently unavailable. Only Apparel21 Gift Vouchers ($ discounts) can be redeemed.

    • Customer-initiated rewards redemption:

      • Requires front-end customisation for Yotpo's "Redeem" Online Module

      • The front-end effort is estimated at just 15 minutes. We've already developed the script and module, making it usable for merchants that opt for this rewards redemption approach. All the front-end team needs to do is clone and attach the module to a Custom_Reward. It's crucial to set all Yotpo coupon types as Custom_Reward to ensure that Apparel21 Gift Vouchers are triggered.

    Shopify Plus

    • Apparel21 Gift Voucher redemption at checkout must be possible. Either through DotApparel Core or another Apparel21 Connector. The Shopify store must be on Shopify Plus. .

    Emails Containing Apparel21 Gift Voucher Details

    • Merchant can choose to trigger emails that contain Apparel21 Voucher details via:

    • Apparel21 Mailer = Email styling will be required which is around 4 hours effort

    • Klaviyo = Dependancy is that DotApparel Customers is already live and giftcards.csv is configured

    Yotpo Loyalty cannot trigger reward emails via their native Klaviyo integration as it cannot surface the Apparel21 Gift Voucher number and 4-digit pin. Therefore, the native Apparel21 Email service or DotApparel Customers but be selected instead.

    Apparel21 Gift Voucher Setup

    • The merchant will need to set up another Apparel21 Gift Card for Yotpo Loyalty. Apparel21 must set this up for the merchant and their lead time is 1-2 weeks so must be notified upon loyalty program finalisation. It is the merchant’s responsibility to liaise with the Apparel21 team and request the necessary creation of Apparel21 Gift Voucher(s)

    Overview

    Welcome to the DotApparel Customers User Guide

    Our aim is to help you get started with our app and make use of its features for smooth synchronisation of the customer and order information into Klaviyo.

    DotApparel Customers is a middleware that syncs in-store customer, order and rewards data from Apparel21 such as joined store location, in-store order value, loyalty tiers and so much more. With more data in Klaviyo, email communications can be personalised and targeted to help merchants convert even higher.

    What are the Benefits?

    Understanding Customer Setup in your ERP

    In your ERP, there are four possible approaches for configuring customer records. It’s essential to review your current setup and decide the best approach based on how you want customers to flow into your CRM and manage subscriptions.

    If you’re managing multiple brands within a single ERP instance, it’s crucial to separate your customer records and have a clear way to identify which brand each customer interacts with. Additionally, you’ll want the ability to track whether a customer has opted in to receive communications via email, SMS, or both for each brand.

    Example Scenario

    Consider a customer named Jane who signs up for email updates at an Aje store and, on a separate occasion, subscribes to SMS updates at an Athletica store. To handle these nuances, choose a customer setup that aligns with your desired brand and subscription tracking.

    Customer Setup Options

    Translations

    The "Translations" feature greatly simplifies the process of adding translations for Klaviyo attributes. With Mapping Translation Tables, you can now easily create and manage translation mappings, allowing you to provide localised and meaningful representations of attributes to achieve your specific requirements in Klaviyo. Whether you need to map category codes to descriptive names or convert abbreviations to full words, this feature has got you covered.

    Key Features

    Easy Setup: Merchants can add a new "translation table" from the app. Each table is identified with a unique ID, such as "country_name_to_country_code".

    Add Rules

    Shopify Markets

    Markets in Shopify

    Shopify helps merchants expand their business to a global audience, sell to multiple countries, and scale internationally. With Shopify Markets, you can configure multiple languages, international pricing, market-specific domains and subfolders, and more. By creating localized shopping experiences, merchants can better expand their business internationally.

    Reference:

    Mappings

    The solutions offers a powerful "Mapping Tool" feature that provides you with complete control over mapping rules, allowing you to effectively utilise the data available in your CSV files. With this feature, you can configure specific Klaviyo attributes using the data from your source CSV files, giving you the flexibility to tailor the syncing process to your exact needs.

    View and Adjust Mappings for Customers, Orders and Rewards

    Key Benefits

    Data Utilisation: By leveraging the "Mappings" feature, you can make the most of the data contained within your CSV files. You have the ability to extract and map specific information to relevant Klaviyo attributes, ensuring that your customer and order data is accurately synchronized.

    Data Sync

    High level overview of how the solution syncs data

    The sync works by linking Yotpo's loyalty program with Apparel21 (POS) through the DotApparel API. This integration lets Apparel21 use Yotpo's complete loyalty program features, replacing the old Rewards module in Apparel21.

    New Loyalty Sign-Ups

    • New Customers from POS: Customers can join the loyalty program when they're at the store. New customers from Apparel21 sync through to Yotpo Loyalty via DotApparel API. To make sure that new customers signing up for loyalty programs in stores experience minimal delays, we've set up a process to sync the updated customer data

    Getting Started

    The following is a step by step guide to complete the implementation

    Step 1: Onboarding

    Rewards Redemption

    When customers have accumulated enough points OR reached a new tier status, they can redeem rewards in the form of Apparel21 Gift Vouchers.

    Approach #1: Automated Reward Redemption

    Automatically issuing and redeeming custom rewards based on customer milestones, providing instant Apparel21 Vouchers.

    The process of manually selecting rewards is not applicable in this approach. Merchants must have already configured , wherein Yotpo automatically issues and redeems relevant custom rewards when customers achieve specific milestones, such as tier upgrades or anniversaries. Customers instantly receive the voucher in this automated process.

    Store permissions: Create custom app
  • Store permissions: Export products

  • Provide Cloudinary logins if using for images

  • Customers (Klaviyo)

    • Invite [email protected] an admin

  • Loyalty (Yotpo)

    • Invite [email protected] an admin

  • Once activated we will process a full inventory sync and get you to confirm all inventory is expected.

  • Orders will start syncing through to the ERP as normal and the ERP will start assigning them to retail stores for fulfillment.

  • every minute
    . DotApparel Loyalty will create the customer in the connected Shopify store. This step ensures that customer data is centralised and synchronised across Apparel21, Shopify and Yotpo.
  • New Customers from Online: The Yotpo Loyalty app, integrated with Shopify, will automatically sync the newly created Shopify customer to the Yotpo loyalty program. Information automatically gets associated to the respective customer profile. This means customers can start earning and using their rewards both in the store and online.

  • In-store customers must be marked as WEB customers in Apparel21

    To make sure the loyalty system can work with in-store customers, it's really important to label them as WEB in Apparel21. This labelling helps the loyalty system connect with them and make updates through the API.

    Yotpo Tiers

    We're connecting Yotpo's loyalty program with Apparel21 to combine loyalty data, like tier names, expiry dates and rewards. This gives a full picture of customers' loyalty everywhere and allows personalised service based on their achievements. Here's how we do it:

    • Setting Up a Listener: We create a special "listener" in DotApparel Loyalty that waits for a signal from Yotpo whenever a customer's loyalty tier change.

    • Getting the Update: Yotpo tells us a customer's tier changed, who they are and the tier expiry dates.

    • Updating in Apparel21: We then use the DotApparel API to tell Apparel21 to update that customer's tier level.

    • Customising in Apparel21: We decide how the loyalty info should look in Apparel21, which might mean tweaking some fields or attributes in the AP21 person record to store loyalty-related information.

    Apparel21 Customer Attributes

    Keep in mind that customising Apparel21 might come with specific rules and limitations. Before project kick-off we need to decide how the loyalty info should appear in Apparel21 and POS.

    In-store Purchases

    We're connecting the in-store order data in Apparel21 with Yotpo's loyalty program. This way, when customers shop in the store, they'll still get rewards as all of the information lands back into Yotpo Loyalty. Here's how we do it:

    • Exporting Store Purchase Data: The app grabs all the info about customers' in-store purchases from POS. This data is usually in a file that looks like a spreadsheet and includes details about your order, who you are, and what you bought. More info here.

    • Saving the Store Data: The app keeps this data in our system so we can work with it. It's like putting it on our shelf for later. The saved data is processed at the desired interval which is daily or hourly.

    • Sending Data to Yotpo: We use a special tool called the Yotpo Loyalty API to send customers' in-store purchase data to Yotpo. It's a bit like mailing a letter. Specifically, the Create Order endpoint from the Yotpo Loyalty API is used for this purpose. The app constructs the necessary request payload using the stored in-store order data and sends the request to Yotpo.

    • Making the Data Fit: Before sending it, we make sure the data looks right for Yotpo's system. It's a bit like translating it into a language Yotpo understands. All the mappings and transformations to ensure compatibility with Yotpo's API format are visible in the DotApparel Loyalty app interface.

    • Getting Your Loyalty Status: Yotpo gets the data, figures out the tier the customer should belong to based on the loyalty rules, then assigns the correct tier status to the customer's account. This means customers get rewards for their in-store shopping (not just online).

    Inventory (delta)

    Every 5 minutes

    Inventory (full)

    Once daily

    "Colour" and "Size"

    Price

    Price

    Compare-at price

    Original price

    Variant colour

    Colour name

    Variant size

    Size code

    Barcode

    Size barcode

    Track quantity

    "True"

    Initial status

    "Active"

    x-styleCode tag

    Style code

    x-colourCode tag

    Colour code

    x-mappingIndex tag

    {{Style ID}}-{{Colour ID}}

    x-markdown tag

    "yes" or "no"

    x-sibling-handle tag

    The handles of sibling products

    sibling metafields

    Ref: Sibling products

    bulk sync
    Rewards data will be recorded as custom properties and events on the customer profile.
    Reach out to our team and we can provide some best practice examples
    Align on go-live
    Ensure that the files have successfully synced as the scheduled time. You can check this by going into the app and reference the "complete" status on thy sync task. As an added layer, you can check a specific customers by going to the "Customers" section in the app then compare the data with their profile in Klaviyo
    [email protected]
    Mappings
    More info here
    Sign the MNDA via DocuSign (sent on completion of the above) [Merchant]
  • Step 2: Access

    Step 3: Data Exports

    Step 4: Configuration

    Detailed instructions can be found on the Configuration page.

    Step 5: Test & Launch

    Customer Setup Form
    legacy v1/v2 APIs

    API Key

  • API Secret

  • Map ERP Return Reasons

    1. DotApparel will match your ERP return reasons to the Shopify return submission reasons within the Core app.

  • Size - item is too small

    Too small

    1357

    Change of mind

    Change of mind

    1358

    Faulty - zip broken

    Faulty zip

    1359

    [email protected]
    Rewards communications: This is not handled by DotApparel. All should be handled between ERP and the Email Marketing platform.
  • Date for customer rewards account creation: DotApparel only tracks the date for new customers. If an existing customer signs up for rewards at a later stage, DotApparel does not keep track of the date of the account's creation.

  • Store Location Buffers: Deduct a buffer amount for each store or a group to avoid overselling when stock gets low.

    Upload all inventory to Shopify.

  • Download all inventory from AP21 again - this is to cover any stock changes during the previous steps.

  • Re-enable the 5-minute inventory sync.

  • Inventory mappings page
    Inventory Mappings page
    Click here to learn more all the possible ways to apply Inventory Buffers for Locations
    Shopify Locations, DotApparel Locations and Inventory Buffers

    Refunds

    The Auto-Refunds Feature enables transaction refunds using Shopify Payments. With this feature, merchants can easily sync ERP refunds back to the Shopify Payments orders. This functionality is specifically designed for Shopify Payments, as other payment gateways are already integrated with the ERP. This guide will walk you through the steps to initiate transaction refunds within DotApparel

    The benefit of the feature

    The main advantage of this feature is the streamlined refund process for Shopify payments. Here's how it benefits merchants:

    1. With this feature, merchants no longer need to handle refunds separately in both the ERP and Shopify. Instead, merchants can process refunds exclusively in the ERP, saving time and effort.

    2. When merchants process a refund in the ERP, the payment status of the corresponding order in Shopify will be automatically updated. This sync ensures that the payment status is accurate and up to date in both systems without manual intervention.

    How to set up Auto-Refunds

    The configuration generally includes 3 main steps:

    Step 1: Set up a new return reason in ERP.

    This step requires the merchant to set up the new return reason on their end. The new return reason can be anything such as Shopify Refund but should be a unique reason to avoid potential coupling issues with existing ones.

    Step 2: Select the Return Reason in DotApparel.

    1. Open the DotApparel app and go to the settings page.

    2. Locate the Refund section, and choose the newly created return reason.

    3. Ensure that the auto-refund functionality is enabled.

    4. Save the changes.

    Step 3: Enable Fulfilment Automation in DotApparel.

    1. Within the settings page, navigate to the automation section.

    2. Find the option to enable fulfilment automation and activate it.

    3. Save the changes.

    How the Auto-Refund works

    Every Auto-Refund workflow consists of 3 main steps:

    • Step 1: The merchant returns one or multiple items in the ERP

    • Step 2: DotApparel downloads the updated orders from the ERP

    • Step 3: The refunded orders are processed in Shopify

    Step 1: The merchant returns one or multiple items in the ERP

    After an item is refunded in the ERP, it must be assigned a specific return reason designed for auto-refunds. In DotApparel, a pre-defined return reason ID is established to identify eligible items for auto-refunds. To trigger the auto-refund process in Shopify, the following conditions must be met:

    1. The ERP OrderDetail (line item) status should be marked as "Returned".

    2. The return reason ID assigned to the refunded item in the ERP matches the pre-defined return reason ID in DotApparel.

    Step 2: DotApparel downloads the updated orders from the ERP

    DotApparel is running an automation task to regularly download the most recently updated orders from the ERP. By default, this task occurs once per hour, ensuring the system stays updated with the latest order information.

    If the Apparel21 Retail API version is 2022.3 or newer, the download task is more frequent, running every 5 minutes for faster synchronization.

    Once the orders are downloaded into DotApparel, the system proceeds to evaluate each order's eligibility for automatic refunds in Shopify. DotApparel checks various criteria to determine if an order can be automatically refunded within the Shopify payment gateway. If an order meets the necessary conditions for automatic refunding, DotApparel lists the refund requests within the app for merchant review and processing.

    Step 3: The refunded orders are processed in Shopify

    Once an order is processed in DotApparel, the corresponding items are immediately refunded in Shopify. DotApparel communicates with Shopify's refund functionality, initiating the refund process for specific items.

    Upon successful refund in Shopify, the "refund notes" section within the order will be updated with a reference ID. The reference ID format is as follows: "Reason: '[ERP Refund] - ref: 4a00e8e1-cd94-46f8-9090-f5d9f9e4107b'". This reference ID serves as a unique identifier and enables merchants to easily locate and view the ERP refund details within the DotApparel app.

    In the event of any error during the auto-refund process, DotApparel promptly displays an error message. The order associated with the failed refund is labelled as "Failed to refund" within DotApparel, indicating that the refund was not successful. Merchants can review the specific error message in DotApparel to identify the cause of the failed refund and take appropriate action, such as manual refund processing in Shopify if necessary.

    Limitations

    This section highlights the limitations of the auto-refund feature in DotApparel and its integration with Shopify. It covers scenarios where manual refunds in Shopify, third-party payment gateways, and gift card payments are not supported.

    1. If an order has already been refunded manually in Shopify, the auto-refund process in DotApparel will be halted to prevent duplicate refunds. Merchants are required to manually process the refund in Shopify for such cases.

    2. The Auto-Refund only supports Shopify Payments. Any other third-party payment gateways are not supported for auto-refunds through DotApparel. Merchants using third-party payment gateways will need to handle refunds directly within their respective payment gateway systems.

    3. The Auto-Refund feature does not support refunds for orders paid with gift cards. In cases where an order is paid using a combination of gift card and Shopify payment, only the portion paid with "Shopify payment" can be refunded through Shopify. Merchants need to process any gift card refunds separately, outside the auto-refund process.

    Option A: Consultant
    Option B: In-House
    {{#translate}}translation_table_id::attribute_to_lookup{{/translate}}
    {{#translate}}cat_codes_to_category::references.category.code{{/translate}}
    customers_20230424T201230Z.csv
    orders_20230101T120101Z.csv
    rewards_20230101T120101Z.csv
    • Harness the power of omni-channel marketing Combine retail customers and orders for effective marketing campaigns.

    • Loyalty program communication Track and manage customer loyalty communications based on pre-defined events such as reward level updates and VIP status promotions.

    • Customer profile sync Keep customer profiles up to date with synced information (name, birthday, primary store, and total order value).

    • Compliance and consent Easily manage customer newsletter consent for seamless compliance with data privacy regulations.

    • Post-purchase emails

      • Include the staff name and store that the customer purchased from for retail post-purchase emails.

      • Trigger perfectly timed review requests to collect . With Klaviyo reviews, you can also further enhance your segmentation based on review data, reward 5-star reviewers with a unique coupon and more.

    How does it work?

    • It syncs customer, order and reward data from Apparel21 into Klaviyo

    • The solutions operates by processing CSV files from Apparel21 through a SFTP server.

    • A task is setup on the Apparel21 server to export CSV files for processing

    • We then import, map and send this data into Klaviyo

    • There is support for customers, order events, reward events and a number of customer properties like store details, loyalty information, email and sms status and more.

    DotApparel Customers work behind the scenes to capture customer data that resides in Apparel21. As long as online customers also sync with Apparel21, DotApparel Customers can perform its job and sync customer information into your email platform. The best way to sync online cutomers to Apparel21 is through our DotApparel Core solution.

    Integrate in-store and online marketing consent

    Ensure both DotApparel Core and DotApparel Customers are installed.

    • In-Store Marketing Consent:

      1. Originating from Apparel21 POS.

      2. Flowing through DotApparel Customers.

      3. Integration into Klaviyo (Shopify will be updated via the native Klaviyo app).

    • Online Customer-Initiated Marketing Consent:

      1. Originating from the website/Shopify platform.

      2. Flowing through DotApparel Core.

      3. Integration into Apparel21.

    Integration workflow for Core & Customers

    The integration of both DotApparel Core and DotApparel Customers guarantees a smooth synchronisation of Shopify marketing consent to Klaviyo, passing through AP21 before reaching its destination in Klaviyo. This diagram provides insight into the data flow among Klaviyo, Apparel21, and Shopify, illustrating how updates are seamlessly managed across each platform.

    As you can see, the marketing consent can be updated in 3 separate platforms; Klaviyo, Shopify and Apparel21. The DotApparel integrations (Core and Customers) ensure that data is up-to-date across all platforms. This integration workflow also applies to merchants using Salesforce Marketing Cloud instead of Klaviyo.

    How much does the app cost?

    There is a ane-time implementation and an ongoing monthly subscription.

    • One-time implementation fee of A$4,000 per Klaviyo account.

    • Ongoing monthly subscription of A$300 a month per Klaviyo account and $200 for any additional regional instances.

    Option
    Approach
    Use Case
    Implementation Details

    1

    Single Brand, No Brand Separation

    Suitable for merchants using a single brand in the ERP. Manages subscription preferences without differentiating between email or SMS. Note: Apparel21 Privacy setting is used as our only marketing reference.

    No additional fields are needed.

    2

    Single Brand, Enhanced Subscription Tracking

    Single brand setup with more detailed fields to distinguish between email and SMS opt-ins.

    Uses either: - REF Codes - Custom Data Fields

    3

    Multiple Brands, Brand Separation via Custom Data Fields

    Manages multiple brands in a single ERP instance, with granular tracking for email and SMS preferences per brand.

    Difference between REF CODES vs. CUSTOM DATA

    CUSTOM DATA (preferred)

    • Offers greater flexibility in how fields are displayed in POS.

    • Field titles can exceed 15 characters, allowing for more descriptive labels.

    • Enables data validation within POS (e.g., clicking on a "Brand Marketing Email" field and selecting "Yes" or "No").

    • When viewing a customer profile in POS, a separate column will be shown for each brand, making it easier to manage and view brand-specific data.

    REF Codes

    • Field names are limited to a maximum of 15 characters, which can restrict how detailed the labels are.

    Key Considerations for Option 4

    • Ideal For: Merchants with multiple brands that don’t sell other brands in the same retail location.

    • Data Management: This is the cleanest solution for maintaining separate customer records, ensuring that each brand’s data is accurately captured and extracted.

    • Implementation Timeframe: If not already in place, setting up ERP Brand Separation may require a dedicated project with an estimated turnaround time of 1-2 months.

    • Cost Implication: The implementation could be costly and would need to be managed as a separate ERP project.

    Implementation Responsibility and Steps

    1. ERP Team: Schedule and execute the brand separation project.

    2. Merchant: Approve the project scope and budget.

    3. ERP Team: Confirm the successful completion of brand separation.

    4. DotApparel: Proceed with the project once the ERP setup is confirmed.

    Note: Without proper brand separation, data extraction may be complex and prone to errors. This setup is critical for a seamless integration with DotApparel Customers.

    Additional Effort

    If you require assistance from an Apparel21 expert (Options 1, 2 and 3), this work is charged based on time & material, charged at A$180 per hour. Setting up CUSTOM DATA in Apparel21 is estimated at least 4 hours of effort (estimated total of A$720).

    : Within a translation table, merchants can add rows consisting of "from" and "to" values. This allows for defining the translations between the original values (from) and the desired translated values (to).

    User-Friendly Interface: The interface for managing translation tables is designed to be intuitive and easy to use, even with a large number of rows. Merchants can add translations one at a time or in bulk using a textarea input, with each translation on a separate line and separated by commas.

    Import multi lines in Buik Editor

    Search Functionality: Merchants can search within a translation table to quickly find a particular translation they are looking for.

    Edit and Remove Translations: Translations can be easily edited by clicking on the "from" or "to" value within a row. Additionally, merchants can remove translations by clicking a delete button associated with each row.

    Using Translation Tables

    Once a translation table is defined, merchants can utilise it in the existing attribute mapper. Within the attribute template, merchants can specify a particular lookup translation table and output the translated "to" value. The syntax for this is as follows:

    In this syntax, "translation_table_id" refers to the ID of the translation table, and "attribute_to_lookup" is the attribute used to find the corresponding "from" value.

    If a table entry for the "from" value is not found, the raw "from" value will be outputted into the template.

    Example Usages

    Let's consider a scenario where a translation table named "country_names_to_country_codes" has been created to map the country names from Apparel21 to country codes in Klaviyo. Here's how you can utilise the Mapping Translation Tables feature:

    Set up a Translation Table

    On the translations page, create a new translation table with a name like "Country Names to Codes"

    Add Rules to the Translation Table

    Within the "country_names_to_codes" translation table, add rows for each country name and its corresponding country code. Or using the Bulk Editor to import multiple rules at once. For instance:

    • From: United States, To: US

    • From: United Kingdom, To: UK

    • From: Canada, To: CAN

    Utilise the Translation Table

    In the attribute mapper of the app, incorporate the translation table to display the country codes. In your mapping rule in Mappings, use the following syntax: {{#translate}}country_names_to_codes::{{COUNTRY}}{{/translate}}

    This template code retrieves the country name from the raw CSV data and uses the "country_names_to_codes" translation table to output the corresponding country code. If a translation for a specific country name is not found in the table, the original country name will be displayed.

    Multi-currency in ERP

    ERP allows merchants to configure additional price schemes in various currencies, in addition to the primary currency of the business. For example, a business based in Australia (AUD) can set up a new price scheme in US Dollars (USD) within ERP.

    By setting up these additional price schemes, merchants can manage product prices in different currencies in the ERP and expose the price data through the Retail API.

    How it works in DotApparel

    DotApparel provides seamless integration between Shopify Markets and ERP, allowing merchants to connect multiple ERP APIs to their respective Shopify Markets. This feature enables the synchronization of product pricing between ERP and Shopify, ensuring accurate and up-to-date information is available to customers across different markets.

    • Markets Synchronization

      • DotApparel retrieves the latest configurations from Shopify Markets, ensuring that the data is up-to-date.

      • This synchronization process guarantees that the Markets information and settings in DotApparel align with the Shopify Markets' requirements and changes.

    • Multi-ERP Configuration

      • DotApparel allows merchants to connect one or more Shopify Markets to either the primary ERP API or an additional API.

      • This flexibility enables merchants with multiple ERP instances to manage various markets efficiently

    • Pricing Integration

      • DotApparel offers seamless integration of product prices between ERP and Shopify Markets.

      • By mapping the appropriate ERP API to each Shopify Market, DotApparel retrieves the product prices in the desired currency for each connected market.

    • Order Integrations

      • DotApparel provides the option to sync Shopify Markets orders to ERP in multi-currency.

      • Orders can be synced in either the store currency or the configured market currency, based on the individual configuration for each Market and ERP mapping.

    https://help.shopify.com/en/manual/markets

    Customisation: The feature allows you to create custom mapping rules, enabling you to match the columns in your CSV files with the corresponding Klaviyo attributes. This level of customisation ensures that the data is accurately transferred and seamlessly integrated into your Klaviyo account.

    Flexibility: With the "Mappings" feature, you can configure how the data from your CSV files is transformed and aligned with Klaviyo attributes. This flexibility allows you to accommodate variations in data formats or naming conventions, ensuring that the syncing process adapts to your specific data requirements.

    How to Use the Feature

    "Mappings" are templates and rules linked to specific Klaviyo attributes. DotDev will set up these mappings for you based on your preferences and CSV samples, but you can also update them yourself.

    To access the mappings, go to Customers > Mappings or Orders > Mappings. Here, you'll see a list of Klaviyo attributes and their associated mappings.

    Clicking on a mapping, will reveal the details, including any rules and templates applied to that particular field, and the ability to change them.

    You will need to enter the description, scope, target field, rules and template for each mapping.

    • Description: A brief description of the mapping, such as extracting the first name from the "FIRST_NAME" column.

    • Scope: The type of object to which the mapping should be applied.

    • Target Field: A list of pre-defined Klaviyo attributes that are available through the Klaviyo API. It is important to keep in mind that you will need to provide a key name for any properties.

    • Rules: Each mapping contains one or more “rules”. When the DotCustomerHub app is calculating the value of a particular Klaviyo attribute, it will first find any mappings attached to that field, and then for each mapping, loop over the rules until one evaluates to true.

    • Template: When a rule evaluates as true, the template attached to that rule will be used to calculate the attribute in Klaviyo. The templates are , and are a powerful way of composing the value you need in Klaviyo, without writing any code.

    For example, you can map the MOBLIE column from CSV to the phone_number attribute in Klaviyo, as shown in the screenshot.

    • The Target field is selected to phone_number

    • The rules and templates dictate that if the MOBILE column is filled, the phone_number attribute in Klaviyo should be aligned with the MOBILE data from the CSV.

    Click on Mappings which is the button on the top right of the page
    Approach #2: Customer-Initiated Redemption

    Involves customers manually selecting and redeeming rewards by logging into their online accounts.

    1. Store Staff Checks: When the customer is at the store, the staff will see if they've earned enough points for rewards. They can tell because it shows up on the AP21 POS interface. If the customer has accumulated enough points to redeem a reward, the retail staff asks the customer if they would like to redeem any existing rewards. For example, the staff might inform the customer, "You have 100 points which can be redeemed for a $5 voucher. Would you like to redeem it?"

    2. Signing In or Signing Up: If the customers want to use their points, the staff will help the customer sign in or create an account using the QR code or loyalty webpage. This webpage allows customers to access their loyalty account, view available rewards, and initiate the redemption process.

    3. Picking The Reward: Customers get to choose the rewards they want, like a voucher for a discount. Upon selecting the desired reward for redemption, this triggers the creation of a voucher order in Apparel21 using DotApparel API. Apparel21 then sends an email to the customer containing the voucher number and any necessary PIN or verification information. This email serves as confirmation and provides the necessary information for redeeming the voucher at the POS.

    4. Using Your Voucher: When customers are ready to pay, they will show the staff their voucher. Store staff checks it, and if everything is okay, customers get their discount.

    Accessing Rewards using a QR Code In-store

    Customers can access their loyalty account on their personal mobile device while shopping in-store. In addition, they can also:

    • Enrol themselves in the loyalty program using the in-store QR code.

    • Access current status & available rewards through landing page.

    • [Only applicable for customer-initiated redemptions] Redeem points for vouchers. These are essentially Apparel21 Gift Vouchers that can be used in-store or online.

    Merchants should have a specific page on their website that includes an interface for the loyalty program. This interface allows customers to access their loyalty accounts, view their accumulated points, and initiate the redemption process. The website should provide a user-friendly experience that enables customers to easily view and (if applicable) redeem their loyalty points for voucher, when shopping offline. View more here:

    Direct Rewards Yotpo
    Front-End Implementation

    Product images

    DotApparel supports integration with Image Storage, a media management tool that's great for storing images.

    Aside from pulling product attributes from the ERP, the DotApparel app is also able to source product images from AWS S3 buckets, and Cloudinary. The task to download product images runs once per day and will scan the image source for any images which match a particular naming convention, before uploading them to the relevant products in Shopify.

    Configuring Image Storage

    To attach your Image Storage (i.e., Cloudinary) to DotApparel, simply click “Settings” in the app, and scroll down to the Images section. Here, you will need to provide your API credentials which are available from the Image Storage's dashboard. When complete, the app will automatically begin scanning Image Storage for images on a daily basis and uploading any images it finds into Shopify.

    Image Integration Options

    You can choose the type of image integration you need to suit your needs:

    • Create Only This option adds new images to your Shopify products without affecting any existing images. It’s ideal when you want to upload images for newly created products while leaving images for existing products unchanged.

    • Create and Replace (Most Common) This is the most commonly used integration method. It adds new images to your Shopify products and updates existing images with the latest versions. If you frequently update product images, this option ensures all images are current without duplicating existing ones.

    • Create, Replace, and Delete This method not only adds new images and updates existing ones, but also removes any old images that no longer correspond to the product in your image repository (e.g., Cloudinary). This option is useful for maintaining a clean and accurate image library, ensuring only relevant images are linked to your products.

    Naming convention

    For DotApparel to find the right images for each product in Image Storage, the image file name must contain the same style code, and colour code, followed by an optional position.

    {styleCode}_{colourCode}_{position}.jpg

    With this convention, if we had three images for a product with a style code ABC, colour code BLUE, then we might upload the following images.

    1 ABC_BLUE_1.jpg

    2 ABC_BLUE_2.jpg

    3 ABC_BLUE_3.jpg

    In addition to the style code and colour code, merchants can incorporate other metadata in the file names such as product names. It’s important that no matter what naming convention you choose, it’s consistent in Image Storage.

    Automatic Image Sync for New Shopify Products

    We have streamlined the image sync process so that when a new product is added to Shopify, DotApparel Core will automatically check for any matching images using the product’s unique style code. If there were previous failed attempts to sync the images, the system will reset those failures, ensuring the product’s images are included in the next round of automated daily syncing.

    Enabling Product Create Webhooks

    For this to work, make sure the Product create Shopify webhooks are enabled:

    1. Go to Settings in your Shopify store.

    2. Navigate to Shopify webhooks.

    3. Ensure the Product create webhook is enabled.

    4. Click Refresh webhooks

    Manually Trigger an Image Sync

    As long as a correctly named image is stored in Image Storage, DotApparel Core will automatically sync the image to the corresponding Shopify product during the next daily image sync. However, merchants may want to take manual action to sync newly added images instantly.

    This can be done through a manual image sync trigger which is a 2-step process:

    1. Download from storage

    2. Upload to Shopify

    Pricing for Cloudinary

    While our merchants who leverage the Cloudinary integration typically opt for the Plus plan priced at $89 USD per month, the Free plan is available for those who wish to explore it. However, it comes with a 30-day free credit allowance, capped at a maximum of 25 monthly credits (equivalent to 25GB of image storage).

    Your choice depends on the number of images and image size. To ensure a seamless image integration without interruptions, we highly recommend the Plus plan.

    Video Sync Not Supported

    DotApparel Core does not support syncing videos from Cloudinary, S3, or other storage platforms. Shopify only accepts video links from YouTube or Vimeo, or files manually uploaded in the product media section.

    To display videos on your store, you'll need to either:

    Google Cloud and Firebase

    Learn a bit more about the solution infrastructure we use

    About the platform

    Google Cloud is a cloud computing provide providing various resources like services, databases, security, various APIs and real-time reporting to businesses and developers. Firebase is a product by Google that focuses on providing a managed platform for web application development that offers solutions for authentication, storage, functions, databases and monitoring.

    To begin your DotApparel setup, you should configure your Google Cloud account, then set up your Firebase projects so that we can deploy the DotApparel solution in an environment you control.

    Managing your account

    You own the account, and we manage it for you. Once you have created your account and projects, it's your reposnsibility to manage the billing side and addressing and related emails you receive. We handle the setup, maintenance, configuration, alerts, monitoring, reporting and deployments for you.

    A single Google Cloud account can have many Firebase projects created, and all will be billed together under one invoice from Google Cloud. So you will be charged directly by Google for your usage of resources, while the subscription for our solutions are paid to DotApparel. The fees charged by Google Cloud will go up and down each month, depending on actual usage.

    Usage and ongoing costs

    It is difficult to accurately determine this as there are several factors that will impact the monthly costings. To help provide an indication, over 90% of our merchants are paying less than $200 USD per month for their Google Cloud usage. It can be as low as $50 USD per month for a solution that's not using features that require additional API calls such as live inventory lookups.

    Important to note, we have seen the monthly cost spike as high as $1,000 USD but this is not common and again, it will be impacted by the use of API calls and the scale and traffic or size of data we are handling for you.

    Usage for Google Cloud services will be based primarily on the number of customers, orders, products (colours and sizes), and features in use.

    Reasoning for multiple projects

    Multiple Firebase projects for each solution instance allow for easier management across security, logging, alerting, and deployments. This architecture enables "rolling deployments" across lower-risk brands. Since our solutions are fully serverless, there is no cost impact on maintaining multiple Firebase projects as charges are usage-based only.

    Creating your account and projects

    When setting up accounts

    Your Google Cloud account must have a user with permissions set to "Organizational Admin"

    Organization Policy Administrator

    We recommend for several key members in your business to have access to this Admin user. This permission level will allow your account to grant the necessary permissions to accept other domains.

    Create your Google Cloud account

    If you already have a Google Cloud account, then you can use your existing account. Otherwise, here are the steps to creating a Google Cloud account:

    1. Navigate to

    2. Click “Get started for free” in the top-right.

    3. Login with a Google account or create a new Google/Gmail account if required.

    4. Follow the instructions to enter your company information and payment details.

    Note: Use a team-accessible generic email, not a personal one, for the Google Cloud Account admin to avoid future billing issues

    Create your Firebase project(s)

    For each of your instances you must create an individual Firebase project. Within each of these projects, an “instance” of the DotApparel app is installed, follow these steps to create a project:

    1. Go to and log in with your Google Cloud

    2. Click "Add project" in the top left corner.

    3. In the "Project Name" field, enter [Brand Name] DotApparel [Solution] [Region]. For example, if your brand is called Acme and you are adding support for your AU website, enter "Acme DotApparel Core AU."

    4. On the next step, uncheck the "Enable Google Analytics for this project" checkbox.

    Upgrading to a paid account

    If you have just created your Google Cloud account, you’ll be enrolled to a free 30-day trial. To ensure that your service is not interrupted, you should immediately upgrade the account to a paid billing account (Blaze plan). You will still retain your trial credits, but it means that when the trial runs out, your payment method will begin to be charged without interruption.

    See a helpful guide with step by step instructions here:

    Harmony Integration with DotApparel

    Supported features

    The following features are currently supported by DotApparel Core

    • Products

    • Inventory

    • Orders

    • Fulfillments

    • Marketplace

    • Images (via S3/Cloudinary. No native image integration from Harmony)

    • Customers

    Coming soon

    • Gift Cards

    • Refunds

    Connection

    A keyword should be configured along with URL, username and password. These should be available in the reference sheet, otherwise can be retrieved from merchant/FBS team.

    Products

    Harmony price fields settings are used to determine which field should we use for original/markdown price from Harmony response.

    Orders

    Freight options

    • Carrier code: Determines which carrier the order should be shipped with (i.e. Aus Post, StarTrack, etc.)

    • Freight stock item namekey: This is configured in Harmony by FBS & merchant and is required as part of the order payload. This should be available in Reference sheet or can otherwise be retrieve from FBS/merchant.

    Click & Collect orders:

    Current implementation also enable C&C order posting. If merchant enables new pick up location it they need to inform us to update the settings:

    However, Harmony requires shipping address field to be populated in order payload so we also need to add a dummy value for this via order mapping.

    Harmony specific values

    These are constant values that should be readily configured for each brand, and are required as part of order payload. These should be available in reference sheet or can otherwise be retrieved from FBS.

    Fulfillment warehouse will be overridden for click and collect order (Local pickup), which will use the warehouse namekey that’s configured in the settings

    Marketplace order can also override these fixed values, specifically:

    • Agent zone

    • Originated warehouse

    • Payment merchant ID

    • Payment card type

    These make sure that order placed via marketplace can be processed against different payment information and fulfilled by different warehouse within Harmony.

    Mappings

    Most of the mappings are similar to what’s currently available to Apparel21. However there are a few areas that are specific to Harmony:

    Orders

    • By default, Harmony uses capitalisation for all order information (names, addresses, etc.)

    • altOrderNumber: alternative order number mapping, only used for marketplace order.

    Configuration

    Steps we take to configure your instance

    Once DotApparel Customers is installed, we will provide the SFTP server information to the merchant, including host, username, password, and port number.

    All the CSV files need to be uploaded to the pending and bulk folders.

    • /test: Files saved here are for testing, we will review these during setup.

    • /pending: New files that are waiting for processing.

    • /processed: Files that have been processed.

    • /bulk: Files saved here will not undergo automatic processing. Instead, it will exclusively generate new customer profiles in Klaviyo without performing updates to the marketing preference.

    Multiple Klaviyo Connections

    This feature allows users to establish and manage connections to multiple Klaviyo accounts from within the app. Each connection is uniquely identified by a user-defined name, Klaviyo private key, and corresponding file directory.

    Initial Setup Instructions

    1. Navigate to the app's settings page.

    2. Click on the "Add new connection" button to create a new configuration.

    3. Give the connection a meaningful name that reflects the Klaviyo account it represents. For example, "Klaviyo AU" or "Klaviyo NZ."

    4. Obtain the private API key for the corresponding Klaviyo account. Enter this key in the provided field to enable data synchronization with Klaviyo.

    Configure Settings

    Customers

    1. Primary Key* The primary key is a unique identifier for each customer in your CSV file. It could be any value that is unique for each customer, such as a customer ID. During the configuration process, you will be prompted to specify the name of the primary key column in your CSV file.

    2. Email Column* The email column represents the column in your CSV file that contains the email addresses of your customers. It is used to map the email field in Klaviyo.

    3. Phone Column The phone column represents the column in your CSV file that contains the phone numbers of your customers. It is used to map the phone number field in Klaviyo.

    Please note that these column names should match the actual column names in your CSV file. Make sure to provide accurate column names during the configuration process to ensure proper mapping between your CSV fields and Klaviyo API fields.

    Orders

    1. Primary Key* The primary key for orders is a unique identifier for each order in your CSV file. It can be any value that is unique for each order, such as an order ID or transaction ID. During the configuration process, you will be prompted to specify the name of the primary key column in your CSV file.

    2. Customer Reference Key* The customer reference key is the customer identifier that you have configured in the customer CSV configuration. It allows you to link the order data with the respective customer data. For example, if you have used "customer ID" as the primary key in the customer CSV configuration, you would enter the name of the column that references the"customer ID" in the order CSV configuration.

    Ensure that the column names provided during the configuration process match the actual column names in your CSV file. This will ensure accurate mapping between your CSV fields and Klaviyo API fields for order data.

    Once the checklist is complete, we will need to test the integration which will consist of uploading the example files to the SFTP server.

    Gift cards

    Purchase ERP Vouchers Online

    The purchasing of a voucher works much like any other product in the ERP. The difference is that on the product detail page, the customer is presented with a form, which captures additional information to pass on to the ERP with the purchase. These attributes are stored as line item properties in Shopify, which are then passed on to the ERP.

    In the DotApparel settings section, you will find a gift card section, which allows you to define a Shopify SKU pattern, alongside the type of gift card and the ERP SKU. This allows you to configure a product in Shopify, which has multiple variants to represent each voucher amount, but map all the SKUs to a single voucher SKU in the ERP.

    Loop Returns

    How the integration works

    DotApaprel utilises Loop's webhooks to create a return in ERP whenever a customer initiates a return through the customer portal, allowing the customer to receive store credit upon processing the return request. The store credit is then seamlessly converted into a gift voucher, which ERP directly sends to the customer.

    Basically, the flow looks like this:

    1. The customer starts the return process in Loop.

    Integrate with The Wishlist (app)

    What is The Wishlist?

    The Wishlist is a tool that enhances the customer experience by enabling users to create and manage wishlists on your e-commerce store. It provides an easy way for retailers to capture shopper details and preferences, both in-store and online, and automatically generates personalised marketing campaigns that build engagement and drive sales.

    {{#translate}}translation_table_id::attribute_to_lookup{{/translate}}
    An automation task within DotApparel downloads the product prices from ERP on a daily basis and automatically uploads the fixed prices to the respective Shopify Markets.
    This flexibility allows merchants to choose whether to sync orders in the original market currency or convert them to the store's default currency in ERP (calculated by Shopify).

    Uses either: - REF Codes - Custom Data Fields Example: [email protected] Brand A:

    Email = Yes, SMS = No

    Brand B:

    Email = Yes, SMS = Yes Brand C:

    Email = No, SMS = No

    4

    Multiple Brands, Complete ERP Brand Separation

    Recommended for merchants managing multiple brands who want each brand to have a separate customer record.

    Uses ERP Brand Separation to create distinct records for each brand, along with REF Codes. Example: [email protected]

    Brand A: Email = Yes, SMS = No [email protected]

    Brand B: Email = Yes, SMS = Yes [email protected]

    Brand C: Email = No, SMS = No

  • Click "Create project" and wait for it to complete. Once the Firebase project has been created please refrain from configuring anything else such as setting a region.

  • Click the button in the bottom-left marked “Upgrade,” then click the blue button under “Pay as you go,” and then the blue “Purchase” button. Finally, close the modal.

  • Click the little cog icon in the top-left corner and select "Users and permissions."

  • Click the blue "Add member" button in the top-right corner of the table.

  • Enter [email protected] into the email field.

  • Select "Owner" in the role dropdown.

  • Click the "Add member" button to confirm.

  • Google Cloud
    https://cloud.google.com
    https://console.firebase.google.com
    Upgrade to a paid Cloud Billing account

    Safe Mode Safe Mode is the most conservative option designed to sync images only to products without any images on Shopify.

  • Link a YouTube or Vimeo URL, or

  • Upload the video directly to Shopify.

  • See Cloudinary Pricing
    This will ensure to sync images with newly created Shopify products for upload

    DotApparel Customers seamlessly directing it into Klaviyo.

    product reviews
    mustache templates
    Shop debtor
    Example mapping (only for address1 but can update for other fields if required)
  • Define the file directory that corresponds to the specific Klaviyo connection. For example, you can set '/pending/au' to connect to your Klaviyo AU store and '/pending/nz' for the Klaviyo NZ store.

  • Click the "Add new Klaviyo connection" button to save the configuration.

  • First Name Column* The first name column represents the column in your CSV file that contains the first names of your customers. It is used to map the first name field in Klaviyo.

  • Last Name Column* The last name column represents the column in your CSV file that contains the last names of your customers. It is used to map the last name field in Klaviyo.

  • Order Number Column
    *
    The order number column represents the column in your CSV file that contains the order numbers. It is used to uniquely identify each order.
  • Unique Order Item Identifier The unique order item identifier represents the column in your CSV file that contains the order items. It is used to uniquely identify each item within an order. This identifier is helpful when dealing with orders that have multiple items.

  • When a customer purchases a voucher in Shopify, it is treated as an ordinary product purchase, except the additional information like the recipient email, is also passed to the ERP. It is then up to the ERP to generate the voucher number and PIN and send an email to the customer containing that information.

    If you would like to customise the email which is sent to the customer when a voucher is generated, you should get in touch with the ERP.

    Redeeming ERP Vouchers

    DotApparel allows ERP Vouchers to be redeemed with a checkout extension that can be installed on Shopify Plus checkouts.

    To use the checkout editor, you need to upgrade to checkout extensibility and your store needs to be on the Shopify Plus plan.

    Once our team has installed the Gift Card checkout extension, customers will be able to see the ERP voucher number and voucher PIN fields.

    When the customer completes this form, a live request is made to the ERP to check the current balance of the voucher and obtain a validation ID. A temporary Shopify gift card is then created for the value of the ERP voucher, allowing it to be redeemed against the Shopify order.

    When the order is posted to the ERP, DotApparel swaps out the Shopify gift card information with the ERP voucher information, thus triggering the ERP to redeem the voucher internally.

    Avoiding fraudulent redemptions

    Many merchants ask how we avoid customers redeeming vouchers twice. Let’s say the customer has a cart already filled on the website, applies the voucher, but then goes to buy something in-store with the same voucher, before checking out online.

    In this case, DotApparel does not apply any sort of special locking or validation to the vouchers. The web order will still be posted to the ERP and accepted in Shopify. However, when the ERP internally tries to redeem the voucher, the posting will fail, saying that the voucher has already been redeemed at POS. In this scenario, you should treat the order as fraudulent, and cancel it in Shopify.

    Step By Step Guide (High-Level)

    Steps
    Responsibility

    Make sure the ERP gift voucher is configured in the ERP

    Merchant

    Provide the ERP gift voucher details for DotApparel team to configure in the app ()

    Merchant

    Upgrade to checkout extensibility

    Front-End

    Configure the ERP Gift Vouchers in the DotApparel Core app

    DotApparel

    Test the ERP Gift Voucher and check that you can purchase from the PDP. Then place another order to use that the ERP Gift Voucher to redeem at checkout ⚠️ If it's a new ERP Gift Voucher, we recommend to test on a Shopify staging store ⚠️ If you're upgrading your Shopify checkout, you can test it straight on the Shopify production store

    Merchant

    What fields does we need to configure the ERP Gift Vouchers within DotApparel Core?

    • ERP voucher SKU ID (i.e., 12345)

    • ERP voucher type (i.e., Email AU)

    • Shopify SKU pattern (i.e., E-VOUCHER)

    • Shopify SKU type (i.e., physical)

    Where do I find this voucher information in the ERP?

    Someone in your team may be able to find the information directly in the ERP interface. Otherwise, they can be provided by ERP support.

    The return status in Loop is marked as "in progress".

  • DotApparel automatically creates a return order in AP21.

  • The customer ships the returned item to the merchant.

  • The merchant confirms they've received the returned item.

  • The merchant completes the return in Loop.

  • Loop refunds the Shopify order.

  • The return status in Loop is marked as "closed". If no gift voucher is needed, the process ends here. However, If the customer chooses store credit or needs a gift card refund:

  • DotApparel sends a request to AP21 to generate a new gift voucher.

  • AP21 then emails the new voucher to the customer.

  • Let us know what you want

    Our Loop configuration can do these four things:

    1. Return Processing: When a return is made through Loop, the integration sets up a return process by mapping return reasons, creating a return order, and generating a Return Authorisation Number (RAN) in the ERP system. This applies to all merchants using Loop. This applies to all merchants using Loop integration.

    2. Refund with Gift Card: If a return involves refunding to the original payment and a gift card was used, the integration generates an ERP return voucher. This applies to merchants using ERP voucher.

    3. Store Credit: For customers choosing store credit in Loop, the integration sends out an ERP return voucher. This is relevant for merchants who have integrated the store credit feature in Loop.

    4. Exchange Orders: The integration can push exchange orders (prefix EXC-) from Shopify to the ERP system. This specifically applies to merchants using the exchange feature in Loop.

    Merchants can choose to launch with any one or all four of the configuration above. However, if at any point in the future, merchants plan to add #3 and #4 then merchants will need to reach out to Loop for the necessary configurations.

    Setting up the integration

    Before we can start, merchants may need to contact Loop support for the disabling or modification of certain features to ensure smooth functioning.

    Pre-requisite for Instant Exchange

    For merchants using Loop's instant exchange order, they need to contact the Loop support team to make specific adjustments.

    Normally, this should be the account owner (i.e. the merchant) to reach out to Loop for these actions:

    • Switch off the 100% discount for EXC orders Required for Loop config #4

      • Merchants are advised to reach out to Loop support and request the removal of the 100% discount (i.e. the discount code “loop-discount”) from instant exchange orders created by Loop in Shopify. Failure to do so might result in inaccurate revenue and stock data within the ERP.

    • Confirm the tax-inclusion of the EXC orders Required for Loop config #4

      • Merchants needs to ensure that each exchange order includes tax. This will enable DotApparel to accurately post the correct exchange amount to the ERP.

    • Stop creating new Shopify gift cards for store credit Required for Loop config #3

      • This applies if the merchant utilises ERP gift vouchers.

      • Failure to do so may lead to a problem of issuing duplicate store credit for customers, occurring both in ERP and Shopify.

    How to setup Loop Returns

    Pre-requisite to enable Loop Returns

    Responsibility: Merchant or DotApparel w/ permissions

    To enable return creation in AP21, we need to configure a webhook URL in Loop Returns' admin.

    This webhook is triggered when a customer submits a return request (not an exchange). Without this setup, DotApparel won't be able to capture returns from Loop. To proceed, you may need to provide us with login access to your Loop instance so we can configure it for you. Given that Loop requires 2FA right now, sharing login credentials may be challenging. If you are comfortable handling this step yourself, here's the detailed guideline:

    1. Log in to Loop Admin.

    2. Navigate to Settings > Developers

      1. Note: if Developers is not available as a menu item, you can navigate to it directly by adding /developers to the end of the Settings page URL

    3. Find the Webhooks section and select the "Create webhook" button.

    4. In the prompted window, choose "Return created" as the Event and "Return" as the Response. Then, paste the trigger URL of the function webhooks-loopReturnsReturnCreated.

    5. Click "Add" and proceed to click "Activate." Finally, remember to save the webhook settings.

    Configure Instant Exchange Orders in DotApparel

    Responsibility: DotApparel

    When a customer submits a return for instant exchange, Loop will bring in an instant exchange order to Shopify. Usually, the order number begins with "EXC-", although Loop allows customisation based on the merchant's preferences. Once the exchange order is received in Shopify, DotApparel will be configured to send the order to the ERP in the same manner as regular orders.

    Settings > Orders > Integrations & Marketplaces

    Configure Return Vouchers in DotApparel

    Responsibility: DotApparel

    To set up the return voucher, perform the following steps within your DotApparel admin:

    1. Go to Returns > Mappings.

    2. Locate the Return voucher section.

    3. Provide the necessary information in the fields labelled "ERP voucher SKU ID", "ERP voucher type", and "Email subject".

    4. If merchant ID and Card Type are explicitly required, ensure you fill in those details as well.

    Configuration for return voucher

    Return orders that require review

    When a return order requires issuing a gift voucher to the customer, but the return was initiated before the implementation of DotApparel, it will be marked with a "Need review" status. In such cases, DotApparel makes every effort to gather all essential customer and order information from various sources. Therefore, it is advisable for the team to thoroughly review crucial details, including the person's identifier, email address, and gift card amount. Once everything is verified as accurate, manual actions can be taken in the subsequent step.

    Manually triggering voucher posting to ERP

    By default, DotApparel automatically handles gift voucher refunds to customers. However, if a return order requires review, you will need to manually trigger the task to post the voucher to ERP.

    To do this, go to the return order page and click ERP > Upload voucher to ERP. A window will display the task status, and log messages will provide real-time updates on the progress of the voucher posting.

    After the process is finished, you have the option to click on ERP > Download voucher from ERP to examine the appearance of the generated voucher order and save it within the app for future reference.


    Pre-requisites

    • A Shopify store with DotApparel Core installed (includes Apparel21 API credentials)

    • A Firebase project upgraded to the Blaze plan

    • Shopify store access with permission to install a private app on the Shopify store

    Steps for the setup

    Steps
    Responsibility

    Install DotApparel Core: Ensure your Shopify store has DotApparel Core installed.

    DotApparel

    Install The Wishlist App: Follow the installation instructions provided by The Wishlist.

    The Wishlist

    Setup the CSVs: Setup the automated customers.csv and orders.csv exports in Apparel21.

    Apparel21 Consultant

    Configure Settings: Customise DotApparel Core settings to fit your store's needs.

    • Once configured, CSV files are uploaded to the SFTP.

    • DotApparel API processes these files and stores the data in the database (Firebase project within DotApparel Core).

    • The Wishlist accesses this data via the DotApparel APIs.

    DotApparel

    Test End-to-End: Conduct thorough testing (i.e., verify that saved wishlist items are appearing across devices)

    Merchant & The Wishlist

    What is needed to setup The Wishlist?

    • DotApparel API:

      • The Wishlist has access to all DotApparel API endpoints mentioned here.

      • The Wishlist primarily uses POST and GET endpoints for customer and order data.

    • CSV Files:

      • Both the customers.csv and orders.csv are required.

        Note: The CSV templates might be different from DotApparel Customers. Particularly, orders.csv must include online transactions.

      • An Apparel21 Consultant needs access to your Apparel21 instance to configure file exports.

    Sync Frequency for CSV files

    Data sync frequency can vary from daily to every 15 minutes for more real-time updates. This needs to be predetermined and set up by an Apparel21 specialist.

    Costs

    • Subscription Fees: The use of DotApparel API incurs a fixed monthly charge of A$300, automatically billed to the merchant via Stripe.

    • Additional Charges: Our Apparel21 Consultant my charge additional for any changes relating to the Apparel21 CSV exports.

    thewishlist.io

    Returns

    DotApparel collaborates with Loop Returns and AusPost to automatically generate return authorisations in your ERP when customers initiate returns through the returns portal online.

    For Loop Returns, DotApparel Core enables merchants to preserve revenue in ERP through instant exchange orders and transfers refunded store credit to the ERP gift voucher seamlessly. AusPost does not currently have the capability to do instant exchanges or refund into a store credit.

    Choosing between Loop and AusPost

    Merchants can choose between AusPost Returns and Loop Returns, both of which integrate seamlessly with DotApparel Core. Here’s how they differ:

    Loop Returns
    AusPost

    Set up return reason mappings

    DotApparel offers a flexible option to map return reasons between Loop Returns and the ERP, enabling enhanced return reason reporting in the ERP.

    To configure the return reason mappings, follow these steps in your DotApparel admin:

    1. Navigate to Returns > Mappings.

    2. Under the Return Reasons section on the right-hand side, click "Add new return reason".

    3. From the "ERP return reason type" dropdown, select a reason from the provided list.

    4. In the "Source return reason pattern

    The merchant perspective

    Once the integration is fully set up and operational, it will function automatically. However, merchants may still wish to monitor the process and address any potential issues. To do so, they can access the Returns section in the DotApparel app.

    This section serves as a comprehensive list of all returns known to DotApparel, including any return requests that existed before the implementation of DotApparel. This feature ensures smooth tracking of all returns, without any critical ones being overlooked.

    The Returns section has four tabs:

    Returns sections in the app

    • All returns: Each line item represents an individual Return order received from the Loop webhook. By clicking on each line item, merchants can access detailed information about the return order.

    • Return suspended: This tab displays a list view of all Return orders that were not created in the ERP due to API errors.

    • Need review: This tab provides a list view of all Return orders that require issuing a gift voucher to the customer, but the voucher order has not yet been posted to the ERP. This might occur if the return was requested before the implementation of DotApparel. Merchants need to review the voucher information, including person ID, email, and amount, before manually triggering the voucher to the ERP. Merchants may also need to verify if the gift card refund has already been processed during the integration migration.

    Return order statuses

    As return orders progress or change status, DotApparel will attach different tags to each order, indicating its current state. The following tags may be associated with a return order:

    1. Return posted: This tag is applied immediately after a customer submits a return request to Loop, confirming that DotApparel has successfully created a return in the ERP. Applies to Loop, AusPost

    2. Return suspended: This tag indicates that DotApparel encountered an issue and could not create a return in the ERP, often due to API errors or other reasons. Applies to Loop, AusPost

    3. Return received: This tag indicates that the return might have been processed before the implementation of DotApparel, resulting in DotApparel logging the record without taking any further action. Applies to Loop, AusPost


    FAQ

    How can I resolve a return order when it’s labelled as “Return suspended“?

    The "Return Suspended" status mainly occurs when DotApparel encounters issues while attempting to create a return in Apparel21 due to API errors. This situation is rare, and it can generally be easily resolved by retrying the task. However, if you come across this issue, please don't hesitate to contact us for further assistance.

    What errors could lead to a return order showing “Need review“?

    Several factors may result in a return order being marked as "Need Review":

    1. The return order was processed before the implementation of DotApparel21 or was handled by a legacy integration during pre-migration.

    2. Progress encountered an API error during the return process.

    3. The order was previously or partially refunded to a gift voucher, and another gift card refund may be issued from other resources. In this case, DotApparel suspends the progress to avoid the risk of issuing a gift card twice to the customer.

    What happens if the customer selects the option to refund to the original payment method where a gift card was used? Will they receive a new gift voucher? Applies to Loop only.

    Yes, when a customer chooses the "refund to original payment method" option in Loop, but a gift card was used for the original payment, the customer will receive a new gift voucher from ERP. This is necessary since the previously used gift card is no longer available for the refund process.

    [Applicable if tested on staging store] Once approved on a Shopify staging store, front-end to upgrade the production Shopify store to checkout extensibility. ⚠️ The DotApparel team MUST be informed the day & time of the checkout upgrade deployment

    Front-End

    DotApparel team to install the Gift Voucher checkout UI Extension after which point, the ERP Gift Voucher # & 4-digit pin field will now be visible at checkout. Thereby, allowing for the ERP Gift Voucher redemption

    DotApparel

    see below

    The CSV files are used for /customers/search and /orders/transactions/search endpoints as a workaround to get both online and in-store data. Without this, the Apparel21 API only returns online data.

    -

    Support refunding to the original payment method where an Apparel21 gift voucher was used

    ✅

    -

    " input field, enter a relevant keyword that best corresponds to the Loop return reason.

    Return not posted: This tab highlights any Return orders that DotApparel has not processed. These returns typically existed before DotApparel, and no further action is required for DotApparel to create the returns in the ERP.

  • Voucher posted: This tag denotes that DotApparel has successfully created a gift card refund in the ERP for the return order. Applies to Loop

  • Need review: This tag indicates that DotApparel has paused the process of posting a gift voucher in the ERP, requiring the team's review of the voucher request. This situation might arise when the return order was requested before the implementation of DotApparel. Applies to Loop

  • Return to store credit: This tag is applicable when the customer selects "refund to store credit" in Loop while the return is still in progress. No action is needed at this stage, but it serves as a future reference. Applies to Loop

  • Return to original voucher: This tag indicates that the customer selected "refund to original payment method" in Loop, but a gift card was used in the original payment. Consequently, a new gift voucher will be sent to the customer. Similar to "Return to Store Credit," no further action is required during the ongoing return process. Applies to Loop

  • Generate RANs once a customer triggers a return using the online returns portal

    ✅

    ✅

    Assign identifiers to orders within Shopify, reflecting the status of returned item

    ✅

    ✅

    Streamline instant exchange orders, especially in cases requiring refunds in the form of store credit

    ✅

    -

    When a return is sent to ERP, the revenue calculation and stock count are accurately recorded

    ✅

    ✅

    Configure return reasons within the app, ensuring perfect alignment between Returns platform and ERP

    ✅

    ✅

    Store credits (gift vouchers) can be represented as distinct line items on exchange orders in ERP

    Mappings for return reasons

    ✅

    Step By Step Guide (High-Level)

    Integrate with Brauz (app)

    What is Brauz?

    Brauz is a tech platform that specialises in various delivery method solutions, ensuring a top-tier omnichannel retail experience. Within its suite, Brauz offers several products. Merchants have the option to leverage Brauz instead of the Find In-Store and Click & Collect modules within DotApparel Core.

    Store selector with available delivery options on the PDP
    Delivery options: Find In-Store, Click & Collect, and On-Demand Delivery via Uber

    How does it work?

    Brauz requires the latest inventory data. There are 2 ways to achieve this:

    • Approach 1: Shopify Inventory API

      • Ideal For: Stores with multiple locations set up in Shopify.

      • Why? Choose this option if each location in your Shopify store is configured individually. If this setup is not already in place, we strongly recommend configuring each location separately. This allows Brauz to function natively without the need for additional API calls via DotApparel.

    Brauz strongly prefers using the Shopify Inventory API for the latest inventory data because its integration is designed around Shopify's APIs. However, for merchants with only one Shopify location, the best approach is to utilise DotApparel Core.

    Approach 1: Inventory data via Shopify API

    This is the preferred approach. However, each location in Apparel21 must be set up as a location in Shopify. To do this, simply navigate to Settings > Locations in your Shopify admin panel.

    Do we need to set up Local Delivery and Local Pickup natively in Shopify?

    No, the Brauz solution does not rely on Shopify's native local pickup feature. Instead, it is built on top of the regular shipping checkout. Therefore, you can leave the Local Delivery and Local Pickup sections blank.

    Will any fulfilment types change from Apparel21?

    If the fulfilment is enabled in DotApparel, the order status will always be synced from Apparel21 to Shopify.

    Approach 1: Step by step onboarding guide

    Steps
    Responsibility

    Approach 2: Inventory data via DotApparel API

    We recommend that merchants proceed with Approach 1. However, if locations cannot be separated, merchants can opt for Approach 2, which involves using the inventory API endpoint within DotApparel Core.

    Within DotApparel Core, we offer inventory endpoint that allow Brauz to obtain accurate inventory data from your Apparel21 instance.

    Although the Shopify admin has only one location, DotApparel Core supplies up-to-date stock information from multiple retail and warehouse locations within Apparel21. DotApparel Core ensures that Brauz references accurate inventory, despite there being only one Shopify location.

    Which Brauz solutions utilise the inventory API within DotApparel Core?

    Brauz has 6 solutions but only 4 of them utilise DotApparel Core.

    DotApparel Inventory API

    Brauz solutions utilising the inventory endpoint within DotApparel Core

    Merchants can access all of Brauz's solutions with one integration. With DotApparel Core, we can sync the latest inventory data to provide customers with the most convenient delivery method. Here's more info about a few Brauz solutions.

    Click & Collect

    Customers can purchase online and choose timed pick-up in store with unique order rules and logic.

    • Check stock by location

    • Filter by State, Postcode or use location services.

    Find in Store

    Customers can check availability of stock and access fulfilment options across store locations.

    • Dynamically displays live stock levels to customers right from a PDP

    Reserve In-Store

    Customers can reserve stock in-store for 12 - 48 hours (length of time customisable) so items are ready in-store on arrival.

    • Reserves do not deduct inventory but managed via inventory buffers

    • Customisable email/SMS confirmation and reminder

    On-Demand Delivery

    Customers can purchase products online and have them delivered in under 2 hours.

    • Fastest delivery method from order to fulfilment

    • Items are delivered from nearby stores

    Approach 2: Step by step onboarding guide

    Steps
    Responsibility

    Shopify checkout extension for Brauz

    Brauz offers a Shopify Checkout Extension exclusively for Shopify Plus merchants who have upgraded to checkout extensibility. This extension simplifies front-end implementation and automatically presents all available delivery options at checkout based on your Brauz configuration.

    Auto-Refunds

    DotApparel has introduced a new feature that enables online refunds that were paid via Shopify Payments and other native payment gateways supported by Shopify. With this feature, merchants can easily sync Apparel21 refunds back to the original orders in Shopify.

    This guide will walk you through the steps to initiate transaction refunds within DotApparel.

    The benefit of the feature

    The main advantage of this feature is the streamlined refund process for payment refunds, here's how it primarily benefits merchants:

    • Refund Shopify order from AP21: Merchants can handle returns within AP21 without any extra steps. There is no need to handle refunds separately in both Apparel21 and Shopify, instead, they can process refunds exclusively in Apparel21, saving time and effort.

    • Refund Shopify order from POS (in-store): When a refund is processed in Apparel21, the payment status of the corresponding order in Shopify will be automatically updated. This sync ensures that the payment status is accurate and up to date in both systems without manual intervention. (this requires a refunds.csv for in-store refunds only) Note: The merchant will need to configure the refund.csv files.

    What does Auto-refunds do?

    Feature
    Possible?

    How to set up Auto-Refunds

    Staging Environment

    Merchant to provide:

    DotApparel to configure:

    Merchant to provide:

    DotApparel to verify:

    Merchant to:

    If setup is correct, refund will process automatically in the staging Shopify store

    Live Environment

    Configuration steps for DotApparel once prerequisites are met

    Responsibility: DotApparel

    Step 1: Set up a new return reason in Apparel 21.

    This step requires the merchant to set up the new return reason on their end. The new return reason can be anything such as Shopify Refund but should be a unique reason to avoid potential coupling issues with existing ones.

    After completing the setup for return reasons, open the DotApparel Core app and navigate to the settings page. Find the Refund section and select the newly created return reasons for Auto-Refunds.

    You can also configure multiple return reasons.

    Step 2: (Optional) Set up freight SKU IDX

    The "Freight SKU IDX" field is now required in the settings. This value is used to determine if a returned item corresponds to a shipping fee and whether it can be refunded.

    Step 3: (Optional) Set up refund payment origin

    The "Refund Payment Origin" field is used to help with refunding shipping fees for cancelled orders.

    Step 4: (Optional) Configure "virtual partial refund SKU IDX"

    The "Virtual Partial Refund SKU IDX" field enables merchants to configure virtual products in AP21 specifically for partial refunds. This feature allows merchants to create a new returned item and immediately specify a total partial refund amount without the need to modify existing order items in AP21, thereby enhancing flexibility in handling partial refunds.

    Step 5: Activate the feature

    Make sure to enable the "Active Auto-Refund in Shopify" option.

    Step 6: Save your changes

    After configuring the settings, click the "Update settings" button to save the changes and complete the setup.

    Step 7: Enable fulfilment automation in DotApparel.

    1. Within the settings page, navigate to the automation section.

    2. Find the option to enable fulfilment automation and activate it.

    3. Save the changes.

    Step 8: Configure payment gateways

    By default, Auto-refunds only handles orders that are paid through "Shopify payment". However, an enhancement now allows users to customise this rule. Users can navigate to DotApparel's settings, locate the payment gateways section, and enable the "Allow Auto-Refund" checkbox for third-party gateways like Afterpay.

    How Auto-Refund works (detailed)

    Every Auto-Refund workflow consists of 3 main steps:

    Step 1: The merchant returns one or multiple items in Apparel21

    After an item is refunded in Apparel21, it must be assigned a specific return reason designed for auto-refunds. In DotApparel, a pre-defined return reason ID is established to identify eligible items for auto-refunds. To trigger the auto-refund process in Shopify, the following conditions must be met:

    1. The Apparel21 OrderDetail (line item) status should be marked as "Returned".

    2. The return reason ID assigned to the refunded item in Apparel21 matches the pre-defined return reason ID in DotApparel.

    Step 2: DotApparel downloads the updated orders from Appare21

    DotApparel is running an automation task to regularly download the most recently updated orders from Apparel21. By default, this task occurs once per hour, ensuring the system stays updated with the latest order information. However, if the Apparel21 Retail API version is 2022.3 or newer, the download task is more frequent, running every 5 minutes for faster synchronisation.

    Once the orders are downloaded into DotApparel, the system proceeds to evaluate each order's eligibility for automatic refunds in Shopify. DotApparel checks various criteria to determine if an order can be automatically refunded using the payment gateway. If an order meets the necessary conditions for automatic refunding, DotApparel lists the refund requests within the app for merchant review and processing.

    Step 3: The refunded orders are processed in Shopify

    Once an order is processed in DotApparel, the corresponding items are immediately refunded in Shopify. DotApparel communicates with Shopify's refund functionality, initiating the refund process for specific items.

    Upon successful refund in Shopify, the "refund notes" section within the order will be updated with a reference ID. The reference ID format is as follows: "Reason: '[AP21 Refund] - ref: 4a00e8e1-cd94-46f8-9090-f5d9f9e4107b'". This reference ID serves as a unique identifier and enables merchants to easily locate and view the AP21 refund details within the DotApparel app.

    In the event of any error during the auto-refund process, DotApparel promptly displays an error message. The order associated with the failed refund is labelled as "Failed to refund" within DotApparel, indicating that the refund was not successful. Merchants can review the specific error message in DotApparel to identify the cause of the failed refund and take appropriate action, such as manual refund processing in Shopify if necessary.

    Limitations

    This section highlights the limitations of the auto-refund feature in DotApparel and its integration with Shopify. It covers scenarios where manual refunds in Shopify, cancelled AP21 orders, and gift card payments are not supported.

    1. If an order has already been refunded manually in Shopify, the auto-refund process in DotApparel will be halted to prevent duplicate refunds. Merchants are required to manually process the refund in Shopify for such cases.

    2. By default, if an order is cancelled in AP21, DotApparel will not automatically process a refund in Shopify. If you require automatic refunds for these types of orders in Shopify, please contact our support team for assistance.

    3. The feature does not support refunds for orders paid with gift cards. In cases where an order is paid using a combination of gift card and normal payment, only the portion paid with the payment can be refunded through Shopify. Merchants need to process any gift card refunds separately, outside the auto-refund process.

    Email Examples

    With more data, you can unlock a wealth of email campaigns and workflows. Create dynamic email workflows by harnessing the rich data available in the standard CSV Templates. Then, trigger events based on customer profile updates and purchasing behaviour.

    Keep reading to explore a range of email campaign possibilities. The potential is limitless!

    • Welcome Series:

      • Email 1: Welcome to [Brand Name]!

        • Send a welcome email to new customers when they join your newsletter. Mention the store name if they’ve first signed up from a particular store.

      • Email 2: Exclusive Offers Just for You

        • Share exclusive discounts or offers to encourage the first purchase.

      • Email 3: Get to Know Us Better

        • Share your brand story and values to build a connection.

      • Email 4: Recommended Products

        • Based on their first purchase or preferences, suggest related products.

        • Relevant Fields: FIRSTNAME, STORE_NAME, STYLE_CODE, STYLE_NAME

    • How was your visit today?

      • Email: How was your visit today?

        • Trigger an email each time a customer makes an in-store purchase. It's an opportunity to collect feedback on their in-store experience.

    • Store-Specific VIP Events:

      • Email: Exclusive VIP Event at [Store Name]!

        • Trigger emails when there is a VIP event (stylist events, store anniversaries, product launches, workshops, etc.) at a specific store. It can include details about the event, and personalise the message with the store's name.

    • Happy First Anniversary:

      • Email: Happy First Anniversary with Us!

        • Send customers a cel the first anniversary of their registration with your store. It's a way to celebrate their loyalty and thank them for being a part of your community.

    • Purchase Confirmation Email:

      • Email: Thank You for Your Purchase!

        • Send this email immediately after an in-store purchase to confirm the transaction, provide a summary of purchased items, and express gratitude for their visit.

    • Cross-Store Recommendations:

      • Email: Discover Our Other Stores

        • If you have multiple store locations, encourage customers to explore other stores they haven't visited yet. Also, recommend products based on their past purchases.

    • Referral Program:

      • Email: Refer a Friend, Get Discounts

        • Encourage in-store customers to refer friends and family to your store by offering them discounts or incentives.

    • Personalised Product Recommendations:

      • Email: Complete Your Look

        • Send personalised product recommendations based on their purchase history or browsing behaviour.

    • Birthday Emails:

      • Email: Happy Birthday, [Customer's Name]!

        • Send a birthday email with a special discount or gift.

    • Customer Feedback and Reviews:

      • Email: Share Your Feedback

        • Encourage customers to leave reviews and feedback after a purchase.

    • Cross-Sell and Upsell Campaigns:

      • Email: Complete Your Look

        • Suggest complementary products to what they've already bought.

    • Flash Sales and Limited-Time Offers:

      • Email: Hurry! Limited-Time Sale

        • Alert customers about upcoming or ongoing flash sales. Get granular by promoting specific style that are available in their size.

    • Replenishment Reminders:

      • Email: Time to Restock

        • Send reminders to repurchase products.

    • Win-Back Campaigns:

      • Email: We Miss You

        • Send re-engagement emails to inactive customers with special offers.

    • Review Request for Recent Purchases:

      • Email: Share Your Thoughts on [Product Name]

        • Encourage customers to leave reviews for products they recently purchased. Get more info from .

    • Segmented Promotions:

      • Email: Special Sale Just for You!

        • Create segmented holiday promotions based on upcoming holidays and customer preferences.

    • High-Value Customer Email:

      • Email: Exclusive VIP Benefits for You!

        • Offer to customers who have demonstrated high-value behavior, such as frequent purchases or a high order value. Offer them exclusive benefits, early access to sales, or personalised recommendations based on their purchase history.

    • VIP Loyalty Program Updates:

      • Email: Your VIP Status and Rewards Update

        • Keep VIP customers informed about their loyalty program status, rewards, and exclusive benefits.

    If you require supplementary Loyalty & Rewards data, including TIER_NAME, POINTS_REMAINING, POINTS_TOTAL, and more, this data is beyond the scope of our standard template and will require further customisation. Any customisations can be done by an AP21 specialist.

    Email Workflows

    • Birthday: Triggered on a customer's birthday.

    • Loyalty Points Update: Triggered when a customer's loyalty points change.

    • Product Purchase: Triggered when a customer purchases a specific product.

    Local Pickup/Click & Collect

    The integration of Shopify Local Pickup and DotApparel enables merchants to offer Click & Collect as a delivery option while seamlessly syncing the orders with their ERP backend.

    With the integration in place, merchants can easily set up multiple pickup locations in Shopify and offer pickup as an option during checkout.

    Behind the scenes, DotApparel integrates with Shopify to feed in-store stock into Shopify locations using the location mappings set up in the app. DotApparel also sends the PickupStoreId for each mapped location so that the ERP can process the orders as Click and Collect.

    Relevant Fields: FIRSTNAME, STORE_NAME, SALE_DATE
    Relevant Fields: FIRSTNAME, STORE_NAME, SALE_DATE, CITY, POSTCODE
    Relevant Fields: FIRSTNAME, CREATED_DATE, STORE_NAME
    Relevant Fields: FIRSTNAME, STORE_NAME, SALE_DATE, TRANSACTION_ID, TRANSACTION_NUMBER
    Relevant Fields: FIRSTNAME, STYLE_CODE, CITY, POSTCODE
    Relevant Fields: FIRSTNAME
    Relevant Fields: FIRSTNAME, STYLE_CODE
    Relevant Fields: FIRSTNAME, DOB
    Relevant Fields: FIRSTNAME
    Email: Upgrade Your [Product]
    • Offer an upgrade or premium version of a product they purchased.

    • Relevant Fields: FIRSTNAME, STYLE_CODE

    Relevant Fields: FIRSTNAME, SIZE_CODE
    Relevant Fields:
    FIRSTNAME
    ,
    SKUIDX
    Relevant Fields:
    FIRSTNAME
    ,
    LAST_UPDATED
    Relevant Fields: FIRSTNAME, SALE_DATE, STYLE_NAME, COLOUR_NAME
    Relevant Fields: FIRSTNAME, CATEGORIES, COLOUR_NAME, SIZE_CODE
    Relevant Fields: FIRSTNAME, VALUE, SALE_DATE
    Relevant Fields: FIRSTNAME, LOYALTY_CODE, LOYALTY_NAME
    Inactivity
    : Triggered when a customer hasn't engaged with emails for a certain period.
  • New Customer: Triggered when a new customer is added in AP21 / Klaviyo.

  • First Purchase: Triggered when a customer makes their first purchase.

  • Klaviyo Reviews

    Exchange with different products requiring more payment

    ❌

    exchanges with different products requiring a monetary refund

    ❌

    Freight SKU Index

  • Refund online orders via Apparel21 Mail Order (Head Office)

    ✅

    Refund online orders via Apparel21 POS (In-store)

    ✅ Note: The requires a refunds.csv

    Refund should be deducted from Shopify order

    ✅

    Capture the return reason

    ✅

    Ability to refund online orders back to the original payment method. The module can process refunds for all payment methods supported by Shopify:

    1. PayPal

    2. AfterPay

    3. Shopify, ShopPay

    4. Apple Pay

    5. Google Pay

    ✅ Note: The feature does not support Refunds for orders paid with gift cards

    Exchange of size or colour

    ❌

    See more info here
    View this step in our documentation →
    Auto-Refunds configuration
    Approach 2: Inventory API within DotApparel Core
    • Ideal For: Stores with a single location in Shopify. Merchants must have DotApparel Core enabled to utilise this feature.

    • Why? Use this option if all locations within Apparel21 are consolidated into one location in Shopify.

    [only applies if custom C&C and Find In-Store is already enabled] In the app, remove freight options relating to custom Click & Collect and/or Find In-Store

    DotApparel

    Script is pushed from staging to production

    Brauz

    Stock API post and pull
  • Customisable email/SMS confirmation and reminder

  • 58% conversion rate

    Live tracking and updates via SMS and email

    Merchants can choose from the following carriers for delivery:

    • Uber: Covers a 15km radius

    • Rendr: Covers a 50km radius

    [only applies if custom C&C and Find In-Store is already enabled] In the app, remove freight options relating to custom Click & Collect and/or Find In-Store

    DotApparel

    Script is pushed from staging to production

    Brauz

    Alignment meeting

    Brauz, DotApparel

    Training schedule with Retail Ops and Staff

    Brauz

    Code pack handed off for placement on staging

    Brauz

    Brauz makes requested change to function or UI design

    Brauz

    Set up each location in Shopify admin panel

    Merchant

    Retailer and Brauz runs end to end test

    Brauz, Merchant

    Click & Collect

    Yes

    Find In-Store

    Yes

    Reserve In-Store

    Yes

    On-Demand Delivery

    Yes

    Retail Appointments

    No

    Commerce Anywhere

    No

    Alignment meeting

    Brauz, DotApparel

    Code pack built to retailer requirements utilising DotApparel Core

    Brauz, DotApparel

    Training schedule with Retail Ops and Staff

    Brauz

    Code pack handed off for placement on staging

    Brauz

    Brauz makes requested change to function or UI design

    Brauz

    Retailer and Brauz runs end to end test

    Brauz, Merchant

    If proceeding with Approach 1, you can leave these sections blank but make sure you have each location setup
    Approach 2 is needed if the locations cannot be separate in Shopify
    At checkout, customers can select their preferred delivery method based on your Brauz setup
    Step By Step Guide (High-Level)
    Steps
    Responsibility

    Check your current stock formula config for the ERP

    Merchant

    Update the ERP stock formula config (if applicable)

    ERP

    Merchant

    Merchant

    (only applicable for the "combined" approach)

    Merchant

    ERP Stock Formula

    There are 2 types of configurations:

    • Combined: The ERP config for "Online Store" combines total available stock from all locations. It includes warehouse and in-store stock.

    • Separate: The ERP config keep inventory levels for warehouse and in-store stock separate.

      Regardless of a "combined" or "separate", every location will need to be set up individually as per screenshot above in DotApparel.

    Choosing Your ERP Stock Formula: Combined vs. Separate

    The merchant holds the decision to choose the most suitable approach. Upon reaching a decision, ERP will configure the rerouting logic and stock calculation for each specific location in the ERP. Before deciding, it is important to consider the limitations.

    • Limitations of the Combined Approach:

      • Challenges in Offering Same Day Delivery, International Shipping, and Local Pickup Simultaneously

        • Reduced Control Over Product/Order Locations

      • Same Day Delivery Challenges

        • Unpredictable Bouncing to Different Stores

        • Lack of Control Over Fulfillment Processes

      • Common Issue with Combined Stock Formula

        • Inability to Exclude Ship From Store (SFS) Locations

        • Difficulty in Supporting International Orders

    If you are not offering Same Day Delivery, International Shipping, and Local Pickup simultaneously then it is fine to proceed with the Combined approach.

    Do you need to update your ERP stock formula from "combined" to "separate"?

    ERP support will need to action this. Here's a canned template we prepared earlier:

    Hi ERP Team,

    We're requesting an update to our stock formula so that the "Online Store" no longer combines the total stock for warehouse and store locations. This update will support our move towards Native Locations in Shopify.

    To clarify, please update the stock formula for "Online Store" so that it only includes warehouse stock.

    To ensure smooth implementation, let's coordinate the action on an agreed-upon day and time in collaboration with the DotApparel team. Can you confirm your availability for this task?

    Once confirmed, we'll schedule the adjustment, ensuring all parties are ready for the necessary changes.

    Regards,

    Merchant Name

    Do you need to update your ERP stock formula for "combined" location?

    ERP support will need to action this. A common scenario is when a merchant needs to add or remove a physical store from the "combined" stock pool. Here's a canned template we prepared earlier:

    Hi ERP Team,

    We would like to request an update to our stock formula to remove the Chadstone store from the "Online Store" pool, as this location is no longer in operation.

    To clarify, please adjust the formula so that it includes the warehouse and all other retail stores except the Chadstone store.

    Kindly let us know once this has been actioned.

    Regards,

    Merchant Name

    Configuring Locations & Local Pickup in Shopify

    Here Are The Steps If Your AP21 Inventory Is "Separate"

    Go to Shopify and enter all the shipping origins. It should include the warehouse and the stores that are available for local pick-up.

    Shopify: Settings > Shipping and delivery > General shipping rates > Shipping origins

    For each location that can fulfil online orders, make sure to tick this checkbox.

    Shopify: Settings > Locations > Fulfillment details

    Ensure that this checkbox is ticked for only the individual store(s) that allow for Click & Collect.

    Shopify: Settings > Shipping and delivery > Local pick up for [store name]

    Double-check the local pickup settings in Shopify.

    Shopify: Settings > Shipping and delivery > Local pickup > Click "Manage"

    Here Are The Steps If Your ERP Inventory Is "Combined"

    We recommend using the "Locations that fulfill pickup orders only" option for local pickup orders in Shopify. This option ensures that the inventory at a location is only available for pickup orders, and prevents delivery orders from being allocated to this location. Always check that location is enabled for fulfil online orders from this location.

    Shopify: Settings > Shipping and delivyer . Shipping origins

    Configuring Locations & Local Pickup in DotApparel

    Setting up location mappings to upload in-store inventory to Shopify locations

    Location mappings allow DotApparel to link ERP Stores to the corresponding locations in Shopify. This enables DotApparel to sync inventory levels from AP21 to Shopify locations.

    1. Refresh locations to download all locations from Shopify and all stores from the ERP.

    2. Add the ERP store to a Shopify location.

    Once Shopify is set up, the next step is up for the DotApparel team to setup the locations in the DotApparel Core app (this involves configuring store mappings one-by-one).

    Configuring Pickup Store mappings to send Click and Collect orders to ERP

    Pickup Store ID mappings enable DotApparel to pass a PickupStoreID to the ERP for Local Pickup orders. We can easily map a Pickup Store ID to a Shopify location like the shipping option patterns for shipping.

    1. Click Add new shipping method button in the Settings > Shipping Methods section

    2. Enter the required fields in the form Delivery method type: Select "Local Pickup" from the dropdown list. Pickup Store ID: Can be found from Retail API /Stores endpoint. Shopify title pattern: This should be the location name in Shopify. The preview name can be found in Shopify Settings > Shipping and Delivery> Local Pickup section.

    Click & Collect will appear as a delivery option and the list of "Pickup locations" for the product(s) will be displayed at checkout.
    Shopify: This checkbox is enabled for each individual store in Shopify that allows for Click & Collect
    DotApparel: For a & Collect order, you can Click see the PickupStoreId for the mapped Shopify location and in doing so, the ERP can process the orders as Click and Collect.

    FAQs

    This page contains answers to common questions or issues that merchants may have. This page is a helpful resource for anyone looking for quick answers. If you can't find the information you're looking for, please don't hesitate to contact us through the in-app support widget within the app.

    Common Order Sync Issues

    Apparel21 returned an error "xml string could not be parsed"

    Why it happens: This is a server issue on the Apparel21 side. Their system returned an unreadable response.

    How to fix it: Once the Apparel21 server is back up, the order will sync automatically. DotApparel monitors your syncs and can confirm once it’s resolved or you can reach out directly to Apparel21.

    Who can fix this: Apparel21 Support

    Apparel21 returned error "The person already exists" error code 5215

    Why it happens: DotApparel tries to create a new customer in Apparel21, but Apparel21 rejects it because the person already exists but isn’t marked as a “WEB customer.”

    How to fix it: In Apparel21, update the existing customer record to set them as a “WEB customer”. No need to delete any customer data. If unsure, raise a support ticket and DotApparel can help.

    Who can fix this: Merchant

    Apparel21 returned error "Email already exists for another person" error code 5006

    Why it happens: There are duplicate customer records in Apparel21 using the same email address.

    How to fix it: Check for and remove duplicates in Apparel21 so only one customer record uses that email. DotApparel can assist if needed, raise a support ticket.

    Who can fix this: Merchant

    Apparel21 returned error "Size of field Firstname, 38 is too long. Maximum length is 20" with code 5014

    Why it happens: AP21 only accepts names with up to 20 characters.

    How to fix it: Shorten the customer’s first and/or last name in Shopify, then re-upload the order via DotApparel.

    Who can fix this: Merchant

    Apparel21 returned error "Size of field Address Line 1, 53 is too long. Maximum length is 50" with code 5014

    Why it happens: AP21 has a 50-character limit for address fields.

    How to fix it:

    1. Go to the DotApparel App and search for the order

    2. Click on the Order list item

    3. Hover over the affected line items and editing the address/name accordingly:

    billingAddress shippingAddress

    Who can fix this: Merchant

    Apparel21 returned error "Server did not respond within the specified timeout interval: Server did not respond within the specified timeout interval " with code 5015

    Why it happens: AP21’s server was temporarily unreachable when DotApparel tried to send the order.

    How to fix it: Wait for the AP21 server to come back online, then re-upload the order via DotApparel.

    Who can fix this: Apparel21 Support

    There is more than one Apparel21 person with the email attached to this order

    Why it happens: There are multiple AP21 customer records with the same email. DotApparel doesn’t know which one to use.

    This is because:

    • All orders in Apparel21 have to be attached to a person.

    • When there is more than one person in Apparel21 with the same email address, we are unable to find the correct customer to attach the order.

    • The merchant should delete one of the duplicate persons such that there is only one person with the email address, then retry this order.

    How to fix it: Delete the duplicate customers in Apparel21, leaving only one with that email. Then retry the sync.

    Who can fix this: Merchant

    Sku id could not be parsed from XXXXXXXXXX

    Why it happens: The customer may have purchased a Shopify product that has not been mapped or incorrectly with Apparel21.

    How to fix it:

    The merchant will need to map the item with Apparel21:

    1. Look into AP21 and make sure the product is available to the Apparel21 Retail API

    2. Download the latest products from Apparel21

    3. Run “upload product to Shopify“

    After that, the merchant can simply re-upload the order to Apparel21. If everything is going correctly, the order will be pushed successfully.

    Who can fix this: Merchant

    There is no configured Apparel21 payment gateway for the Shopify gateway "gift_card"

    Why it happens: The customer used a Shopify gift card, but the gift card payment gateway isn’t mapped to Apparel21.

    1. First we need to confirm if the merchant is using Apparel21 gift voucher

    2. If yes, this means the customer might have accidentally used a "native" Shopify gift card. In this case, DotApparel team need to temporarily add the "gift_card" gateway so the order can be pushed through, then we will need to further investigate the reason. The temporary gift_card gateway does not need to be set up with a dummy sku. DotApparel team simply needs to add gift card in the payment gateway mappings.

    3. If the merchant indeed is using Shopify gift card, then we need to set up the "gift_card" payment gateway, and also the dummy sku idx

    How to fix it: Raise a support ticket with DotApparel. We’ll investigate the error and if required, map the gift card payment gateway sync successfully moving forward.

    Who can fix this: DotApparel Support

    Incorrect validationID

    Why it happens: The voucher used during checkout needs a new validation ID before Apparel21 can accept it.

    How to fix it:

    1. First we need to ask the merchant for the voucher pin and voucher number

    2. Once received from merchant, go to postman and use the Validate Gift Voucher call to create a new validation id.

    3. Alternatively, for step 2, you can go to the storefront and add any product to cart, apply the pin and voucher number to generate a new validation id.

    4. Proceed to push the order through to AP21

    Who can fix this: DotApparel Support

    Cannot map line item without a sku ORDER SYNCAP21

    Why it happens: The product in the order doesn’t have an SKU assigned in Shopify.

    How to fix it:

    Similar to the “sku id could not be parsed from” error. The customer purchased an item that does not have an SKU number in Shopify. The merchant will need to map the item with Apparel21:

    1. Update the SKU number in Shopify

    2. Look into AP21 and make sure the product is available to the AP21 Retail API

    3. Download the latest products from AP21

    4. Run “upload product to Shopify“

    Since Shopify does not allow editing SKU in order line items, the merchant may have to refund and re-add the line item to make sure the SKU is populated in Shopify before trying re-uploading the order to AP21.

    Who can fix this: Merchant

    Click and collect order must contain either Store ID or Store Number attribute

    Why it happens: The order is missing the required store ID info or store number in Shopify note_attributes.

    How to fix it: This is usually a front-end issue. Check that your checkout is correctly passing Store ID or Store Number.

    Who can fix this: Merchant or your front-end developer

    The following errors can be seen from the dashboard or logs. Normally, these errors are not as critical as the System Alerts and they may disappear themselves when data is changed in your ERP.

    Order status not updated or syncs not running after a period of API server being down

    Why it happens: When the ERP server goes down, it can cause a traffic jam of tasks in the queue. This blocks new updates or order syncs from running properly.

    How to fix it: This needs to be cleared by the DotApparel team to we’ll purge the task queue to get everything flowing again.

    Who can fix this: DotApparel Support

    Order didn’t sync because it was placed in a foreign currency

    Why it happens: Shopify stores both the original currency used by the customer (presentmentMoney) and your store’s base currency (shopMoney). If they don’t match, the order may fail to sync.

    How to fix it: This update needs to be made by the DotApparel. We’ll update the order data to match and retry the sync.

    Who can fix this: DotApparel Support

    Tasks failed with a “DEADLINE_EXCEEDED” error

    Why it happens: This means something in the system took too long to respond and timed out, usually due to a temporary issue in the background tasks (called functions).

    How to fix it: DotApparel Support needs to redeploy these background functions. Then, re-run the affected tasks.

    Who can fix this: DotApparel Support

    Common Product Sync Issue

    Shopify upload errors: colour with id XXXX could not be found in style.remoteData

    Why it happens: This means the colour (e.g. White) is no longer visible to the Retail API, so it can't be uploaded to Shopify. This can happen if the product is archived, unpublished, or excluded from the Retail API filter.

    How to fix it:

    • If the colour should still be purchasable online, enable it for WEB in Apparel21.

    • If the colour has sold out or isn’t meant to be live yet, you can safely ignore the error.

    Who can fix this: Merchant

    Debugging missing styles

    Why it happens: Products must pass a Retail API filter in Apparel21 to be visible to DotApparel. If a style isn’t showing in Shopify or the DotApparel app, it’s likely hidden due to this filter, typically based on tags like “web active”, an RRP value, or other custom criteria.

    How to fix it:

    • Check your Retail API filter settings in Apparel21.

    • Ensure the style meets all visibility conditions (e.g. web-active, RRP added).

    • Then run the product download task in DotApparel, or wait for the daily sync.

    Who can fix this: Merchant

    Common Fraud Workflow Issues

    How to prevent fraud orders from flowing to Apparel21

    Why it happens: By default, all orders sync through DotApparel regardless of fraud status, unless a Fraud Workflow is applied.

    How to fix it: Set up the Fraud Workflow inside the app to block or delay syncing of orders flagged by Shopify as fraudulent.

    Read more about the Fraud Workflow:

    Who can fix this: Merchant

    Klarna’s orders are missing the capturing payment by Shopify flow

    Why it happens: If using the to trigger payment capture for Klarna (set to manual), Shopify may not send the correct payment gateway in real-time webhooks (e.g. for webhooks used by apps like ). This can result in the gateway being returned as null.

    How to fix it:

    • Add a 30-minute delay in your Shopify Flow after checking if the payment method is Klarna.

    • This delay ensures Shopify has finalised the payment data before Flow continues.

    Resource link:

    Who can fix this: Merchant

    Remove active status from voucher at checkout once order has been pushed through

    Fraud Workflow
    Shopify Flow app
    Signifyd
    Klarna Docs - Order Management

    Upgrade to checkout extensibility

    Front-End

    Configure locations and local pickup in DotApparel

    DotApparel

    Front-end implementation (ref: Developer Guide)

    Front-End

    Set up Shopify locations
    Set up pickup for online orders
    Setup locations that fulfill pickup orders only
    warning

    Shopify Locations, DotApparel Locations and Inventory Buffers

    Definitions

    Shopify Locations

    Purpose: This is where Shopify orders can be fulfilled from

  • Where to find: Shopify Admin > Settings > Locations

  • Who should set this up? Merchant

  • Capabilities:

    • Fulfilment Settings: You can determine whether a Shopify location allows for local pick-up and/or fulfil online orders from this location. Make sure you enable the correct checkboxes in Shopify because based on these settings, the correct shipping method will automatically display at the checkout experience. So, if an item available for Click & Collect at Shopify Store A is selected, the customer will see the “Pick-up” option at checkout.

    • Flexible Setup:

      • Merchants can control the Shopify location setup in case they want to temporarily disable Click & Collect during peak trades like Christmas and BFCM. Then after, merchants can reenable for local pick-up as they wish.

      • Merchant can control whether specific Shopify stores allows for local pick-up. For example, Store A allows for Click & Collect, Store B is exclusively in-store.

  • How many Shopify locations can I have?

    • Shopify Starter & Basic Plan: Up to 4 active locations

    • Shopify Plan: Up to 5 active locations

    • Advanced Plan: Up to 8 active locations

    • Shopify Plus: Up to 1,000 active locations

  • On the settings page, you will find Shopify locations. In some cases, merchants may only have one location configured in Shopify, but in most cases (especially for brands with a large retail footprint), there will be many other locations.

    ERP Locations

    • Purpose: This is where orders across your enter business can be fulfilled from. That can include retail stores, not just locations exclusive for online fulfilment.

    • Where to find: ERP admin

    • Who should set this up? Merchant and if assistance is required, ERP support

    • Capabilities:

      • Each ERP location and the ERP stock formula within that can be setup based on your business needs.

    DotApparel Core Locations

    • Purpose: Configure ERP location and associate them with the respective Shopify location. These locations will relate to online fulfilment.

    • Where to find: Shopify Admin > DotApparel Core App > Settings > Locations

    • Who should set this up? DotApparel Team or Merchant

    • Capabilities:

      • Every DotApparel location can be setup based on your business needs. Read more below.

    On the settings page, you will find Shopify locations. In some cases, merchants may only have one location configured in Shopify, but in most cases (especially for brands with a large retail footprint), there will be many other locations.

    Set inventory buffers in DotApparel

    For each store, you can set a buffer that will deduct that amount from the store count. Buffers are used for physical locations or mixed-use warehouses to avoid overselling items when there are only a few left in stock.

    Any active inventory buffer will be applied to reflect the final inventory count for that location.

    Add a location in DotApparel

    To add more stores, click on the Select a store dropdown, then click Add

    The dropdown will list all of the stores that are already set up in Shopify.

    Every store will need to be set up as a Shopify Location before it can be mapped in DotApparel. Only then, will their inventory values be synced to the ERP.

    Store inventory (applies to the Find In Store feature)

    For merchants with Find In Store enabled, customers can easily view whether a product is in stock, by simply clicking on the Find In Store button on the PDP.


    Configure a DotApparel Location

    Associate these together: ERP Location(s) ↔ Shopify Location

    A Shopify location must be configured with a minimum of 1x ERP Location (1:1 relationship). Depending on your requirements, you can connect a Shopify location to multiple ERP locations (1:many relationship).

    Configure an ERP Location

    This is a pre-requisite before DotApparel can associate an ERP Location(s) with a Shopify Location

    Merchants are responsible for maintaining accurate ERP locations and ensuring that their stock formulas include the correct ERP locations (e.g., stores and/or warehouses).

    If you need to make any adjustments to your ERP Location(s), you can request changes from ERP support.


    Questions to ask before setting up locations

    Based on your answers, our team can lead you to the right direction.


    Here are all the possible location setups

    Usually a brand will have a warehouse which is their default Shopify location. Some brands have a warehouse and store(s) so their DotApparel Locations will be configured accordingly.

    If you’re using Brauz or native Click & Collect, you must have separate ERP locations which means that each Shopify store must be connected to a single ERP location.

    STAPLE CLOTHING

    Summary: One Shopify Location setup is 1:1 exclusively for the warehouse.

    Why? This brand does not fulfill any online orders via a store, nor does it have any physical stores; it operates purely online.

    DotApparel Setup:

    • Shopify Location: Warehouse

      • Warehouse

    Compatible with:

    Only possible if the Warehouse ERP location allows for local pick-up.

    ❗️Native Click & Collect

    ❗️Brauz

    Reference:

    HENRY CLOTHING

    Summary: One Shopify Location setup with a 1:many that it includes the warehouse and selected retail stores.

    Why? This setup allows the brand to fulfil online orders using inventory from both the warehouse and specific retail stores. The ERP stock pool combines stock levels from these various locations, creating a unified inventory source for online.

    DotApparel Setup:

    • Shopify Location: Online Store

      • Online Store

      • ERP Stock Formula: Warehouse + retail store(s)

    Compatible with:

    A Shopify Location with a combined virtual stock pool cannot allow for local pick-up.

    ❌ Native Click & Collect

    ❌ Brauz

    Keep your ERP Stock Formula up-to-date: It is the merchant’s responsibility to ensure that the “Online Store” ERP stock pool remains accurate. This includes coordinating with ERP support to add or remove retail locations as needed, ensuring the correct inventory levels sync through to the Shopify location for online fulfilment. Check out our canned templates.

    Reference:

    ESTHER CLOTHING

    Summary: Each Shopify Location setup is 1:1, exclusively a store and warehouse.

    Why? This brand fulfils online orders through both a store and a warehouse to ensure efficient order processing and delivery options.

    DotApparel Setup:

    • Shopify Location: Store A

      • ERP Store A

    • Shopify Location: Store B

      • ERP Store B

    • Shopify Location: Store C

      • ERP Store C

    • Shopify Location: Warehouse

      • Warehouse

    Compatible with:

    ✅ Native Click & Collect

    ✅ Brauz

    This is possible as each Shopify Location is configured to each ERP location.

    Reference:

    Every Shopify Location is configured indovidually to the respective ERP Location

    BASIC CLOTHING

    Summary: One Shopify Location setup is 1:many relationship. The other Shopify Location setup is 1:1 exclusively warehouse

    Why? This setup allows the brand to manage online orders through multiple stores while having a dedicated warehouse for fulfilment.

    DotApparel Setup:

    • Shopify Location: Store A, B, C

      • ERP Store A

      • ERP Store B

      • ERP Store C

    • Shopify Location: Warehouse

      • Warehouse

    Compatible with:

    ❌ Native Click & Collect

    ❌ Brauz

    Not compatible as a Shopify Location with a combined virtual stock pool cannot allow for local pick-up. Warehouse pick-up is only possible if that Shopify Location is setup accordingly.

    Reference:

    JENNY CLOTHING

    Summary: Shopify Location setup is 1:many relationshpi that includes each ERP store and warehouse

    Why? This brand uses a consolidated approach to streamline order fulfillment across multiple stores and a warehouse, providing flexibility in shipping options.

    • Shopify Location: Store A, B, C, Warehouse

      • ERP Store A

      • ERP Store B

      • ERP Store C

      • Warehouse

    Compatible with:

    ❌ Native Click & Collect

    ❌ Brauz

    Not compatible as a Shopify Location with a combined virtual stock pool cannot allow for local pick-up.

    Reference:

    SMITH CLOTHING

    Summary: One Shopify Location setup is 1:many relationship containing an ERP location with a stock formula that combines multiple ERP stores. Within that same Shopify Location is the Warehouse.

    Why? This configuration allows for centralised inventory management across multiple stores.

    • Shopify Location: Online Store & Warehouse

      • ERP Virtual Stock Pool (Store A, B, C)

      • Warehouse

    Compatible with:

    ❌ Native Click & Collect

    ❌ Brauz

    Not compatible as a Shopify Location with a combined virtual stock pool cannot allow for local pick-up.

    Reference:

    UNIQUE CLOTHING

    Summary: Uses a hybrid setup with an ERP Virtual Stock Pool that consolidates stock from various stores while also having a dedicated warehouse for online orders.

    Why? This structure enables the brand to manage inventory across multiple stores and the warehouse, while providing a dedicated ERP location for a particular store.

    • Shopify Location Online Store

      • ERP Virtual Stock Pool (Store A, B)

      • Warehouse

    • Shopify Location Store C

      • ERP Store C

    Compatible with:

    ❗️Native Click & Collect

    ❗️Brauz

    Only possible if Store C allows for local pick-up.

    Reference:

    I use Brauz or Native Click & Collect but I also want a single Shopify Location for online. Can I combine this approach?

    Yes. You can combine 2 approaches:

    • Separate Shopify locations for Brauz or Native Click & Collect

    • Another single Shopify location for online fulfilment

    Summary: You can have a single Shopify location for online fulfilment and apply the same buffer stock for this group. This configuration allows for a unified online buffer management while still having individual Shopify Locations setup to power Brauz or Native Click & Collect.

    Pre-requisite: Your ERP needs to have a "Virtual Stock Pool" to aggregate the stores so that DotApparel can apply a buffer for the stock pool (group of stores).

    COLLECTIVE CLOTHING

    DotApparel Setup:

    • Shopify Location: Online Store

      • Warehouse

      • ERP Virtual Stock Pool (Store A, B, C)

    • Shopify Location: Store A

      • ERP Store A

    • Shopify Location: Store B

      • ERP Store B

    • Shopify Location: Store C

      • ERP Store C

    • Shopify Location: Warehouse

      • Warehouse

    Compatible with:

    Even though a virtual stock pool exists, the combines approach is still possible as each Shopify Location is configured to each ERP location.

    ✅ Native Click & Collect

    ✅ Brauz

    Reference:

    Keep the separate locations as is to continue powering Brauz Click & Collect but have another single Shopify location for online fulfilment
    The single Shopify location "Online Store" is mapped to 2 ERP locations; Warehouse & Virtual Stock Pool

    Key consideration

    • There is usually a small % of online orders that are related to Brauz or Native Click & Collect which would mean that their Inventory Buffers (if any are setup) would apply instead of the "Online Store" Shopify Location. In most cases, it attributes to less than 1% of total online orders so this is not a major issue considering the small volume of orders related to Brauz/Native Click & Collect

    • Total Available inventory in Shopify will be inflated as the Virtual Stock Pool "Online Store" already includes stock for Store A, B, C and Warehouse

    Mappings

    This feature gives you full control of mapping rules so that you can better utilise the data that's available in the ERP. You can configure certain product attributes in the ERP and enrich them further for Shopify. For example, combine title and colour together to create Shopify product titles.

    Customising your mappings

    "Mappings" are templates and rules linked to specific Shopify attributes. DotDev will set up these mappings for you based on your preferences, but you can also update them yourself.

    To access the mappings, go to Products > Mappings. Here, you'll see a list of Shopify attributes and their associated mappings. For example, you can map ERP references to Shopify tags, as shown in the screenshot.

    Rules

    Each mapping contains one or more “rules”. When the DotApparel app is calculating the value of a particular Shopify attribute, it will first find any mappings attached to that field, and then for each mapping, loop over the rules until one evaluates to true.

    In the screenshot above, we can see that the rule will only evaluate to true if the references.category.name attribute on the product is not empty.

    For the first rule which evaluates to true, the attached template will be applied, and no further rules within that mapping will be executed.

    Rules are a powerful way of changing the value of attributes in Shopify based on a series of conditions in ERP, and can be used for a huge array of purposes. Here are some examples of how you could use rules in your mappings.

    1. Only add a category tag when the category reference is not empty in ERP

    2. Add a category:tops tag, when the category reference in ERP is set to “shirts”, or “t-shirts”, allowing you to create a universal “tops” collection in Shopify

    3. Append - Clearance to the product title if the clearance

    Template functions

    DotApparel provides some powerful template functions to allow users to perform string manipulation tasks. From simple transformations like changing case or truncating strings to more complex operations like translating text or matching patterns, these helpers are here to make your development process smoother.

    Explore the functions described in the following sections to discover how they can aid in your specific use case, and feel free to incorporate them into your templates as needed.


    slugify

    This function transforms any given string into a URL-friendly version, removing any special characters and spaces. It's particularly useful for creating slugs for URLs in web applications.

    Usage

    {{#slugify}}STRING{{/slugify}}

    Example

    Given the AP21 field notes > web-care-label and you want to slugify it.

    web-care-label: "Cold hand wash separately"

    This is how the template function would look like

    {{#slugify}}{{notes.web-care-label}}{{/slugify}}

    Cold hand wash separately

    cold-hand-wash-separately


    stripTags

    Removes all HTML tags and CSS rules from the given input string. It can be useful in scenarios where you want to present pure textual data, stripping out any styling or scripting elements.

    Usage

    {{#stripTags}}STRING{{/stripTags}}

    Example

    Given the AP21 field notes > web-care-label and you want to remove HTML tags and CSS it.

    This is how the template function would look like

    {{#stripTags}}{{notes.web-care-label}}{{/stripTags}}

    Cold hand wash separately Do not bleach, soak, rub or tumble dry Cold rinse, gently squeeze to remove excess water Dry flat in shade Cool iron under protective cloth Dry cleanable (P)


    remove

    This function facilitates the removal of specific substrings from a given text. It can be applied when you need to find and remove certain patterns or words from a text string.

    Usage

    {{#remove}}substring1::substring2::STRING{{/remove}}

    Example

    Given the AP21 field notes > web-care-label and you want to remove the word "cold" and "hand".

    web-care-label: "Cold hand wash separately"

    This is how the template function would look like

    {{#remove}}cold::hand::{{notes.web-care-label}}{{/remove}}

    Cold hand wash separately

    wash separately


    truncateStr

    This function is used to shorten a string to a specified maximum length, cutting off characters from the right side. This might be useful for displaying previews of long texts.

    Usage

    {{#truncateStr}}sourceString::maxLength{{/truncateStr}}

    Example

    Given the AP21 field notes > web-care-label and you want to truncate to 13 characters.

    web-care-label: "Cold hand wash separately"

    This is how the template function would look like

    {{#truncateStr}}{{notes.web-care-label}}::13{{/truncateStr}}

    Cold hand wash separately

    Cold hand was


    truncateStrLeft

    Similar to truncateStr, the truncateStrLeft function cuts off characters from the left side of the string up to a specified maximum length. It serves the purpose of displaying the ending part of long texts.

    Usage

    {{#truncateStrLeft}}sourceString::maxLength{{/truntruncateStrLeftate}}

    Example

    {{#truncateStrLeft}}{{notes.web-care-label}}::13{{/truncateStrLeft}}


    padStart

    This function pads the beginning of a given string with another string until the resulting string reaches a specific length. It's handy for aligning texts or filling with specific characters, such as zeros.

    Usage

    {{#padStart}}sourceString::padString::targetLength{{/padStart}}

    Example

    Imagine you have an AP21 product code "K884" and you need to ensure it always displays as an 8-character string, padding it with zeros at the beginning if necessary.

    productCode: "K884"

    This is how the template function would look like

    {{#padstart}}{{productCode}}::0::8{{/padstart}}

    K884

    0000K884


    lowercase

    The lowercase function converts all characters in a given string to lowercase. It's useful for standardising text input or creating case-insensitive comparisons.

    Usage

    {{#lowercase}}STRING{{/lowercase}}

    Example

    Given the AP21 field notes > web-care-label and you want to convert to lowercase.

    web-care-label: "COLD HAND WASH SEPARATELY"

    This is how the template function would look like

    {{#remove}}{{notes.web-care-label}}{{/remove}}

    COLD HAND WASH SEPARATELY

    cold hand wash separately


    uppercase

    Similar to lowercase, this function transforms all characters in a string to uppercase. It's beneficial for emphasising text or handling case-insensitive processing.

    Usage

    {{#uppercase}}STRING{{/uppercase}}

    Example

    Given the AP21 field notes > web-care-label and you want to convert to uppercase.

    web-care-label: "cold hand wash separately"

    This is how the template function would look like

    {{#uppercase}}{{notes.web-care-label}}{{/uppercase}}

    cold hand wash separately

    COLD HAND WASH SEPARATELY


    titlecase

    This function transforms the first letter of each word in the given string to uppercase and the rest to lowercase. It helps in formatting titles or headings in a standardized way.

    Usage

    {{#titlecase}}STRING{{/titlecase}}

    Example

    Given the AP21 field notes > web-care-label and you want to transform the first letter of each word to uppercase.

    web-care-label: "Cold hand wash separately"

    This is how the template function would look like

    {{#titlecase}}{{notes.web-care-label}}{{/titlecase}}

    Cold hand wash separately

    Cold Hand Wash Separately


    splitStr

    This function breaks down a string into substrings using a specified separator and returns the substring at a given index. It's useful for parsing delimited data like CSV or user input.

    Usage

    {{#titlecase}}sourceString::separator::index{{/titlecase}}

    Example

    Given the AP21 field notes > web-colour-details and and you want to split it by commas and retrieve the hex code which is represented on the second item (index 1 since indexing starts from 0)

    web-colour-details: "Blue,#0000FF,BLU"

    Behind the scenes when splitting,

    This is how the template function would look like

    {{#splitStr}}{{notes.web-colour-details}}::,::1{{/splitStr}}

    Blue,#0000FF,BLU

    #0000FF


    match

    This function finds all occurrences of a specified regular expression pattern in a string and returns the matched groups. It can be used for complex text parsing, data extraction, and validation scenarios.

    Usage

    {{#match}}regexPattern::sourceString{{/match}}

    Example

    Given the Shopify order field note, and you want to extract the order number PO0001111

    Regex pattern: PO #: (PO\d+)

    This is how the template function would look like

    {{#match}}PO #: (PO\d+)::{{note}}{{/match}}

    "This is a purchase order. Purchase Order Details: - PO #: PO0001111 - fabric Marketplace Order ID: 11112222 - Shipping Method: Ground."

    PO0001111


    translate

    The translate function looks up a string in a predefined translation mapping and returns the corresponding translation.

    Usage

    {{#translate}}translation_table_id::attribute_to_lookup{{/translate}}

    For more details, please refer to

    Default mapping rules

    If there are no mapping rules set, DotApparel will populate default values for some key Shopify fields. For more details, please refer to .


    Option A: Consultant

    Using our Apparel21 consultant to setup exports

    If merchants don't have an Apparel21 expert in-house then they have the option to have their Apparel21 exports configured by our experienced Apparel21 consultant.

    An essential component of the consultant's work is the data review, this is imperative prior to configuring the data extraction tool.

    The data extraction tool gives companies using Apparel21 the ability to extract any schema of Apparel21 retail transaction data and transmit it to third party solutions. This specifically supports sending bricks and mortar retail transactions and person data to our solution.

    Setup Process

    Access Requirements

    Our consultant will need remote access to the Apparel21 report server. This can be achieved through the following means:

    • VPN (Virtual Private Network)

    • RDP (Remote Desktop Protocol)

    Preparation & Data Review

    A data review should be performed before the tool is commissioned. Ideally there are no email duplicates in the person data base before extraction via the tool. Otherwise we are propagating issues to the external system. Areas to review:

    • Duplicated Person/Email

    • Invalid email addresses

    Customer Maintenance (removing and merging duplicates)

    This refers to the process of organising and eliminating duplicate customers. It involves identifying and removing any duplicate entries or merging them into a single, accurate record. By performing customer maintenance and deduping, you ensure that your database is clean, efficient, and reliable.

    Client Anomalies

    It is common for some retail clients to have anomalies in some of their data. There is room for basic anomalies around most data areas.

    If anything is outside of scope it will have to be scoped and quoted for. The data clean-up may come at an additional cost and will be based on a time and materials basis.

    Data Parameters

    Below are some parameters which need to be defined before implementation.

    Option
    Description

    Warehouse Reference

    The extract is configurable by the merchant as to what stores are included in the transaction flow, this means if a store is added down the track, it can be configured for the flow without us requiring any intervention.

    This is done by using an Apparel21 Warehouse Reference:

    Reference Type
    Code
    Name
    Example

    The reference is usually 2 characters. There can be multiple ‘Chains’ setup if your instances are required to be split for different brands or regions.

    Extraction Tool

    The data extraction tool runs as a scheduled task on the Apparel21 report server and can be configured to run on any schedule you require, every minute, 15, hourly or nightly.

    Apparel21 data will be extracted in CSV format and transported to the SFTP server, this document centres around the data requirement for retail transactions, person and reward data extraction specifically for the email platform.

    Requirements

    There are some basic requirements to run the tool and there is flexibility in the way it is implemented, if any of the requirements cannot be fulfilled by a customer, there will always be an alternative solution for that requirement.

    • The tool usually runs on Apparel21 report server or any available windows-based process server EXCEPT the Apparel21 Oracle Server. It could run on a desktop if required.

    • SQL query tool: The default is which is the tool of choice for Apparel21. This requires the purchase of a licence which at the time of writing was approximately $70 AUD.

      • Note: Force IT hosted systems often include a licence for Golden.

        DotApparel can purchase the SQL query tool on your behalf.

    Consultant Fees

    One-Time Configuration

    $1,000 AUD for the first file type then $500 for every subsequent file type. This initial implementation cost for the Apparel21 export is a one-time fee with no subsequent monthly fees.

    Bulk File Export

    The generation of the bulk file may cost additional depending on the types of bulk files required. For the bulk file size, if it’s over 500,000 records and/or 3 years worth of data, the consultant will charge time & material based on a rate of A$180 per hour.

    Additional Customisations

    Should any support be needed in the future or adjustments to the data sets be required, these tasks can be efficiently addressed based on time and materials, with a minimum engagement of one hour.

    Data Clean-Up

    Our Apparel21 consultant offers additional services to assist you in maintaining your customer database. Below is an overview of the different types of services our Consultant can proficiently handle.

    This table serves as a starting point and our consultant will provide a nuanced approach based on individual requirements and preferences. We would suggest considering Basic+ as the minimum level of service.

    Type
    Effort
    Backup
    Metrics
    Dedupe Review
    Email
    Phone
    Record to use
    Transactions Merged
    Push to Stores After Hours
    Loyalty

    The rate is $180 AUD per hour plus 10% GST.

    Mappings

    This section provides a user interface and configuration options similar to the Product Mappings section, allowing users to define mapping rules for inventory-related attributes.

    Setting Up Mapping Rules

    The Inventory Mappings section offers two primary mapping options:

    1. IgnoreSync: This allows users to specify whether certain inventory data should be ignored during the inventory sync from ERP to Shopify.

    2. InventoryBuffer: Users can define rules to set up inventory buffers based on specific conditions. This functionality enables users to manage inventory levels more effectively.

    Rules and template functions

    Similar to Product Mappings, users have full control over mapping rules in the Inventory Mappings section. For detailed instructions on rules and template functions, please refer to the .


    :info:
    Product Mappings page
    :warning:
    :info:
  • Teamviewer (remote access software)

  • 2FA (Two-Factor Authentication)

  • They will have minimal involvement in your Apparel21 instance(s). However, during the setup phase, temporary access will be required, which is typically a brief process. To expedite this, remote access is generally preferred as it is faster and more efficient than creating additional Apparel21 logins.

    Are there any retail stores that should not be in the feed

    Person capture Options

    Customers with Email Address

    Customers without Email address

    Customers with no Transactions (Newsletter)

    Historical Retail Brands

    Are there any historical brands that require special treatment

  • SFTP client, WINSCP Is used to transport the files. Free.

  • Windows scheduler: this is a default part of the Windows operating system for desktop end servers. Free.

  • Basic

    No

    Yes

    No

    Earliest or latest

    None

    No

    No

    Basic+

    6 Hours

    Yes

    Basic

    Yes

    Yes

    No

    Earliest or latest

    Yes

    Yes

    No

    Advanced

    12 Hours

    Yes

    Advanced

    Yes

    Yes

    No

    Algorithm

    Yes

    Yes

    No

    Advanced+

    15 Hours

    Yes

    Advanced

    Yes

    Yes

    No

    Algorithm

    Yes

    Yes

    Yes

    Advanced Elite

    20 Hours

    Yes

    Advanced

    Yes

    Yes

    Yes

    Algorithm

    Yes

    Yes

    Yes

    Online

    Include web transactions, normal online in-store

    Product Ref#

    What style reference is used for primary product categorisation

    Person Ref#

    What person reference is preferred

    Start Date

    The earliest transaction to capture

    Person Name Case

    Should the customer’s name be in upper or normal case

    Warehouse

    RetailCh

    Retail Chain

    VW

    Basic

    3 Hours

    access
    data review
    CSV data exports
    Benthic Gold
    Benthic Golden

    Stores to exclude

    Yes

    warning
    reference is set to
    Yes
    Translations
    Default mapping rules
    web-care-label: "<ul> <li>Cold hand wash separately </li><li> </li><li>Do not bleach, soak, rub or tumble dry</li><li> </li><li>Cold rinse, gently squeeze to remove excess water</li><li> </li><li>Dry flat in shade</li><li> </li><li>Cool iron under protective cloth</li><li> </li><li>Dry cleanable (P)</li><li> <ul></ul></li></ul>"
    <ul> <li>Cold hand wash separately </li><li> </li><li>Do not bleach, soak, rub or tumble dry</li><li> </li><li>Cold rinse, gently squeeze to remove excess water</li><li> </li><li>Dry flat in shade</li><li> </li><li>Cool iron under protective cloth</li><li> </li><li>Dry cleanable (P)</li><li> <ul></ul></li>
    </ul>
    index 0 - Blue
    index 1 - #0000FF
    index 2 - BLU
    note: "This is a purchase order. Purchase Order Details: - PO #: PO0001111 - fabric Marketplace Order ID: 3964844 - Shipping Method: Ground."

    Apparel21 Export Templates

    File Templates for DotApparel Customers

    • Customers CSV

    • Gift Cards CSV

    File Templates for DotApparel Loyalty

    For merchants that have DotApparel Customers already, then the same Orders CSV can be used.

    • Refunds CSV

    Please note, a specific for the CSV files must be followed before they can succesfully be uploaded to the SFTP server.

    Distinguishing Loyalty and Rewards

    Despite the name, there's a clear distinction between Loyalty and Rewards in Apparel21.

    • Loyalty: Encompasses staff discounts and VIP levels.

    • Rewards: Refers to the Apparel21 rewards program module, covering tiers, spending, gifts, points, etc.

    During the project kick-off, notify us of the status of your rewards program. If enabled, specify the precise rewards data you wish to incorporate into your rewards.csv This file is tailored to meet your specific requirements, aligning seamlessly with the type of emails you intend to send.

    Field Definitions

    Customers Export Fields

    Apparel21 Field
    Klaviyo Field Name
    Purpose of Field

    Orders Export Fields

    Apparel21 Field
    Klaviyo Field Name
    Purpose of Field

    Additional Data

    If you would like additional data beyond the standard CSV file templates, please inform us so that we can configure the necessary mapping in the solution during setup.

    Please note that the rewards data is not part of the standard templates and will require extra customisations when exporting from Apparel21.

    Rewards Export Fields

    The following will update the Klaviyo customer properties

    Apparel21 Field
    Klaviyo Field Name
    Purpose of Field

    The following will be added as a Klaviyo event

    AP21 Field
    Klaviyo Field
    Purpose of Field

    Here's How The Data Will Appear in Klaviyo

    Customer Properties will populate in the respective field in the "Details" section

    Orders and Rewards Events will appear in the "Activity Log" section.

    Last Name

    Last name

    ADRS1

    Location Address 1

    Address line 1

    ADRS2

    Location Address 2

    Address line 2

    CITY

    Location City

    City

    STATE

    Location State

    State

    POSTCODE

    Location Post Code

    Post code

    COUNTRY

    Location Country

    Country

    MOBILE

    Mobile Number

    First mobile number

    EMAIL

    Email

    Person's primary Email

    DOB

    Date Of Birth

    Date of Birth (YYYY-MM-DD)

    PRIVACY

    Privacy

    Privacy status (Yes is unsubscribed, No is subscribed)

    RETAIL_REP

    Retail Rep

    Retail Representative (Yes if ticked, No if not ticked/blank)

    LAST_UPDATED

    Last Updated

    Last updated date (YYYY-MM-DD"T"HH24:MI:SS)

    CREATED_DATE

    Created Date

    Creation date (YYYY-MM-DD"T"HH24:MI:SS)

    JOINED_STORE_ID

    Joined Store ID

    Internal Store ID where the person was created

    JOINED_STORE_CODE

    Joined Store Code

    Store Code where the person was created

    STORE_ID

    Latest Store ID

    Last purchase store ID

    STORE_CODE

    Latest Store Code

    Last purchase store code

    STORE_NUMBER

    Latest Store Number

    Last purchase store number

    REF1_GROUP

    Ref1 Group

    For Reference (as required)

    REF1_ID

    Ref1 ID

    For Reference (as required)

    REF1_CODE

    Ref1 Code

    For Reference (as required)

    LOYALTY_CODE

    Loyalty Code

    Most recent loyalty code if active, empty otherwise

    LOYALTY_NAME

    Loyalty Name

    Loyalty Name/Description

    Sale Date

    Sale date (YYYY-MM-DD"T"HH24:MI:SS)

    STORE_CODE

    Store Code

    Store code

    STORE_NAME

    Store Name

    Store Name

    LINE_ID

    Line ID

    Index of the product

    SKUIDX

    SKU IDX

    SKU ID

    STYLE_CODE

    Style Code

    Product code

    STYLE_NAME

    Style Name

    Product description

    COLOUR_CODE

    Colour Code

    Colour code

    COLOUR_NAME

    Colour Name

    Colour description

    SIZE_CODE

    Size Code

    Size code

    CATEGORIES

    Categories

    Existing product reference (array of categories)

    BARCODE

    Barcode

    EAN number

    QUANTITY

    Quantity

    Quantity

    PRICE

    Price

    Recommended Retail Price (RRP price)

    VALUE

    Value

    Total value of the order

    DISCOUNT_REASON

    Discount Reason

    Discount reasons for retail orders in AP21 ("None" or empty for online)

    DISCOUNT_AMOUNT

    Discount Amount

    Discount amount for retail orders (0 for online)

    MARKDOWN

    Indicator for sale items

    Logic is based on difference between original RRP and current RRP "Y" = Markdown

    "N" = Full Price

    Event

    Description of the activity

    REASON

    Reason

    Reason for the reward activity

    EVENT_DATE

    Event Date

    Date of activity

    PROGRAM_NAME

    Program Name

    Reward program the customer is enrolled in

    TIER_NAME

    Tier Name

    Current tier/level

    TIER_DESCRIPTION

    Tier Description

    Description of the current tier

    EXPIRY_DATE

    Expiry Date

    Expiry date for the current tier

    POINTS_TOTAL

    Points Total

    Total points earned by the customer

    POINTS_REDEEMED

    Points Redeemed

    Total points redeemed by the customer in transactions

    POINTS_REMAINING

    Points Remaining

    Total current points available for the customer

    Gift Redeemed

    Event gift redeemed by the customer

    PERIDX

    AP21 Person ID

    Internal AP21 Person IDX

    PERSON_CODE

    Person Code

    Person code

    FIRSTNAME

    First Name

    First name

    PERSON_IDX

    AP21 Person ID

    Person IDX

    TRANSACTION_ID

    Transaction ID

    Transaction IDX

    TRANSACTION_NUMBER

    Transaction Number

    Online order number

    PERIDX

    AP21 Person ID

    Internal AP21 ID

    EMAIL

    Email

    Customer Email

    PERSON_CODE

    Person Code

    Customer Code

    REWARD_TOTAL

    Reward Total

    Event points earned in the reward activity

    REWARD_REDEEMED

    Reward Redeemed

    Event points redeemed in the same transaction

    REWARD_REMAINING

    Reward Remaining

    Event points left available for the customer

    Orders CSV
    Rewards CSV
    Orders CSV
    file naming convention

    SURNAME

    SALE_DATE

    EVENT

    GIFT_REDEEMED