Freebies Engine

Import and export offers

Export offers as CSV or a JSON offers file, and import a spreadsheet or file as drafts. Nothing is published and no codes are created.

Import a CSV

CSV import and export are on the Growth plan and up, for Admins and Owners. Bundles, upsells and display settings are not in the CSV: import creates the offer and its main rule, and you finish it in the editor.

  1. Open Import and export in the Tools menu, or use Import from CSV in the Offers menu.
  2. Select Download template to start from the right columns, or choose your own CSV file or paste it.
  3. Select Preview. Fix any row the preview marks as not importable.
  4. Select the Create button. Every row becomes a draft.
  • The file can be up to 1 MB, with up to 250 offers.
  • Rows with the same name in a row are one offer with several rewards. A name starting with # is an example row and is skipped.
  • If a name is taken, the offer imports under a new name and the results say so.
  • Codes are added on each offer's Codes tab afterwards.

Export

In the Offers menu, choose Import and export, then Export all offers for every offer in every status, one row per reward, or Export what the list shows for the current filters. A single offer's row menu has Export CSV.

Offers file (JSON)

To move offers between stores, use Offers file (JSON) on the Import and export page. Export offers file holds every offer that is not archived, with its gift tiers, selling plans and Skio tiers. On the other store, choose the file and select Preview import: items are marked Will be created, Already imported or Can't be imported. Everything is created as a draft, and importing the same file twice creates nothing the second time.

If the file's currency differs from your store's, amounts are not converted. Tick Import anyway, amounts unchanged to continue.

The CSV columns

Columns of the offers CSV
ColumnNeededWhat goes in it
offer_idNoWritten by export. Import ignores it and always creates new offers.
internal_nameYesOnly your team sees this. Rows with the same name in a row are one offer with several rewards. A name starting with # is an example row and is skipped.
public_titleNoThe discount message shoppers see. Up to 60 characters. Defaults to the name.
typeYesgift, bundle, upsell, discount, code or shipping.
templateNoWhich template the offer starts from, like gift/cart-value. Optional.
statusNoWritten by export. Imported offers are always drafts.
priorityNoWritten by export. Imported offers go to the bottom of the stacking order.
starts_atNoWhen it starts, like 2026-11-27T09:00:00-05:00. Without an offset, your store's time zone.
ends_atNoWhen it ends. Same format.
discount_tagsNoTags for your team, separated by |.
requires_codeNotrue if shoppers need a discount code. Add the codes on the offer's Codes tab after importing.
code_redemptionNocheckout_code (default) or automatic (no code needed).
condition_typeNocart_value (spend) or cart_quantity (items in the cart).
condition_value_threshold_centsNoThe amount in the smallest unit of currency_code (7500 = 75.00). For cart_quantity, the number of items.
currency_codeNoThe currency of the amounts, like USD. Defaults to your store's.
reward_typeNoproduct_gift, order_discount, product_discount or shipping_discount.
discount_typeNofree, percentage or fixed_amount.
reward_valueNoA percentage (10) or an amount in whole units of the currency (5.00).
gift_variant_gidsNoThe gift variants' Shopify IDs, separated by |. They must be in your catalog.
gift_quantityNoHow many of each gift. Default 1.
is_auto_addNotrue to add the gift automatically.
track_modeNoproduct or variant.
created_atNoWritten by export.
updated_atNoWritten by export.

Still stuck? We reply within one business day.