Import/export offers
Use Import/Export 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.
Export your offers to a CSV file, edit them in a spreadsheet, then re-import the file to bulk-edit your offers in one go.
In this article
- When to export offers
- How to export offers
- Choosing an offer type to export
- Edit and re-import to bulk-update offers
- Step 1: Choose the import type
- Step 2: Download the correct CSV template
- Step 3: Fill in the CSV
- Step 4: Upload the CSV file
- Step 5: Review and confirm import
- Step 6: Activate imported campaigns
- One Discount template
- Buy X Get Y template
- Bundle template
- Order discount template
- Import limits and supported offer types
- FAQ
- Troubleshooting
- Best practices
When to export offers
Exporting is the first step for bulk-editing your offers. Instead of opening and updating each campaign one by one, you can export your offers to a CSV file, make your changes in a spreadsheet, and re-import the file to apply them all at once. Exporting is also useful for keeping a backup before making changes or for reviewing your offer setup in a spreadsheet.
How to export offers
- From the Pareto app, open the Offers page.
- In the top-right corner, click Export.
- In the Export offers window, open the offer type dropdown and select the type of offer you want to export.
- Under Export as, keep Plain CSV file selected.
- Click Export. Your CSV file will download to your computer.

Choosing an offer type to export
Each export includes one offer type at a time, so check which offer type your target rule belongs to before choosing what to export. Open the dropdown in the Export offers window and choose from:
- One discount: a single discount applied to selected products (most of your quantity breaks offer should be this type).
- Buy X get Y: buy-X-get-Y campaigns, including free gifts and cross-sell offers.
- Order discounts: order-level discounts based on cart value or quantity.
- Product bundles: bundle and bought-together offers.
- Quantity breaks: legacy tiered and quantity-based volume discounts.
To export more than one type, repeat the export for each type you need.
Edit and re-import to bulk-update offers
Exporting and re-importing is the fastest way to update many offers at once.
- Export the offer type you want to update, following the steps above.
- Open the downloaded CSV file in Excel, Google Sheets, or any spreadsheet tool.
- Edit the values you want to change, such as discount amounts, quantity tiers, or offer names.
- Save the file, keeping it in CSV format.
- Back on the Offers page, click Import and upload your edited file.
Your changes apply to all the offers in the file in one step. Keep the column structure and headers of the exported file unchanged so Pareto can match your edits to the correct offers when you re-import.
Step 1: Choose the import type
- Open Pareto - Quantity Breaks in your Shopify admin
- Go to Offers
- Click Import
- In Select the type of import you would like to perform, choose the offer type that matches your campaign

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
- Click Download sample CSV for the selected import type
- Open the file using Google Sheets, Excel, or Numbers
- 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_nameempty on the rows directly below to add more tiers, products, or gifts to that same campaign. campaign_nameis required on the first row of each campaign.display_nameis 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_tagis required whencustomer_assignis1or3.- 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
- Return to the Import campaigns screen
- Click Add files and select your CSV file
- Click Upload and preview
Step 5: Review and confirm import
- Review detected campaigns and rules
- Fix any validation errors shown
- Click Confirm import
Step 6: Activate imported campaigns
- Imported campaigns are created as Inactive
- Open each campaign to review settings
- 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 |
|---|---|
| Unique campaign name. Required on the first row. Leave empty on continuation rows to add more tiers. |
| Storefront display name (optional, first row only). |
|
|
|
|
| Customer tag. Required when |
| Target country codes, comma separated. |
| How the condition is counted: |
| Tier title label (optional). Supports the |
| Minimum quantity to buy (required). |
| Discount amount (number only). |
|
|
| Badge text shown on storefront (optional). |
| Free gift, format |
| Cross-sell items, format |
| Cross-sell discount amount. |
|
|
|
|
| Country codes for free shipping (comma separated). |
| Order-level discount amount. |
|
|
| IDs based on |
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 withcampaign_nameempty andbuy_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 |
|---|---|
| Required on the first row. Empty continuation rows add more tiers. |
| Storefront display name (optional, first row only). |
|
|
| Buy X target: |
| Buy X IDs based on |
| Customer eligibility ( |
| Required when |
| Country codes, comma separated. |
| Tier threshold: quantity of Buy X items, or spend amount. |
| Tier upper bound. Empty or |
| Discount applied to Get Y: |
| Discount amount. Empty or |
| Number of Get Y items the customer receives. |
|
|
| Where Get Y comes from: |
| Variant or SKU IDs when |
|
|
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_nameempty) withbuy_from=4,get_quantity=2for 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 |
|---|---|
| Required on the first row. Empty continuation rows add more products to the bundle above. |
| Storefront display name (optional, first row only). |
|
|
| Customer eligibility ( |
| Required when |
| Country codes, comma separated. |
|
|
| Discount amount. Meaning depends on |
| Bundle title shown to customers. Required when |
| Bundle option or group name. Required when |
| Bundle description shown to customers. Required when |
|
|
| Shopify product ID. One product per row; add more on continuation rows. |
| Quantity of this product in the bundle. Used for |
| Minimum quantity ( |
| Maximum quantity, |
| Specific variant IDs or SKUs. Leave empty to include all variants of the product. |
Example
- Starter Combo (
bundle): first rowdiscount_unit=percent,discount_value=15,product_id=7001,quantity=1,variant_ids=8001. Second row withcampaign_nameempty,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 withproduct_id,min, andmax.
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 |
|---|---|
| Required on the first row. Empty continuation rows add tiers or gifts. |
| Storefront display name (optional, first row only). |
|
|
| Buy scope: |
| Collection IDs, comma separated. Use when |
| Customer eligibility ( |
| Required when |
| Country codes, comma separated. |
| Tier threshold (order total, quantity, or weight, depending on |
| Tier upper bound. Empty or |
| Discount amount. Leave empty for |
|
|
| Maximum discount cap (only applies when |
|
|
|
|
| Variant ID or SKU of the gift. Add more gifts on continuation rows. |
| Quantity of this gift variant. |
| Variant IDs or SKUs to exclude (first row only). Requires |
|
|
Example
- Spend & Save (
amount): first rowbuy_from=50,discount_value=5,discount_unit=percent,max_discount=20. Second row withcampaign_nameempty,buy_from=100,discount_value=10. - Free Ship Over 150:
buy_from=150,discount_unit=free_shipping(leavediscount_valueempty). - 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_nameempty so they attach to the campaign above - Review
buy_from,buy_to, andmultiplesvalues - Confirm
discount_unitand 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: 08/09/2026
Thank you!