Your Shopify collection already contains product names, descriptions, images, and variants. Turning that information into a useful wholesale catalog should be straightforward.
The challenge is presentation.
A storefront is designed for browsing and interaction. A printed catalog needs fixed pages, readable specifications, consistent product photography, and pricing that makes sense without a variant selector or checkout.
Simply printing a collection page often produces cropped images, missing products, awkward page breaks, and navigation elements that waste space.
The better approach is to separate product data from document layout. Export the right selection, prepare a catalog-specific dataset, and use a reusable template to generate the PDF.
This guide covers a practical manual workflow and a developer-oriented approach for recurring catalog production.
- Decide whether you need a catalog, lookbook, or line sheet
These documents serve different buying decisions.
A product catalog combines images, descriptions, specifications, and ordering information. A lookbook emphasizes visual presentation. A line sheet prioritizes information wholesale buyers need to place an order, such as SKUs, variants, unit prices, and case quantities.
For a wholesale audience, a beautiful image without an ordering reference is incomplete.
Start with the buyer’s task. If customers already understand the range and need to reorder, a compact line sheet may be more useful than a highly designed catalog.
A sensible first version might contain:
Cover and contact details
Product categories
Product images and short descriptions
SKU and variant information
Approved wholesale prices
Pack sizes and minimum quantities
Ordering instructions
Edition date
Do not confuse this printable document with a Shopify catalog. Shopify catalogs control product availability and pricing for markets; a PDF is a separate publishing output.
- Define the audience and price context
Before exporting, decide who will receive the document.
A public product brochure, a distributor price list, and a customer-specific wholesale catalog should not necessarily contain the same information.
Record the intended audience, currency, product selection, price source, and publication date.
For example:
Audience: Wholesale buyers
Currency: USD
Product selection: Spring accessories
Price basis: Approved wholesale price list
Availability: Confirm at time of order
Edition: Spring 2027
These are illustrative values.
Do not assume the standard Shopify product price is the correct wholesale price. Customer-specific prices, fixed catalog prices, and market pricing can differ from the base product price.
Likewise, do not calculate wholesale prices using a universal percentage unless that is your actual approved pricing rule.
For customer-specific documents, keep the output clearly labeled and restrict distribution appropriately.
- Export the correct product selection
Shopify supports exporting selected products or products matching search and filters.
Use that to limit the dataset to the intended range rather than exporting the whole store and manually deleting hundreds of rows.
If the document is based on a collection, verify that the export selection matches the collection’s actual membership. Also preserve the desired merchandising order separately rather than assuming the export will reproduce it.
Keep an untouched copy of the export.
Then create a separate working dataset for publishing. Do not reimport that transformed document dataset into Shopify.
This separation matters because sorting or restructuring a product CSV can disrupt the relationships between products, variants, and image rows if that file is later used as an import.
For catalogs with fixed pricing, Shopify also supports catalog CSV exports. However, the documented export includes fixed prices, not products represented only by a percentage adjustment. It is therefore not necessarily a complete list of effective buyer prices.
- Normalize the export before designing pages
A product export is not automatically a clean catalog database.
One product can span several rows because of variants and images. Some product-level fields may appear only on the first row.
If you turn every CSV row into a product card, you can create duplicate entries and image-only cards.
Build an intermediate structure that separates products from variants:
Product
Identifier
Title
Short description
Primary image
Category
Variants[]
Variant
Identifier
SKU
Option values
Approved price
Pack size
Minimum quantity
Preserve identifiers and SKUs as text. Spreadsheet software can otherwise remove leading zeros or reformat long values.
Keep data-cleaning decisions explicit. A missing price should become a validation issue, not silently turn into zero.
- Create catalog-specific descriptions
Storefront descriptions often contain more information than fits comfortably on paper.
They may include HTML, collapsible content, repeated promotional text, or embedded media. Those elements need conversion, not blind copying.
Prepare a short description that explains the product without depending on interactive content.
For example:
Storefront content:
Long description, video, detailed feature sections
Catalog content:
A two-sentence summary
Three key specifications
A clear SKU or model reference
For recurring production, maintain a dedicated catalog description in your content workflow rather than rewriting the same text for every edition.
If specifications are important to buyers, give them consistent labels and units. Do not mix centimeters and inches without making the distinction clear.
Keep unsupported claims out of the document, particularly where an abbreviated description could change their meaning.
- Prepare images for their printed size
Shopify product CSV exports reference images, but they do not contain the image files themselves.
Your publishing process must retrieve or place the actual images.
Choose the appropriate product or variant image deliberately. Do not assume the first image reference in a transformed spreadsheet is always the right photograph.
For image quality, assess resolution at the size it will appear on paper.
A useful calculation is:
Required image width in pixels =
Printed width in inches × target pixels per inch
For example, a photograph printed three inches wide at 300 pixels per inch needs approximately 900 pixels across.
That is a practical production target, not a requirement for every image or printer. Ask the print provider for its specifications.
Use consistent image proportions and check whether cropping removes important details. Apparel images, furniture, and packaged goods often need different framing.
For a dependable production pipeline, download approved image copies into the publishing environment rather than relying on live image requests during final rendering.
- Build a reusable page template
Start with a small, representative sample rather than the full catalog.
Include a product with a long name, one with many variants, one with a long description, and one with an unusual image shape.
Then design a repeatable product block:
Product image
Product name
Short description
Material:
Dimensions:
Available options:
SKU:
Wholesale price:
Pack quantity:
Minimum order quantity:
Only show fields that are relevant and supported by the source data.
For products with many variants, a compact variant table can be clearer than repeating the same image for every SKU.
Specify whether a displayed price is per item, per pack, or per case. For example, “$48 per case of 12” communicates something very different from “$48 per unit.”
Avoid shrinking text to accommodate every exception. Allow a larger product block or an additional page when needed.
- Choose a production method that matches the workload
For a small, occasional catalog, a document or page-layout tool can be sufficient. Import the prepared text and images, apply consistent styles, and export a PDF.
For recurring catalogs, use a template-driven workflow that supports data merging or scripted document generation.
If you evaluate a dedicated catalog app, verify its actual capabilities before relying on it. Useful requirements include collection selection, variant handling, approved pricing sources, image quality, page-break controls, and output restrictions.
An “Export PDF” feature does not establish that the tool can produce customer-specific wholesale pricing or professional print output.
Do not rebuild the live storefront solely to obtain a printable document unless a print-specific storefront view is genuinely part of your requirements.
- For developers, separate extraction from rendering
A reliable custom generator has distinct stages:
Extract approved Shopify data
→ Resolve product selection and pricing
→ Normalize records
→ Retrieve images
→ Validate the dataset
→ Render the document
→ Inspect the PDF
→ Publish a versioned edition
Keeping these stages separate makes failures easier to diagnose.
A conceptual implementation could look like this:
async function buildWholesaleCatalog(config) {
const source = await readCompleteProductSelection(config);
const products = normalizeCatalogRecords(source);
const pricedProducts = await resolveApprovedPrices(
products,
config.priceContext
);
validateCatalogData(pricedProducts, config);
const assets = await prepareCatalogImages(pricedProducts);
return renderCatalogPdf({
products: pricedProducts,
assets,
edition: config.edition,
currency: config.currency
});
}
These are application-defined helpers, not Shopify API methods.
For API-based extraction, paginate every relevant connection. Retrieving the first page of products is not a complete collection export, and retrieving every product does not establish that every variant or image was retrieved.
Record the extraction time and retain the exact dataset used for each edition. That makes a published price or specification traceable later.
- Control page breaks and rendering readiness
For browser-based PDF generation, print-specific layout rules can improve pagination.
An illustrative starting point is:
@page {
size: A4;
margin: 14mm;
}
.catalog-product {
break-inside: avoid;
}
.catalog-category {
break-before: page;
}
.catalog-variant-table thead {
display: table-header-group;
}
These rules are not a complete PDF template, and support varies by rendering engine.
A product block taller than a page still needs an explicit overflow strategy. Repeated table headers and footers should be checked in the generated output, not assumed to work.
Wait for fonts and required images to load before creating the PDF. Otherwise, a document can contain fallback typography or missing photography even when the source data is correct.
For commercial printing, browser output might require additional prepress work. Confirm bleed, color, font, and PDF-format requirements with the printer.
- Add ordering details that work on paper
A clickable product name is useful in a PDF but not sufficient in a printed copy.
Give buyers a practical way to order using visible SKUs, contact details, or an ordering reference.
QR codes can connect paper to online product information, but test the printed version at its actual size.
If the destination requires a wholesale login, make that expectation clear. Do not encode credentials or sensitive customer information in a QR code.
Avoid promising live stock in a static publication. Use a publication date and a clear availability statement, or omit stock quantities when they will become outdated quickly.
If quantities are included, identify the snapshot date and the inventory scope they represent.
- Proof the document before distribution
Review data accuracy and print quality separately.
First compare product counts, SKU counts, prices, currencies, and variant options against the approved source.
Then inspect the PDF for missing images, clipped text, awkward page breaks, empty pages, unreadable tables, and inconsistent units.
Print a physical sample. A layout that looks readable on a large monitor can be difficult to use on paper.
Also verify links, QR codes, page numbers, edition details, and ordering instructions.
Produce separate screen and print versions when necessary. A small email-friendly PDF and a high-resolution print file have different priorities.
Finally, keep a release record:
Edition:
Audience:
Source snapshot:
Pricing approval:
Generation date:
Proof approved by:
Published file:
Create a new version for each release rather than silently replacing the only copy.
The recommended workflow
For most wholesale teams, the strongest starting point is a reusable template fed by a cleaned Shopify export.
Define the buyer and price context
→ Select the product range
→ Export and preserve the source
→ Normalize products and variants
→ Prepare descriptions and images
→ Generate the PDF
→ Validate prices and print quality
→ Release a dated edition
The goal is not simply to put your collection onto paper. It is to give buyers a document they can use to identify products, understand the offer, and place an accurate order without reconstructing the missing details themselves.