Importing Gift Cards
The Gift Cards import issues new gift cards in your store from a CSV/Excel file, a Google Sheet, or directly from another connected store.
⚠️ Gift cards are create-only. Shopify masks a card's code after it's issued, so there's no way to match an existing card to update it. Every row issues a brand-new gift card — running the same file twice issues the cards again. This is different from every other importer, which upsert (match-and-update).
Only Create (and Upsert, which behaves the same here — every row issues a card) is available. The Update, Merge and Delete operations are refused with a per-row error, since there's no card to match.
For the wizard itself — uploading, mapping, dry runs, schedules — see Importing into EcomSolo.
Columns
Only InitialValue is required; everything else is optional.
| Column | Notes |
|---|---|
| InitialValue | The gift card's starting balance, in your store's currency (e.g. 50.00). Required. |
| Code | A custom code for the card. Leave blank to let Shopify generate a secure 16-character code (recommended). Ignored on store-to-store copies (source codes are masked). |
| CustomerEmail | Email of the customer to assign the card to. Resolved to a customer in the target store — an email with no match leaves the card unassigned (the card is still issued). |
| ExpiresOn | The date the card expires, YYYY-MM-DD. Blank = never expires. |
| Note | An internal note. Not visible to the customer. |
| TemplateSuffix | The theme template suffix used to render the card online. |
| RecipientEmail | Email of the gift recipient (for cards sent as a gift). Resolved to a customer in the target store; if it doesn't match, the whole recipient block is skipped (Shopify requires a valid recipient). |
| RecipientPreferredName | The recipient's preferred name. |
| RecipientMessage | A personalized message sent with the card. |
| RecipientSendNotificationAt | When Shopify should send the card to the recipient, ISO-8601 (e.g. 2026-12-24T09:00:00Z). |
Common export headers map automatically: Value/Amount/Balance →
InitialValue, Email → CustomerEmail, Expiry Date → ExpiresOn, and so on.
How customer & recipient linkage works
Gift cards link to customers by their internal Shopify ID, which is specific to one store. So the importer links by email instead:
- CustomerEmail / RecipientEmail are looked up against the target store's customer index and resolved to that store's customer.
- An email with no matching customer is dropped — the card is still issued, just without that link. (Import your Customers first if you want the links to resolve.)
Importing from another store
On the wizard's Source step, pick From another store to copy gift cards from a connected store — no file needed:
- Each source card's remaining balance becomes the new card's initial value.
- Expiry, note, template and recipient details carry across.
- The code is not copied (Shopify masks it) — the target issues a fresh code for each card.
- Customer/recipient links are re-matched by email on the target store.
Because the import is create-only, a schedule on this source would re-issue the cards every run — use it for a one-time migration, not a recurring sync.
Results and freshness
Cards you issue take effect in Shopify immediately, and EcomSolo's Gift cards dashboard refreshes within seconds of the run.
Sample file
A ready-to-run sample lives at
features/importing/examples/gift-cards-sample.csv:
InitialValue,Code,CustomerEmail,ExpiresOn,Note,TemplateSuffix,RecipientEmail,RecipientPreferredName,RecipientMessage,RecipientSendNotificationAt
25.00,,,,,,,,,
50.00,,ada@example.com,2026-12-31,VIP welcome credit,,,,,
100.00,,,,Holiday gift,,grace@example.com,Grace,"Happy holidays!",2026-12-24T09:00:00Z
Row by row: a minimal anonymous $25 card (auto-generated code); a $50 card assigned to a customer with an expiry and note; and a $100 card sent as a gift to a recipient with a scheduled notification.
Troubleshooting
| Error in the report | What it means / what to do |
|---|---|
row requires an InitialValue | Every row needs a positive monetary value. |
InitialValue '…' is not a positive number | The value couldn't be parsed as a number greater than zero. |
Code TAKEN | You supplied a Code that already exists in the store. Leave Code blank to auto-generate. |
FAQ
Will re-importing create duplicates? Yes — unlike other importers, gift cards are create-only, so re-running issues the cards again. Import each file once.
Can I update a card's balance or code later? No. Shopify doesn't allow the value or code to change after issue (only customer, expiry, note and recipient are editable, which this importer doesn't do). Adjust balances from the Shopify admin instead.
The customer/recipient wasn't linked. That email has no matching customer in the target store. Import your Customers first, then issue the gift cards.