# Shopify Wholesale B2B Catalogue Import for Trade Buyers

> Import a separate Shopify B2B trade catalogue with wholesale pricing, MOQ metafields, and procurement-focused AI descriptions alongside your DTC store.

- Published: 2026-10-09
- Author: Importier Team
- Category: Import Guides / Variants & Quality
- Canonical: https://www.importier.app/blog/shopify-wholesale-b2b-catalogue-import

---

A Melbourne homewares brand sources 140 SKUs from four Australian manufacturers. Its Shopify store serves two completely different buyer types: consumers browsing for a single statement lamp at $299, and interior designers ordering 12 lamps at $179 each to furnish a boutique hotel fitout.

The consumer buying experience is straightforward. The trade buying experience involves wholesale pricing, minimum order quantities, fire-rating specifications, and procurement documentation. Both buyers visit the same Shopify store. The product catalogue serves both audiences. The import file, and the data it carries, has to serve both too.

That is what a Shopify wholesale B2B catalogue import solves: building the product data layer that supports both DTC and trade buying from the same store, without maintaining two separate product catalogues by hand.

## Why the Same Products Need Different Data for DTC and Trade

A consumer buying a table lamp wants to know the shade material, the bulb fitting, and whether it suits a coastal interior. A procurement manager specifying 40 lamps for a hotel lobby wants the shade material grade (commercial-weight linen, fire-rated to AS 1530.3), the base construction (solid brass, not plated), the IP rating, the cord length, and the lead time for a commercial order.

Shopify's standard product record stores one description. That description will either speak to the consumer (lifestyle-led, emotive) or speak to the trade buyer (specification-led, compliance-aware), but not both equally. Most merchants default to the consumer description and lose trade orders to suppliers who provide proper specification sheets.

A B2B trade catalogue import addresses this at the data level:

- **Wholesale pricing** stored in the import file as a separate price column (or via Shopify's price lists for B2B accounts)
- **Minimum order quantities** stored as a product metafield, visible to trade accounts
- **Trade-specific product attributes** (fire ratings, material grades, commercial compliance specs) stored as category metafields
- **Dual descriptions**: a consumer-facing description generated by AI using a lifestyle persona, and a trade-facing description generated by AI using a Technical style aimed at procurement teams

<Callout>
The same physical product has two audiences with different information needs. A trade catalogue import does not duplicate your products — it adds the data layer that makes each product useful to both a consumer and a procurement manager.
</Callout>

![Stacked product catalogues and trade price lists arranged on a clean retail display counter with professional commercial lighting.](/blog/shopify-wholesale-b2b-catalogue-import/05.jpg)

## The Import File Structure for a Wholesale B2B Catalogue

A dual DTC+B2B catalogue import file carries standard Shopify product columns alongside B2B-specific pricing and metafield columns. For the Melbourne homewares brand, that structure looks like this:

<table>
<thead>
<tr><th>Column</th><th>Consumer purpose</th><th>Trade purpose</th></tr>
</thead>
<tbody>
<tr><td>Title</td><td>Product name for store display</td><td>Same — trade buyers search by product name</td></tr>
<tr><td>Price</td><td>Consumer retail price ($299)</td><td>Not used for trade orders; see wholesale_price below</td></tr>
<tr><td>custom.wholesale_price</td><td>Not displayed to consumers</td><td>Used to populate Shopify B2B price list via API or export</td></tr>
<tr><td>custom.min_order_qty</td><td>Not displayed to consumers</td><td>Visible to trade accounts; enforced at checkout for B2B customers</td></tr>
<tr><td>custom.fire_rating</td><td>Optional compliance info</td><td>Required for commercial fitout specifications</td></tr>
<tr><td>custom.material_grade</td><td>Background context</td><td>Primary specification for procurement decisions</td></tr>
<tr><td>custom.lead_time_days</td><td>Delivery timeframe</td><td>Critical for project scheduling on commercial fitouts</td></tr>
</tbody>
</table>

The import file populates all columns in a single pass. Importier maps non-standard supplier column names automatically using AI column matching — a supplier spreadsheet with a column labelled "Trade Unit Price (AUD ex GST)" maps to `custom.wholesale_price` without manual column remapping.

![Rows of neatly labelled wooden storage drawers with metal handles in an organised warehouse or stockroom setting.](/blog/shopify-wholesale-b2b-catalogue-import/01.jpg)

<Divider label="Wholesale Pricing in Shopify" />

## Wholesale Pricing: Import File Approaches

Shopify handles B2B pricing in two ways depending on the plan. Understanding which applies affects how wholesale pricing columns are structured in the import file.

**Standard Shopify (all plans): compare-at price as retail, price as wholesale**

For merchants who gate trade prices behind a customer tag rather than a formal Shopify B2B account, the simplest approach is importing wholesale pricing as the `Price` column and consumer pricing as the `Compare At Price` column. Trade-tagged customers see the lower price. Consumer visitors see the higher compare-at displayed as a "trade price" tier.

This approach works without Shopify Plus but requires a third-party app or theme customisation to display the correct price tier per customer type. The import file uses standard Shopify CSV columns:

- `Price`: 179.00 (wholesale)
- `Compare At Price`: 299.00 (consumer retail)

**Shopify Plus: native B2B price lists**

Shopify Plus merchants can create formal B2B price lists and company accounts. The product's standard `Price` column stores the consumer price. The wholesale price lives in a separate Shopify B2B price list. The import file carries `custom.wholesale_price` as a metafield, which the merchant then uses to populate price lists via the Shopify API or a B2B app.

For the Melbourne homewares brand (not on Plus), the compare-at approach applied. The import file for 140 SKUs carried retail prices in `Compare At Price` and trade prices in `Price`. Trade accounts see the `Price`. All other visitors see both prices displayed as a retail-vs-trade comparison.

<PullQuote>
The import file is the single source of truth for both pricing tiers. Getting wholesale and retail pricing into Shopify from the same import run eliminates the double-handling that normally creates pricing discrepancies between what the trade account sees and what the supplier confirmed.
</PullQuote>

## MOQ and Trade-Specific Metafields

Minimum order quantities are a structural requirement for trade buying, not a display preference. A hotel fitout specifying 40 lamps does not order one at a time. The supplier ships in cartons of 6. The 3PL receiving the order expects pallets of 6 per SKU.

The import file carries MOQ as a metafield rather than a product description note. This allows the MOQ to appear in structured product data that B2B apps and checkout rules can read programmatically, rather than buried in text a buyer might miss.

The Melbourne homewares brand used four trade-specific metafields:

- `custom.min_order_qty` (number_integer): minimum units per order for trade accounts. Enforced by a B2B app at checkout.
- `custom.wholesale_price` (number_decimal): wholesale unit price ex GST. Used to populate price lists.
- `custom.lead_time_days` (number_integer): fulfilment lead time in business days for commercial orders. Standard orders ship from stock; commercial orders may require manufacturer lead time.
- `custom.fire_rating` (single_line_text_field): fire-resistance rating for commercial use. Lamps and soft furnishings require this for commercial fitouts in Australia (AS 1530 series).

[Shopify's custom data documentation](https://help.shopify.com/en/manual/custom-data/metafields) covers the metafield types and namespace setup. The `custom` namespace is the standard choice for merchant-defined fields.

![A neat row of identical commercial floor lamps lined up against a warehouse wall for quality inspection and inventory management.](/blog/shopify-wholesale-b2b-catalogue-import/02.jpg)

## AI Descriptions for B2B Trade Buyers

A consumer-facing description for a table lamp leads with mood and material beauty. A trade-facing description leads with specification data that answers procurement questions before they are asked.

Importier's 156 expert personas include personas tuned for B2B and technical buying contexts. The Technical tone option combined with a Homewares and Interiors persona produces descriptions that lead with the specification rather than the lifestyle narrative:

**Consumer description (Benefits-First style, Homewares and Interiors persona):**
"The Harbour Table Lamp brings warm coastal light to any bedside or reading corner. The natural linen shade diffuses the glow evenly. Solid brass base with an antique finish. Fits a standard E27 globe. Available in natural and slate."

**Trade description (Technical style, Homewares and Interiors persona):**
"Harbour Table Lamp. Base: solid brass, antique patina finish, non-plated. Shade: 320gsm commercial-weight natural linen, fire-rated AS 1530.3. Socket: E27 medium screw, 40W max incandescent or 12W LED equivalent. Cord: 1.8m textile, inline switch. Shade diameter: 35cm. Overall height: 52cm. Carton: 1 unit, 38 × 38 × 56cm packed, 4.2kg. MOQ: 6 units. Lead time: 14 business days for commercial orders."

The trade description includes every metafield value the procurement manager needs: material grade, fire rating, socket type, dimensions, carton data, MOQ, and lead time. None of this requires rewriting by hand — the import file carries the structured data, and the AI draws from it.

![Professional commercial fabric swatch samples showing different textile grades and fire-rating tags arranged on a product testing surface.](/blog/shopify-wholesale-b2b-catalogue-import/03.jpg)

<Divider label="Running the Import" />

<Steps items="Map your supplier spreadsheet: identify which columns carry consumer retail price, wholesale price, MOQ, lead time, compliance ratings (fire rating, IP rating, material grade), and carton data; create matching metafield definitions in Shopify admin under Settings > Custom data > Products before importing | Build the import file: add metafield columns (custom.wholesale_price, custom.min_order_qty, custom.lead_time_days, custom.fire_rating) alongside standard Shopify columns; if using compare-at pricing for trade tiers, populate both Price and Compare At Price columns from your supplier data | Run the import: Importier's AI column mapping handles non-standard supplier column names; review the column mapping preview before confirming, particularly for price columns where supplier naming varies widely | Generate consumer descriptions: run AI description generation using a lifestyle persona (Benefits-First or Emotional Storytelling style) for the DTC product page; these descriptions display to all visitors | Generate trade descriptions: run a second AI description pass using Technical style and a relevant industry persona; store these as a separate metafield (custom.trade_description) rather than replacing the consumer description | Set up trade access: configure your B2B app or Shopify Plus price list to display custom.trade_description and custom.wholesale_price to trade-tagged customer accounts; consumer visitors see the standard description and retail price" />

## The Melbourne Homewares Brand's Results

The 140-SKU import ran as a single file carrying retail prices, wholesale prices, MOQ data, fire ratings, and material grades. The AI generated consumer descriptions and trade descriptions in the same import session.

After the import:

- Trade orders from interior designers and commercial buyers increased over the following quarter. The procurement team at a hotel management group cited the fire rating and material grade data as the reason they specified the brand over a competing supplier who provided only consumer product pages.
- Price discrepancy queries from trade accounts dropped. Previously, a trade buyer would call to confirm the price on the website matched the quoted wholesale price. With correct pricing in the import file and compare-at prices displaying correctly, the website became the source of truth.
- The brand's specification sheet PDF (previously emailed on request) became redundant for most SKUs. The trade description metafield carries the same data in a structured, searchable format.

![An organised commercial showroom with furniture and lighting displays arranged for trade buyer viewing with clean neutral styling.](/blog/shopify-wholesale-b2b-catalogue-import/04.jpg)

For merchants who need to update wholesale pricing when supplier costs change, the [scheduled imports guide](https://importier.app/blog/shopify-scheduled-product-imports) covers setting up recurring import runs that pull updated pricing from a supplier spreadsheet without a manual re-import each time.

The [supplier catalogue import guide](https://importier.app/blog/shopify-wholesale-product-import) covers the broader mechanics of importing wholesale supplier files into Shopify: Smart Variant Detection for grouping wholesale SKUs, AI data enrichment for missing fields, and Import History for reverting a bulk upload if pricing errors appear after the fact.

<Compare
  withoutTitle="Trade catalogue as a manual process"
  withTitle="Trade catalogue via B2B import"
  withoutItems="Wholesale pricing maintained in a separate spreadsheet; trade buyers ask for quotes and prices diverge from the website | MOQ communicated via email or a PDF price list; procurement teams miss it and place below-MOQ orders that require correction | Consumer product description serves trade buyers; specification data absent; procurement managers request spec sheets by email before specifying | Fire ratings and material grades stored in a folder of supplier spec sheets; not searchable, not on the product page, not visible during the buying decision | Trade description requires a separate copywriting pass after the consumer description is live; doubling the content work per SKU"
  withItems="Wholesale pricing in the import file: retail in Compare At Price, wholesale in Price; trade accounts see the correct price on the product page without a separate quote step | custom.min_order_qty metafield read by B2B app at checkout; trade buyers see the MOQ on the product page and orders arrive at correct carton quantities | AI generates separate consumer and trade descriptions from the same structured import data; Technical style and B2B persona for trade; Benefits-First and lifestyle persona for consumers | custom.fire_rating and custom.material_grade as searchable metafields on every product; visible to trade accounts without a spec sheet request | Both description variants generated in the same import session; no manual copywriting pass; structured import data drives both outputs"
/>

<TipBox />

For merchants running Shopify Plus with formal B2B company accounts and price lists, the same import file structure applies. The `custom.wholesale_price` metafield feeds the price list population step rather than the compare-at field. The metafield structure, AI description approach, and MOQ data stay identical — only the price display mechanism differs between standard Shopify and Plus.

Try Importier free at importier.app.
