> ## Documentation Index
> Fetch the complete documentation index at: https://help.maestra.io/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Import Gift Card Pools

A gift card pool is a group of gift cards that share the same parameters — denomination, expiration rules, redemption behavior, and so on. Every gift card in Maestra must belong to a pool, so you create the pool first, then load cards into it.

Importing pools in bulk lets you set up many groups of cards at once instead of creating each one manually. This guide walks you through preparing the file, mapping the fields, and running the import.

<Warning>
  Pool parameters are locked in once the import finishes. You will not be able to edit them later. Double-check the file before you launch the import.
</Warning>

## Before you start

When a pool is imported, Maestra automatically creates a **technical product** for it. That product is the SKU used behind the scenes whenever a gift card from the pool is sold or redeemed at checkout. You will need three identifiers for this product in your file:

* An external product ID
* The external system the product belongs to
* The brand

Make sure those values match what your e-commerce or POS system expects, so card sales and payments line up with the correct product record.

## Step 1. Open the import

1. Go to **Loyalty → Gift Card Pools**.
2. Start a new import and choose the action **Add gift card pools**.

## Step 2. Prepare the file

The import file must be:

* `.csv` or `.txt` format
* UTF-8 encoded
* First row containing the column headers (field names)
* All mandatory fields present for every row

### File fields

| Field                                    | Required    | Type    | Values                 | Description                                                                                                                                            |
| ---------------------------------------- | ----------- | ------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Gift card pool name                      | Yes         | Text    | Any string             | Display name of the pool as it appears in the Maestra interface.                                                                                       |
| Gift card pool system name               | Yes         | Text    | Unique string          | Unique system identifier for the pool. Used later when you import the individual gift cards into this pool.                                            |
| Supports arbitrary gift card value       | Yes         | Boolean | `true`, `false`        | If `true`, each card in the pool can have its own denomination. If `false`, every card in the pool is worth the same fixed amount.                     |
| Supports partial redemption              | Yes         | Boolean | `true`, `false`        | If `true`, customers can spend a card across multiple purchases until the balance runs out. If `false`, the card must be used in a single transaction. |
| External product ID                      | Yes         | Text    | Unique string          | External ID of the technical product that will be generated for this pool.                                                                             |
| External system of the technical product | Yes         | Text    | System name            | The external system (e.g. your e-commerce platform) that owns the technical product.                                                                   |
| Brand of the technical product           | Yes         | Text    | Brand name             | Brand assigned to the technical product.                                                                                                               |
| CVV required for gift cards              | Yes         | Boolean | `true`, `false`        | If `true`, a CVV code is required to redeem cards in this pool.                                                                                        |
| Gift card value in the pool              | Conditional | Numeric | Any amount in \$       | Required only when **Supports arbitrary gift card value** is `false`. Sets the fixed denomination for every card in the pool.                          |
| Gift card expiration type                | No          | Enum    | `NoExpiration`, `Year` | Defaults to `NoExpiration`. Use `Year` if cards in the pool should expire a set number of years after issuance.                                        |
| Gift card lifetime in the pool           | No          | Integer | 1–10                   | Used only when **Gift card expiration type** is `Year`. Sets how many years a card stays valid.                                                        |

<Tip>
  Pick the **system name** carefully — it is the key you will reference when you later import the actual gift cards into this pool, and it cannot be changed afterward.
</Tip>

### Example

```csv theme={null}
pool_name,pool_system_name,arbitrary_value,partial_redemption,external_product_id,external_system,brand,cvv_required,card_value,expiration_type,lifetime
Holiday $50,holiday_50,false,true,gc-holiday-50,website,Acme,true,50,Year,2
Flexible Gift,flexible_gift,true,true,gc-flexible,website,Acme,false,,NoExpiration,
```

## Step 3. Map the fields

Upload the file. Maestra automatically matches your columns to the corresponding pool fields. Review the suggested mapping, adjust anything that didn't line up, and untick any columns you don't want to import.

## Step 4. Verify and launch

Check the preview of the parsed data, confirm everything looks right, and start the import.

## After the import

* Imported pools appear under **Campaigns → Loyalty → Gift Card Pools**.
* A technical product is created automatically for each pool and used whenever a card from that pool is sold or redeemed.
* You can now load gift cards into each pool, referencing the pool's system name.

## Handling errors

If some rows fail validation, the import skips them and continues with the rest. Open the import details to see which rows were rejected and why, fix the issues in your source file, and re-import only the corrected rows.
