Articles on: Pareto - Quantity Breaks

Import offers

Import Campaigns Using CSV


Use Import Campaigns to bulk create discount campaigns in Pareto by uploading a CSV file. Each offer type has its own template, so you can quickly create One Discount, Buy X Get Y, Bundle, or Order discount campaigns without manual setup.


In this article



Step 1: Choose the import type


  1. Open Pareto - Quantity Breaks in your Shopify admin
  2. Go to Offers
  3. Click Import
  4. In Select the type of import you would like to perform, choose the offer type that matches your campaign


Import campaigns dialog in Pareto showing the import type dropdown set to One discount for multiple savings, a Download sample CSV link, an Add files upload area, and Upload and preview button


You can import the following offer types, each with its own CSV template:


  • One discount for multiple savings: one primary discount that can stack a free gift, a cross-sell discount, free shipping, and an order-level discount.
  • Buy X Get Y: reward shoppers with discounted or free items when they buy qualifying products or spend an amount.
  • Bundles: group products into a fixed bundle, a single combined bundle product, or add-on offers.
  • Order discount: order-level discounts based on amount, quantity, or weight, with optional free shipping or free gift.


Choose the import type that matches your campaign structure. The CSV template format is different for each type.


Step 2: Download the correct CSV template


  1. Click Download sample CSV for the selected import type
  2. Open the file using Google Sheets, Excel, or Numbers
  3. Do not rename or remove any column headers


Each template has a comment row under the header that explains every column. Keep that row for reference while editing, then delete it before you import. Invalid or missing columns will cause import errors.


Step 3: Fill in the CSV


These rules apply to every template:


  • One campaign per block. The first row of a campaign carries the campaign-level fields (name, type, customer targeting). Leave campaign_name empty on the rows directly below to add more tiers, products, or gifts to that same campaign.
  • campaign_name is required on the first row of each campaign.
  • display_name is optional and is read from the first row only. Leave it empty to reuse the campaign name.
  • Enter IDs as numbers, comma separated. For variant fields, a non-numeric value is matched to a variant by SKU.
  • customer_tag is required when customer_assign is 1 or 3.
  • Do not leave required fields empty and do not add extra columns.


After filling the template, continue to the field reference for your offer type below, then upload the file.


Step 4: Upload the CSV file


  1. Return to the Import campaigns screen
  2. Click Add files and select your CSV file
  3. Click Upload and preview


Step 5: Review and confirm import


  1. Review detected campaigns and rules
  2. Fix any validation errors shown
  3. Click Confirm import


Step 6: Activate imported campaigns


  1. Imported campaigns are created as Inactive
  2. Open each campaign to review settings
  3. Click Activate when ready


One Discount template


Use template_one_discount.csv for a single primary discount on selected products. You can layer a free gift, a cross-sell discount, free shipping, and an order-level discount on the same campaign, and add quantity tiers by adding rows.


Fields


Column

Description

campaign_name

Unique campaign name. Required on the first row. Leave empty on continuation rows to add more tiers.

display_name

Storefront display name (optional, first row only).

product_assign

0 All products, 1 Specific variants (variant_ids), 2 Specific collections (collection_ids), 3 Specific products (product_ids).

customer_assign

0 All visitors, 1 Logged-in with tag, 2 Logged-in, 3 Without tag, 4 D2C (exclude B2B), 5 B2B.

customer_tag

Customer tag. Required when customer_assign is 1 or 3.

selected_countries

Target country codes, comma separated.

all_product_rule

How the condition is counted: all_product, each_product, each_variant, each_collection.

title_tier

Tier title label (optional). Supports the {{min_value}} placeholder.

buy_from

Minimum quantity to buy (required).

discount_value

Discount amount (number only).

discount_unit

default, percent, price, or fixed.

badge

Badge text shown on storefront (optional).

free_gift_products

Free gift, format variant_or_sku:quantity (example 7346871500886:2).

cross_products

Cross-sell items, format variant_or_sku:min:max (example 7346870354006:1:5).

cross_discount_value

Cross-sell discount amount.

cross_discount_unit

percent, price, or fixed.

free_shipping_option

no_free_shipping, all_country, or selected_country.

free_shipping_countries

Country codes for free shipping (comma separated).

order_discount_value

Order-level discount amount.

order_discount_unit

percent, price, or fixed.

product_ids / collection_ids / variant_ids

IDs based on product_assign.


Example


  • Buy 6+ Get Free Gifts: product_assign=3, buy_from=6, discount_value=10, discount_unit=percent, free_gift_products=7346871500886:2.
  • Tiered campaign: put the first tier on the campaign row (buy_from=2, discount_value=10), then add a second row with campaign_name empty and buy_from=5, discount_value=15.


Buy X Get Y template


Use template_buyxgety.csv to reward shoppers when they buy qualifying items or reach a spend amount. Add more tiers by adding rows with campaign_name empty.


Fields


Column

Description

campaign_name

Required on the first row. Empty continuation rows add more tiers.

display_name

Storefront display name (optional, first row only).

campaign_type

buy_x_get_y_quantity (count of Buy X items) or buy_x_get_y_amount (spend amount). First row only.

product_assign

Buy X target: 0 all, 1 variants, 2 collections, 3 products. First row only.

product_ids / collection_ids / variant_ids

Buy X IDs based on product_assign.

customer_assign

Customer eligibility (0 to 5, same values as other templates). First row only.

customer_tag

Required when customer_assign is 1 or 3.

selected_countries

Country codes, comma separated.

buy_from

Tier threshold: quantity of Buy X items, or spend amount.

buy_to

Tier upper bound. Empty or 0 for no upper bound.

discount_unit

Discount applied to Get Y: free, percent, price, or fixed.

discount_value

Discount amount. Empty or 0 when discount_unit=free.

get_quantity

Number of Get Y items the customer receives.

get_y_type

different (Y differs from X), least_expensive (cheapest qualifying item), or same_as_x.

get_source

Where Get Y comes from: any, collections, or products.

get_ids

Variant or SKU IDs when get_source=products, collection IDs when get_source=collections, empty for any.

multiples

1 to apply the reward per each multiple of buy_from, else 0.


Example


  • Buy 2 Get 1 Free: campaign_type=buy_x_get_y_quantity, product_assign=3, product_ids=111, buy_from=2, discount_unit=free, get_quantity=1, get_y_type=different, get_source=products, get_ids=222. Add a second row (campaign_name empty) with buy_from=4, get_quantity=2 for a higher tier.
  • Spend 100 Get Accessory 25% Off: campaign_type=buy_x_get_y_amount, buy_from=100, discount_unit=percent, discount_value=25, get_source=collections, get_ids=444.


Bundle template


Use template_bundle.csv to create bundles. Set campaign_type on the first row, then list one product per row. Continuation rows (with campaign_name empty) add more products to the bundle above.


Fields


Column

Description

campaign_name

Required on the first row. Empty continuation rows add more products to the bundle above.

display_name

Storefront display name (optional, first row only).

campaign_type

bundle (multi-product, fixed quantity each), bundle_single (combine selected products into one bundle product), or add_ons (add-on products using min/max). First row only.

customer_assign

Customer eligibility (0 to 5). First row only.

customer_tag

Required when customer_assign is 1 or 3.

selected_countries

Country codes, comma separated.

discount_unit

percent (% off), price (amount off), or fixed (final price of the whole bundle). First row only.

discount_value

Discount amount. Meaning depends on discount_unit.

bundle_title

Bundle title shown to customers. Required when campaign_type=bundle_single.

bundle_option_name

Bundle option or group name. Required when bundle_single; defaults to Bundle Package.

bundle_description

Bundle description shown to customers. Required when bundle_single.

main_product_ids

add_ons only: the main products that get add-ons. Leave empty for bundle and bundle_single.

product_id

Shopify product ID. One product per row; add more on continuation rows.

quantity

Quantity of this product in the bundle. Used for bundle and bundle_single (ignored for add_ons).

min

Minimum quantity (add_ons only).

max

Maximum quantity, 0 for no limit (add_ons only).

variant_ids

Specific variant IDs or SKUs. Leave empty to include all variants of the product.


Example


  • Starter Combo (bundle): first row discount_unit=percent, discount_value=15, product_id=7001, quantity=1, variant_ids=8001. Second row with campaign_name empty, product_id=7002, quantity=2.
  • Value Pack (bundle_single): discount_unit=fixed, discount_value=99, bundle_title=Value Pack, bundle_option_name=Choose your set, plus a product row per item.
  • Add Warranty (add_ons): discount_unit=percent, discount_value=10, main_product_ids=7001,7002, then add-on rows with product_id, min, and max.


Order discount template


Use template_order.csv for order-level discounts based on amount, quantity, or weight. Add tiers or gifts on continuation rows with campaign_name empty.


Fields


Column

Description

campaign_name

Required on the first row. Empty continuation rows add tiers or gifts.

display_name

Storefront display name (optional, first row only).

campaign_type

quantity, amount, or weight. First row only.

product_assign

Buy scope: 0 any items from the online store, 2 any items from specific collections (collection_ids). First row only.

collection_ids

Collection IDs, comma separated. Use when product_assign=2.

customer_assign

Customer eligibility (0 to 5). First row only.

customer_tag

Required when customer_assign is 1 or 3.

selected_countries

Country codes, comma separated.

buy_from

Tier threshold (order total, quantity, or weight, depending on campaign_type).

buy_to

Tier upper bound. Empty or 0 for no upper bound.

discount_value

Discount amount. Leave empty for free_shipping or free_gift.

discount_unit

percent, price, free_shipping, or free_gift.

max_discount

Maximum discount cap (only applies when multiples=1).

multiples

1 to apply the discount per each multiple of buy_from, else 0.

free_gift_mode

all (give all listed gifts) or choose (customer picks one). Only when discount_unit=free_gift.

free_gift_variant_id

Variant ID or SKU of the gift. Add more gifts on continuation rows.

free_gift_quantity

Quantity of this gift variant.

exclude_variant_ids

Variant IDs or SKUs to exclude (first row only). Requires exclude_type.

exclude_type

condition_only (excluded items do not count toward the trigger but still get the discount) or condition_and_discount (excluded items neither count nor get the discount).


Example


  • Spend & Save (amount): first row buy_from=50, discount_value=5, discount_unit=percent, max_discount=20. Second row with campaign_name empty, buy_from=100, discount_value=10.
  • Free Ship Over 150: buy_from=150, discount_unit=free_shipping (leave discount_value empty).
  • Spend 200 Get Gift: buy_from=200, discount_unit=free_gift, free_gift_mode=choose, then one row per gift variant.


Import limits and supported offer types


  • Maximum 1,000 rules per file
  • Supported via CSV: One Discount, Buy X Get Y, Bundles, and Order discount


If you need to:


  • Import an offer type not listed above
  • Import more than 1,000 rules at once
  • Migrate a large number of campaigns from another app


👉 Please contact support. Our team can help with assisted imports or custom migrations.


FAQ


Can I import more than 1,000 rules at once?


No. Each import supports up to 1,000 rules per file.
For larger imports, contact support for assistance.


Can I mix offer types in one file?


No. Each CSV file uses the template for a single offer type. Import each type with its own file.


Will imported campaigns be active automatically?


No. All imported campaigns are created as Inactive so you can review them safely before activation.


Can I leave the app while importing?


No. Please keep the app open until the import completes successfully.


What happens if I import overlapping campaigns?


Imported campaigns do not override existing active campaigns.
If multiple campaigns target the same products, Shopify discount combination rules apply.


Troubleshooting


Import fails or stops unexpectedly


  • Make sure the app remains open during import
  • Check that the CSV file is under the 1,000-rule limit
  • Retry the import with a smaller batch
  • Make sure the product information is correct


Campaign imported but discount does not apply


  • Confirm the campaign status is Active
  • Verify products, variants, or collections still exist
  • Check for conflicting discounts in checkout


CSV upload shows validation errors


  • Ensure required fields are not empty
  • Confirm IDs are numeric and comma separated, and that SKUs match existing variants
  • Make sure each campaign has its campaign-level fields on the first row
  • Make sure product assignment matches the correct ID column


Tiers, gifts, or bundle products look incorrect


  • Check that continuation rows have campaign_name empty so they attach to the campaign above
  • Review buy_from, buy_to, and multiples values
  • Confirm discount_unit and discount values are valid for the offer type


Best practices


  • Import campaigns in small batches
  • Test a single campaign before activating the rest
  • Avoid overlapping discounts on the same products
  • Keep CSV backups of successful imports

Updated on: 25/06/2026

Was this article helpful?

Share your feedback

Cancel

Thank you!