# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.giftcardfactory.app/bulk-operations/import-from-file/multiple-imports-from-a-single-file.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
