# Move brand discounts from another wholesale app

URL: https://docs.sparklayer.io/help/guides/migrate-brand-discounts
Applies to: Shopify

Recreate brand-by-brand trade discounts from another wholesale app in SparkLayer, with a manual price list per brand and a customer group per mix.

> **Quick summary**
>
> - You'll end up with each B2B customer getting the same discount on each brand as in your old wholesale app, for example 30% off Brand A and 20% off Brand B.
> - An automatic price list always applies to every product, so a discount on one brand needs a manual price list, built from a CSV of that brand's SKUs.
> - Customers who get the same mix of brand discounts share a customer group. Allow about an hour for a few brands, and longer if you have many combinations.
> - Price lists are on every plan. The free Basic plan includes 3 price lists, so you'll usually need Starter or above, which have unlimited price lists.

Some wholesale apps give a customer a percentage off a whole brand (the **Vendor** on a Shopify product). SparkLayer prices by SKU instead. You recreate each brand discount as a manual price list that holds the discounted price for every SKU of that brand, then give each customer the lists they need through their customer group.

How brand discounts become price lists:

1. **Product export**: Your Shopify products, filtered by vendor
2. **One price list per brand discount**: For example "Brand A 30%", uploaded by CSV
3. **One customer group per mix**: Holds each brand list the customers get, in order
4. **Customer tags**: `b2b` plus the group's tag

## Before you start

- **A list of your brand discounts**, from your old app: which customers get what percentage off which brand.
- **A unique SKU on every variant**, with each product **Active** and published to the **SparkLayer Wholesale** sales channel. Prices are matched to products by SKU.
- **Excel or Google Sheets**, to work out the prices.
- **The right plan** for the number of price lists you need. See [If you're on the Basic plan](https://docs.sparklayer.io/help/pricing/managing-pricing.md#if-youre-on-the-basic-plan).

## Set up your brand discounts

### Step 1. Work out your combinations

List each customer's brand discounts. Each brand and percentage becomes one price list. Each unique mix of price lists becomes one customer group, because a customer can only be in one group.

| Customer | Discounts in your old app | Price lists | Customer group |
| --- | --- | --- | --- |
| Retailer 1 | 30% off Brand A, 20% off Brand B | Brand A 30%, Brand B 20% | Brand A 30 + Brand B 20 |
| Retailer 2 | 30% off Brand A, 20% off Brand B | Brand A 30%, Brand B 20% | Brand A 30 + Brand B 20 |
| Retailer 3 | 25% off Brand A | Brand A 25% | Brand A 25 |

Retailers 1 and 2 share a group. Brand A needs two price lists, one at 30% and one at 25%.

### Step 2. Export your products from Shopify

In your Shopify admin, go to **Products** ([open in the Shopify admin](https://admin.shopify.com/products)), click **Export** and export all products as a CSV file. Open it in Excel or Google Sheets. Each variant has its own row, with its **Vendor**, **Variant SKU** and **Variant Price**.

### Step 3. Build a CSV for each brand discount

For each price list from step 1:

1. Filter the sheet by **Vendor** to show only that brand.
2. Copy the **Variant SKU** and **Variant Price** columns into a new sheet. Delete any rows with no SKU.
3. Add a column that works out the discounted price. For 30% off a price in column B, use `=ROUND(B2*(1-0.3),2)` and fill it down.
4. Keep two columns, headed `sku` and `price`, with the discounted prices as numbers only. Remove any spaces before or after the SKUs (the `TRIM` function does this).
5. Save the sheet as a CSV file, for example `brand-a-30.csv`.

**More detail**

- If your Shopify prices include tax, the discount is taken off the tax-inclusive price, so allow for tax when you work out your prices. See [Tax and VAT](https://docs.sparklayer.io/help/guides/tax-and-vat.md).
- The CSV format is in [Prepare your CSV file](https://docs.sparklayer.io/help/pricing/csv-upload.md#prepare-your-csv-file).

### Step 4. Create a manual price list for each brand discount

1. Go to **Pricing > Price lists** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/pricing/lists)), or **SparkLayer Wholesale > Pricing > Price lists** in the Shopify app and click **Create price list**.
2. Enter a **Name**, such as "Brand A 30%", and choose the **Currency**.
3. Tick **Enable manual pricing** and click **Save**.
4. Click **Upload** next to the new list, choose that brand's CSV file, check the rows under **Check your upload**, then click **Import**.

Repeat for each brand discount. See [Create a price list](https://docs.sparklayer.io/help/pricing/managing-pricing.md#create-a-price-list) and [Upload prices by CSV](https://docs.sparklayer.io/help/pricing/csv-upload.md).

### Step 5. Create a customer group for each combination

1. Go to **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app and click **Create customer group**.
2. Enter a **Name**, such as "Brand A 30 + Brand B 20", and click **Create group**. Note the group's tag, for example `b2b-brand-a-30-brand-b-20`.
3. Open the group and, under **Price lists**, add each of its brand price lists. Click **Add price list** for each one.
4. Click **Save**.

**Products from other brands**

A customer only gets prices for SKUs in their group's price lists, so products from brands with no discount show as **Unavailable**. To sell those at another price, add a list that covers them last, for example an automatic list at 0% off your Shopify prices. Price lists are used in order: SparkLayer uses the first list on the group that contains the SKU, so the brand lists must come before the catch-all list. See [Which price list wins](https://docs.sparklayer.io/help/pricing/managing-pricing.md#price-list-order).

### Step 6. Tag your customers

In your Shopify admin, open each customer and give them the tag `b2b` plus their group's tag, for example `b2b-brand-a-30-brand-b-20`. Save the customer. A customer can have no more than two B2B tags. See [Assign customers to a customer group](https://docs.sparklayer.io/help/customers/add-customers-to-a-group.md#assign-customers-to-a-customer-group).

## Add new products later

When you add products to a brand, export just the new products, work out their prices as in step 3, and upload a CSV with only the new SKUs to that brand's price list. Prices already on the list stay as they are.

## Check it worked

- **Sign in as a customer in each group**, or use [Try it out](https://docs.sparklayer.io/help/get-started/launching.md#place-a-test-order), and open a product from each brand. The price matches what they got in your old app.
- **Search a SKU** at **Pricing > Price editor** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/pricing/editor)), or **SparkLayer Wholesale > Pricing > Price editor** in the Shopify app to see its price in each list.
- **Open a product from a brand with no discount.** It shows the price from your catch-all list, or **Unavailable** if you didn't add one.

## If something's not right

- **A product shows Unavailable.** Its SKU isn't in any of the group's price lists, or the upload didn't match it. See [Why a product shows Unavailable](https://docs.sparklayer.io/help/pricing/managing-pricing.md#unavailable).
- **The upload worked but nothing matched.** The SKUs probably have spaces before or after them. See [The upload worked, but products show as Unavailable](https://docs.sparklayer.io/help/pricing/csv-upload.md#unavailable-after-upload).
- **A product gets the wrong brand's discount.** The SKU is in more than one of the group's lists, and the first one wins. Check the vendor filter in your CSV files and the order of the lists on the group.
- **A customer sees the Base group's prices.** Check they have both the `b2b` tag and their group's tag.
- **Prices are a little off.** Your Shopify prices may include tax. See [Prices are different from what you expect](https://docs.sparklayer.io/help/troubleshooting.md#prices-are-different-from-what-you-expect).

## Next steps

- [Price lists](https://docs.sparklayer.io/help/pricing/managing-pricing.md): Manage, clear and reorder your price lists
- [Customer groups](https://docs.sparklayer.io/help/customers/customer-groups.md): Payment methods, order limits and other rules for each group
- [Run volume pricing and promotions](https://docs.sparklayer.io/help/guides/volume-discounts.md): Add price breaks, pack sizes and discounts
