> For the complete documentation index, see [llms.txt](https://docs.globo.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.globo.io/pre-order/pre-order/import-and-export-offers.md).

# Import & Export offers

## Profile Import/Export (CSV)

Export your Pre-order Profiles to a CSV file, edit it, and import it back to create profiles in bulk.

<figure><img src="https://2477033452-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRtV458Onax2rMaEUV2SD%2Fuploads%2FiSnrZtvzAR6r10CKMIR2%2Fimage.png?alt=media&amp;token=fdbbc8da-8423-4428-9538-708ffc3ad86d" alt=""><figcaption></figcaption></figure>

### ⚠️ Before you import — 4 things to know

> **1. Import always creates new profiles.** It never updates existing ones, even if you re-import a file you just exported. Importing the same file twice = duplicate profiles.

> **2. One bad row can block the entire file.** Every `Product` profile needs at least one row with a `Product ID` + `Variant ID`, or a `SKU`. If any single profile in your file is missing this, **nothing in the file gets imported** — not just that one profile.

> **3. Product, Variant, and Collection IDs are checked against your real Shopify store.** Any ID that doesn't exist there is quietly dropped from the profile — it won't stop the rest of the import. This is only recorded in the app's server log, not shown to you in the import result, so double-check your profiles after importing if you're not sure every ID was real.

> **4. Only the first row of a profile carries its settings.** If your profile spans several rows (one per variant), fill in things like dates, payment, and shipping only on the **first** row — the rest are ignored.

### How rows become a profile

Rows with the same `Profile ID` are grouped into one profile. Only row 1 of the group carries the profile's settings; every row (including row 1) can add a product variant.

| Profile ID | Type    | Product ID | Variant ID | SKU   | Start date | ...                                  |
| ---------- | ------- | ---------- | ---------- | ----- | ---------- | ------------------------------------ |
| 100        | Product | 111        | 222        | ABC-1 | 2026-09-15 | *(all other settings)*               |
| 100        |         |            | 333        | ABC-2 |            | *(ignored — row 1 already set this)* |
| 100        |         |            | 444        | ABC-3 |            | *(ignored)*                          |

Tip: if a row leaves `Product ID` blank, it reuses the last `Product ID` seen above it — you only need to repeat it when it changes.

### What you get back after importing

```json
{
  "success": true,
  "message": "File imported"
}
```

* `success: false` → nothing was imported at all (see warning #2 above).
* Any Product/Variant/Collection ID that got dropped for not existing on Shopify (warning #3) is **not** listed here — it's only written to the app's server log.

### Examples

#### Example 1 — Product profile (3 variants, full payment, timed shipping)

One profile applying to 3 variants of the same product. Row 1 carries all the settings; rows 2–3 just add the extra variants (notice `Product ID` is left blank on them — it reuses `8123456789012` from row 1).

```csv
"Profile ID","Profile name",Type,"Collection name","Collection ID","Product ID","Variant ID",SKU,"Units Sold",Limit,"End quantity","Preorder status",Markets,"Start date","Show countdown for start date","End date","Show countdown for end date","Start pre-order stock","End pre-order stock","Turn ON ""Continue selling when out of stock"" when start pre-order","Turn OFF ""Continue selling when out of stock"" when stoped or disabled pre-order","Button when finished pre-order","Enable full payment","Full payment discount","Enable partial payment","Partial payment prepaid","Partial payment discount","Charge the remaining balance type","Charge the remaining balance time","Shipping type","Shipping time","Fulfilment trigger order","Inventory reserved","Custom pre-order button text","Custom sold out button text","Custom NA message","Custom message above button","Custom message bellow button","Custom pre-ordered item label","Custom comming soon text","Order tag"
5001,"Winter Jacket Preorder",Product,,,8123456789012,9123456789012,JACKET-BLK-M,,"No set","No set",Enabled,All,2026-10-01T00:00,No,2026-11-15T23:59,Yes,"Pre-Order regardless of stock levels","Unlimited stock",Yes,Yes,"Display ""Add to cart/Sold out""",Yes,15%,No,"No prepaid","No discounts",,,TIME_AFTER_CHECKOUT,"14 day(s)",SCHEDULED,ON_SALE,"Pre-order now","Sold out",,"Ships in mid-November",,Preordered,,
5001,,,,,,9123456789013,JACKET-BLK-L,,"No set","No set",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
5001,,,,,,9123456789014,JACKET-BLK-XL,,"No set","No set",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
```

What this does:

* Runs from **Oct 1** to **Nov 15, 2026**, available on all variants regardless of stock.
* Charges in **full**, with a **15% discount**.
* Ships **14 days after checkout**, fulfillment held as `SCHEDULED`, inventory reserved `ON_SALE`.
* Custom button text "Pre-order now", sold-out text "Sold out".

#### Example 2 — Collection profile

One profile applying to every product in a Shopify collection, no discount, shipped manually (no ship date tracked).

```csv
"Profile ID","Profile name",Type,"Collection name","Collection ID","Product ID","Variant ID",SKU,"Units Sold",Limit,"End quantity","Preorder status",Markets,"Start date","Show countdown for start date","End date","Show countdown for end date","Start pre-order stock","End pre-order stock","Turn ON ""Continue selling when out of stock"" when start pre-order","Turn OFF ""Continue selling when out of stock"" when stoped or disabled pre-order","Button when finished pre-order","Enable full payment","Full payment discount","Enable partial payment","Partial payment prepaid","Partial payment discount","Charge the remaining balance type","Charge the remaining balance time","Shipping type","Shipping time","Fulfilment trigger order","Inventory reserved","Custom pre-order button text","Custom sold out button text","Custom NA message","Custom message above button","Custom message bellow button","Custom pre-ordered item label","Custom comming soon text","Order tag"
5002,"Holiday Collection Preorder",Collection,"Holiday 2026",456789123456,,,,,"No set","No set",Enabled,All,2026-10-01T00:00,No,,No,"Pre-Order only when Out of Stock","Unlimited stock",Yes,Yes,"Display ""Add to cart/Sold out""",No,"No discounts",No,"No prepaid","No discounts",,,MANUAL,Manual,UNFULFILLMENT,ON_SALE,"Reserve now",,,,,,,
```

What this does:

* Applies to Shopify **collection `456789123456`** ("Holiday 2026"), not individual products.
* Starts **Oct 1, 2026**, only kicks in **when a product is out of stock** — no end date.
* No discount, no end-stock limit, shipped **manually** (`Shipping type = MANUAL`, so `Fulfilment trigger order` / `Inventory reserved` are ignored).
* Custom button text "Reserve now".

#### Example 3 — Product profile with a per-variant limit, partial payment, and a fixed release date

One profile for a single variant, capped at **100 units** (`Limit`), charging a **30% deposit now with a 10% discount**, and releasing/charging the rest on a **fixed date** rather than a relative countdown.

```csv
"Profile ID","Profile name",Type,"Collection name","Collection ID","Product ID","Variant ID",SKU,"Units Sold",Limit,"End quantity","Preorder status",Markets,"Start date","Show countdown for start date","End date","Show countdown for end date","Start pre-order stock","End pre-order stock","Turn ON ""Continue selling when out of stock"" when start pre-order","Turn OFF ""Continue selling when out of stock"" when stoped or disabled pre-order","Button when finished pre-order","Enable full payment","Full payment discount","Enable partial payment","Partial payment prepaid","Partial payment discount","Charge the remaining balance type","Charge the remaining balance time","Shipping type","Shipping time","Fulfilment trigger order","Inventory reserved","Custom pre-order button text","Custom sold out button text","Custom NA message","Custom message above button","Custom message bellow button","Custom pre-ordered item label","Custom comming soon text","Order tag"
5003,"Limited Edition Sneaker Preorder",Product,,,7234567890123,7334567890123,SNEAKER-RED-42,,100,"No set",Enabled,All,2026-11-01T00:00,Yes,2026-11-20T23:59,Yes,"Pre-Order regardless of stock levels","Unlimited stock",Yes,Yes,"Display ""Add to cart/Sold out""",No,"No discounts",Yes,30%,10%,EXACT_TIME,2026-12-15,EXACT_TIME,2026-12-15,SCHEDULED,ON_SALE,"Reserve your pair","Sold out",,,,,,SNEAKER-DROP
```

What this does:

* Only the **first 100 orders** (`Limit = 100`) can preorder this variant.
* Takes a **30% deposit now**, with a **10% discount** on the total — the remaining balance is charged on a **fixed date, Dec 15, 2026** (`Charge the remaining balance type = EXACT_TIME`).
* Ships / releases on that **same fixed date** (`Shipping type = EXACT_TIME`, `Shipping time = 2026-12-15`) — use this instead of `TIME_AFTER_CHECKOUT` when every customer ships on one release day, rather than X days after their own order.
* `Fulfilment trigger order = SCHEDULED` holds fulfillment until that release date; inventory is reserved `ON_SALE` (deducted as soon as the order is placed).
* `Charge the remaining balance type` / `time` only apply on shops with **Selling Plans** enabled — leave them blank otherwise.

> **Tip:** replace the `Product ID` / `Variant ID` / `Collection ID` above with real IDs from your store — Shopify checks these on import and drops anything it doesn't recognize (see warning #3 above).

### Column reference

Any value that doesn't match what's listed below is not an error — it's simply replaced with a safe default, so the import never breaks because of one bad cell.

#### Identify the profile & product

| Column          | Accepted values                            | If missing or invalid                                                   |
| --------------- | ------------------------------------------ | ----------------------------------------------------------------------- |
| Profile ID      | any text                                   | required — row is skipped without it                                    |
| Profile name    | any text                                   | blank → "New Profile"; very long names are shortened to 1000 characters |
| Type            | `Product`, `Collection`, or `All products` | anything else → treated as `Product` with no products attached          |
| Collection name | any text                                   | just a label, no validation                                             |
| Collection ID   | numbers only                               | invalid, or not found on Shopify → left blank                           |
| Product ID      | numbers only                               | invalid → left blank                                                    |
| Variant ID      | numbers only                               | invalid, or not found on Shopify → row is skipped                       |
| SKU             | any text                                   | used to look up the variant when Variant ID is empty                    |

#### Stock & availability

| Column                | Accepted values                                                                                                                     | If missing or invalid            |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- |
| Units Sold            | a number                                                                                                                            | invalid or negative → `0`        |
| Limit                 | a number, or `No set`                                                                                                               | invalid or negative → no limit   |
| End quantity          | a number, or `No set`                                                                                                               | invalid or negative → no limit   |
| Start pre-order stock | `Pre-Order regardless of stock levels`, `Pre-Order only when Out of Stock`, or `Pre-Order only when Shopify inventory is available` | anything else → the third option |
| End pre-order stock   | `Unlimited stock`, or a number                                                                                                      | invalid → `Unlimited stock`      |

#### Status & timing

| Column                        | Accepted values                 | If missing or invalid                                          |
| ----------------------------- | ------------------------------- | -------------------------------------------------------------- |
| Preorder status               | `Enabled` or `Disabled`         | anything else → `Disabled`                                     |
| Markets                       | `All`, or market names          | **not used on import** — profile always applies to all markets |
| Start date                    | a date, e.g. `2026-09-15T09:00` | invalid → **today's date** is used instead                     |
| End date                      | a date                          | invalid → treated as no end date                               |
| Show countdown for start date | `Yes` or `No`                   | anything else → `No`                                           |
| Show countdown for end date   | `Yes` or `No`                   | anything else → `No`                                           |

#### Continue-selling behavior

| Column                                                  | Accepted values                                                                                                                                                                                                                                                                                                                                                                              | If missing or invalid                                                                                                           |
| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| Turn ON "...continue selling..." when start pre-order   | `Yes` or `No`                                                                                                                                                                                                                                                                                                                                                                                | blank or `No` → off; anything else → on                                                                                         |
| Turn OFF "...continue selling..." when stopped/disabled | `Yes` or `No`                                                                                                                                                                                                                                                                                                                                                                                | blank or `No` → off; anything else → on                                                                                         |
| Button when finished pre-order                          | <p>one of these 3 <strong>exact</strong> phrases (case doesn't matter, but nothing else must be added or missing):<br>• <code>Display "Add to cart/Sold out"</code><br>• <code>Hide "Add to cart/Sold out". Show "Comming soon button"</code> <em>(note: "Comming" — this exact spelling, not "Coming")</em><br>• <code>Hide "Add to cart/Sold out". Show "Not available message"</code></p> | doesn't match one of the 3 phrases exactly (including blank) → falls back to the first option, `Display "Add to cart/Sold out"` |

#### Payment

| Column                                                        | Accepted values                                  | If missing or invalid                                                      |
| ------------------------------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------- |
| Enable full payment                                           | `Yes` or `No`                                    | anything else → `No`                                                       |
| Full payment discount                                         | `No discounts`, `<number>%`, or `<number>$`      | invalid → no discount; a % over 100 is capped at 100                       |
| Enable partial payment                                        | `Yes` or `No`                                    | anything else → `No`                                                       |
| Partial payment prepaid                                       | `No prepaid`, `<number>%`, or `<number>$`        | invalid → no prepaid; a % over 100 is capped at 100                        |
| Partial payment discount                                      | `No discounts`, `<number>%`, or `<number>$`      | invalid → no discount; a % over 100 is capped at 100                       |
| Charge the remaining balance type *(Selling Plan shops only)* | `MANUAL`, `EXACT_TIME`, or `TIME_AFTER_CHECKOUT` | anything else → `MANUAL`                                                   |
| Charge the remaining balance time *(Selling Plan shops only)* | a date, or `<number> day(s)/week(s)/month(s)`    | doesn't match the chosen type above → the whole setting resets to `MANUAL` |

#### Shipping

| Column                   | Accepted values                                  | If missing or invalid                                                      |
| ------------------------ | ------------------------------------------------ | -------------------------------------------------------------------------- |
| Shipping type            | `MANUAL`, `EXACT_TIME`, or `TIME_AFTER_CHECKOUT` | anything else → `MANUAL` (the two rows below are then ignored)             |
| Shipping time            | a date, or `<number> day(s)/week(s)/month(s)`    | doesn't match the chosen type above → the whole setting resets to `MANUAL` |
| Fulfilment trigger order | `UNFULFILLMENT`, `ONHOLD`, or `SCHEDULED`        | anything else → `UNFULFILLMENT`                                            |
| Inventory reserved       | `ON_SALE` or `ON_FULFILLMENT`                    | anything else → `ON_SALE`                                                  |

#### Custom messages & tag

| Column                                | Accepted values | If missing or invalid                        |
| ------------------------------------- | --------------- | -------------------------------------------- |
| Custom pre-order button text          | any text        | blank → shop's default text is shown instead |
| Custom sold out button text           | any text        | blank → shop's default text is shown instead |
| Custom NA message                     | any text        | blank → shop's default text is shown instead |
| Custom message above button           | any text        | blank → shop's default text is shown instead |
| Custom message bellow button          | any text        | blank → shop's default text is shown instead |
| Custom pre-ordered item label         | any text        | blank → shop's default text is shown instead |
| Custom comming soon text              | any text        | blank → shop's default text is shown instead |
| Order tag *(Selling Plan shops only)* | any text        | shortened to 40 characters if longer         |
