> For the complete documentation index, see [llms.txt](https://docs.giftcardfactory.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.giftcardfactory.app/bulk-operations/import-from-file/multiple-imports-from-a-single-file.md).

# Multiple Imports From a Single File

You can schedule **multiple gift card imports** to run at different dates and times by adding a `scheduled_on` column to your CSV file. Optionally, you can also use a `template_id` column to override the email template per scheduled batch.

> **Where this works:** This feature is available for **gift card** [Import from File](/bulk-operations/import-from-file.md) only. It is **not** available for store credit or discount codes imports.

### **🪜 How It Works**

1. Add a `scheduled_on` column to your CSV. Rows with the same `scheduled_on` value are grouped into one scheduled import.
2. Upload the file via **Bulk Operations → Import from File**.
3. The app creates one **SCHEDULED** import per unique `scheduled_on` value, each containing the matching subset of rows.
4. A toast confirms how many scheduled imports were created (e.g. "Created 3 scheduled imports").
5. Each scheduled import appears in your Bulk Operations list and runs automatically at its scheduled time, in your **Shopify store's timezone**.

<figure><img src="/files/hwaRp3VxFFNzuYEu1Nmi" alt=""><figcaption></figcaption></figure>

### **📅 The `scheduled_on` Column**

#### Supported formats

| Format      | Example               | Notes                                                                                        |
| ----------- | --------------------- | -------------------------------------------------------------------------------------------- |
| Date only   | `2025-12-25`          | Time defaults to **12:00** (noon).                                                           |
| Date + time | `2025-12-25 14:30`    | 24-hour format.                                                                              |
| ISO 8601    | `2025-12-25T10:15:00` | Timezone offsets like `Z` or `+02:00` are accepted but ignored — the store timezone is used. |

#### Timezone

Scheduled times are interpreted in your **Shopify store's timezone** (the IANA timezone configured in your Shopify settings). Verify it before scheduling.

#### Grouping rules

* Rows with the **exact same** `scheduled_on` string are grouped together. `2025-12-25` and `2025-12-25T00:00:00` are treated as different values and create two separate imports.
* Rows with an empty `scheduled_on` are ignored.
* Rows with an unrecognized format are reported as errors and excluded from scheduling.

#### Example

```csv
initial_value,email,scheduled_on
50,customer1@example.com,2025-12-25
100,customer2@example.com,2025-12-25
75,customer3@example.com,2025-12-26 14:30
```

Result:

* One scheduled import for `2025-12-25` at 12:00 → 2 gift cards
* One scheduled import for `2025-12-26 14:30` → 1 gift card

### **✉️ The `template_id` Column (Optional)**

Add a `template_id` column to override the email template for each scheduled batch.

#### How to find a template ID

1. Go to **Email → Templates** in the app.
2. Click the template you want to use.
3. The ID is the last segment of the URL, e.g. for `…/app/templates/abc123/edit` the ID is `abc123`.

#### Behavior

* When `template_id` is present, the **sender for that scheduled batch is automatically set to App Email** — the form's sender selection is overridden.
* For each `scheduled_on` group, the `template_id` value of the **first row in that group** is used. Other rows in the same group ignore their `template_id`.
* Different `scheduled_on` groups can use different templates (one per group).
* `template_id` is only honored when `scheduled_on` is also present. Without `scheduled_on`, the form's template selection is used instead.

#### Example

```csv
initial_value,email,scheduled_on,template_id
50,c1@example.com,2025-12-25,holiday_template
50,c2@example.com,2025-12-25,holiday_template
100,c3@example.com,2026-01-01,newyear_template
```

Result: two scheduled imports — one for Christmas using `holiday_template`, one for New Year using `newyear_template`.

### **💡 Use Cases**

* **Holiday calendar** — schedule gift cards for Christmas, New Year, Valentine's, etc. in one upload.
* **Birthday rewards** — upload a list of birthdays and let each card go out on the matching date.
* **Recurring rewards** — pre-schedule monthly or quarterly gift cards.
* **Drip campaigns** — schedule cards to send on Day 1, Day 7, and Day 30 of a customer journey.

### **FAQ**

**Can I mix scheduled and immediate rows in one file?**\
No. If the file contains a `scheduled_on` column, every row must have a value in it (rows without one are ignored). To run an immediate import alongside scheduled ones, upload a separate file without the `scheduled_on` column.

**What if my date format is invalid?**\
Rows with unrecognized `scheduled_on` values are reported in the response (e.g. "Invalid date format: …") and excluded from the scheduled imports. Other rows are processed normally.

**Can I cancel or reschedule an import after uploading?**\
Yes — open the entry in Bulk Operations and abort it before it runs. To reschedule, create a new import (you can't edit a scheduled one in place).

**Do all scheduled imports share the same form settings?**\
Yes. Sender, customer-handling options, allowDownload, internal email, etc. apply to every scheduled batch from one upload. The only per-batch override is `template_id`, and it forces the sender to App Email for that batch.

**Within one scheduled date, can different rows use different templates?**\
No. Within a single `scheduled_on` group, only the first row's `template_id` is used — the rest of the rows are sent with the same template. To use different templates within the same date, use a slightly different time (e.g. `2025-12-25T09:00:00` and `2025-12-25T09:00:01`) so they become separate groups, or split into multiple uploads.

**Does this work for store credit or discount code imports?**\
No — `scheduled_on` and `template_id` columns are only supported for **gift card** Import from File.

### **✅ Tips**

* **Test with 2–3 rows first** to confirm your date format is parsed as expected.
* **Use ISO 8601** (`2025-12-25T10:00:00`) when in doubt — it's unambiguous.
* **Verify your store timezone** in Shopify settings before scheduling.
* **Use descriptive template names** (`Holiday_2025`, `Birthday_Reward`) to make `template_id` easy to identify.
