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.

ColumnNotes
InitialValueThe gift card's starting balance, in your store's currency (e.g. 50.00). Required.
CodeA 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).
CustomerEmailEmail 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).
ExpiresOnThe date the card expires, YYYY-MM-DD. Blank = never expires.
NoteAn internal note. Not visible to the customer.
TemplateSuffixThe theme template suffix used to render the card online.
RecipientEmailEmail 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).
RecipientPreferredNameThe recipient's preferred name.
RecipientMessageA personalized message sent with the card.
RecipientSendNotificationAtWhen 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 reportWhat it means / what to do
row requires an InitialValueEvery row needs a positive monetary value.
InitialValue '…' is not a positive numberThe value couldn't be parsed as a number greater than zero.
Code TAKENYou 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.