Documentation

Gift Lift User Guide

Everything you need to import, manage, and monitor gift cards on Shopify — step by step.

Getting Started

Everything you need to know before your first import.

What is Gift Lift?

Gift Lift is a Shopify app that lets you bulk-import, create, manage, and monitor gift cards — all through Shopify's official GraphQL Admin API. Every gift card created by Gift Lift is a standard Shopify gift card resource: it appears in your Shopify Admin, works at checkout, and can be managed like any other gift card.

Gift Lift adds capabilities on top of Shopify's built-in gift card tools: batch CSV imports with thousands of rows, a pre-flight validator, customer auto-assignment, a live health dashboard, expiry reminders, and scheduled health report emails.

Requirements

  • A Shopify store with gift cards enabled (Shopify Basic plan or above — Shopify Lite does not support gift cards)
  • Shopify Admin access with permission to install apps
  • Gift Lift installed from the Shopify App Store
  • Onboarding completed — Gift Lift will prompt you on first launch

Completing Onboarding

When you first open Gift Lift, you will see a brief onboarding screen. Complete it to activate the app for your store. Once onboarding is marked complete, Gift Lift sends a welcome email to your store owner address and unlocks all features for your current plan.

Store owner email
Gift Lift sends all owner notifications (import alerts, health reports, bulk create summaries) to the email address configured as your Shopify store owner. Verify this address in Shopify Admin → Settings → Store details.

Navigating the App

PageWhat it does
Gift Cards (CSV Import)Upload a CSV file, validate rows, run imports, monitor progress, view history and reports.
Create Gift CardsGenerate individual or small-batch gift cards instantly from a form — no CSV required.
Gift Card ManagerView, search, and manage gift cards — update balances, disable cards, view audit history.
Gift Card Assignment ManagerAssign or remove customer links from existing gift cards in bulk or individually.
DashboardLive health score, expiry risk buckets, redemption breakdown, and portfolio totals.
Expiry RemindersSend reminder emails to customers whose gift cards are nearing expiry.
SettingsConfigure health report email frequency, test-send a report, manage plan.
PlansCompare and upgrade your Gift Lift subscription.

CSV Import

The core feature of Gift Lift — upload a spreadsheet and create gift cards at scale.

Gift Lift processes your CSV entirely through Shopify's GraphQL API. Each row in your file creates one gift card using the giftCardCreate mutation. The import runs sequentially, one row at a time, so you get individual success/failure status for every single card.

Preparing Your File

Your CSV must be a plain comma-separated file saved in UTF-8 encoding. Most spreadsheet apps (Excel, Google Sheets, Numbers) can export to this format. The first row must be a header row — column names are case-insensitive and spaces are ignored.

Excel and scientific notation
Excel automatically converts long numeric strings like 1234567890123456 into scientific notation (1.23E+15), which breaks gift card codes. Prevent this by prefixing the cell value with an apostrophe: 'GIFTCODE123. Gift Lift automatically strips the apostrophe during import, so the actual code created will be GIFTCODE123 without the prefix.
Google Sheets recommended
Google Sheets exports clean UTF-8 CSV files without the scientific notation problem and is generally the most reliable source format for Gift Lift imports.

Column Reference

Two columns are required. All others are optional and can be omitted entirely or left blank per row.

Required
ColumnFormatRulesExample
CodePlain text8–20 characters, alphanumeric only (A–Z, a–z, 0–9). No spaces, hyphens, underscores, or special characters. Case-insensitive — Shopify stores codes as uppercase. Must be globally unique within your Shopify store — duplicate codes will fail with an API error. Must also be unique within the file itself (duplicates are caught at validation).GIFT2025ABC
AmountPositive decimalMust be a number greater than 0. Maximum is $2,000 USD or the equivalent in your store's currency (Shopify API limit). Do not include a currency symbol ($, ) or thousands separators (,). Your store's default operating currency is applied automatically — never add a currency column.50.00
Optional
ColumnFormatDetailsExample
NotePlain textAn internal admin note attached to the gift card. Visible only to store administrators in Shopify Admin. Never displayed to customers on the storefront, in checkout, or in any email. Maximum length is 255 characters.Holiday promo Q4 2025
ExpiresOnYYYY-MM-DDExpiry date in ISO 8601 date format. Leave blank or omit the column entirely for cards that never expire. Note: some jurisdictions (e.g. California, EU) legally prohibit or restrict gift card expiry dates. Shopify may override the date you provide to remain compliant with local law.2026-12-31
CustomerEmailEmail addressAssigns the gift card to a customer found by this email address. If found, Shopify sends a native gift card notification email. If not found, Gift Lift auto-creates a Shopify customer account and Shopify sends an account invitation email (gift card notification is skipped to avoid sending two emails). Takes priority over CustomerID when both columns are present.alice@example.com
CustomerIDNumeric or GIDAssigns the gift card to an existing customer found by their Shopify customer ID. Accepts plain numeric (7291034) or full GID format (gid://shopify/Customer/7291034). If the ID is not found, the gift card is created without any customer assignment — no auto-create from an ID. Used only when CustomerEmail is absent or blank.7291034

Example CSV with all columns:

CSV
Code,Amount,Note,ExpiresOn,CustomerEmail
GIFTABC001,50.00,Holiday promo,2026-12-31,alice@example.com
GIFTABC002,100.00,Corporate order,,bob@example.com
GIFTABC003,25.00,,,
GIFTABC004,75.00,No expiry - no customer,,

Running an Import

1
Navigate to Gift Cards
Open Gift Lift and click Gift Cards in the sidebar. This is the main import page.
2
Upload your CSV
Click Upload CSV and select your file. Gift Lift parses the file entirely in your browser using PapaParse — the raw CSV data is never uploaded to a server at this stage. You will see a summary: row count, detected columns, and a preview of the first few rows.
3
Run pre-flight validation (Dry Run)
Click Validate File. Gift Lift checks every row for formatting errors — code length, alphanumeric characters, amount range, date format, and duplicate codes within the file. No Shopify API calls are made during validation. When complete, a summary shows how many rows are valid and how many have errors. Download the validation report CSV for a full row-by-row breakdown.
4
Fix errors (if any)
Open the validation report, fix the flagged rows in your spreadsheet, and re-upload. Only rows marked INVALID need to be changed — valid rows are not affected.
5
Start the import
Click Import Valid Gift Cards. Gift Lift begins calling Shopify's giftCardCreate mutation for each valid row. Invalid rows are automatically skipped. A real-time progress bar shows cards created vs total. You can leave the page on Starter+ plans — the import continues in the background.
6
Monitor progress
The progress bar updates in real time. Each card shows SUCCESS or ERROR as it completes. If a customer column is present, Gift Lift looks up the customer and assigns the card immediately after creation.
7
Download the import report
When the import finishes, an import report CSV is automatically generated and stored in AWS S3. Click Download Report to save it. The report contains every row with its outcome, Shopify Gift Card ID, and any error message.

Import Report

After every completed import (including cancelled ones), Gift Lift generates a full per-row CSV report. The report is stored securely in AWS S3 and accessible from your import history.

Report ColumnDescription
CodeThe gift card code from your CSV row.
StatusSUCCESS or ERROR.
DetailsFor SUCCESS rows: the Shopify Gift Card GID (gid://shopify/GiftCard/…). For ERROR rows: the exact error message returned by Shopify's API.
AssignedCustomerIDThe Shopify customer GID if the card was assigned to a customer. Blank if unassigned.
Re-importing failed rows
When re-uploading to fix failed rows, create a new CSV containing only the failed rows. Never re-upload the original full file — rows that succeeded in the first import will fail again with a "duplicate code" error because those gift cards already exist in your store.

Pre-Flight Validation

A local dry-run that catches formatting errors before a single Shopify API call is made.

The pre-flight validator runs entirely in your browser. It simulates the import against Gift Lift's own rules without contacting Shopify. This is the fastest way to ensure your file is clean before committing to a real import.

What Validation Checks

  • Code length: Must be 8–20 characters. Codes shorter than 8 or longer than 20 are rejected.
  • Code characters: Only alphanumeric characters (A–Z, a–z, 0–9) are allowed. Spaces, hyphens, underscores, and special characters are flagged.
  • Amount range: Must be a positive number greater than 0. The maximum is $2,000 (Shopify's API limit). Negative, zero, and non-numeric amounts are rejected.
  • Expiry date format: If ExpiresOn is provided, it must match YYYY-MM-DD format. Incorrectly formatted dates are flagged.
  • In-file duplicate codes: Codes that appear more than once within the same CSV file are flagged on every occurrence.
  • Missing required fields: Rows with no Code or no Amount are flagged as incomplete.

What Validation Cannot Check

  • Global code uniqueness: Validation cannot check whether a code already exists in your Shopify store. A code that passes validation can still fail at import time with a "duplicate code" error if it was previously created in your store by any method.
  • Customer existence: Validation does not verify whether CustomerEmail or CustomerID values correspond to real customers in your store.
  • API availability: Shopify outages or temporary rate-limit states are not detectable during validation.
Always validate before importing
Running the dry-run before every import takes seconds and prevents wasted API calls. A validation report is generated immediately after validation completes — download it even if all rows pass, as it serves as a pre-import audit trail.

Validation Report

The validation report is a CSV file with one row per input row. Columns include the original Code, Amount, and all other fields, plus a Status column (VALID or INVALID) and a Reason column explaining any error. Use this report to identify and fix issues before re-uploading.

Pause, Resume & Cancel

Full control over long-running imports — available on Starter+.

Pausing an Import

Click Pause at any time during an active import. Gift Lift saves a checkpoint immediately: the number of rows already processed and the remaining unprocessed row data are persisted to the database. The import stops cleanly after the current row finishes — it does not interrupt a row mid-mutation.

All gift cards created before the pause remain active in your Shopify store. The pause state persists across browser sessions — you can close the app, log out, or even switch devices and the import will still be paused when you return.

Resuming an Import

Click Resume on the Gift Cards page. Gift Lift loads the saved checkpoint and picks up from the exact next unprocessed row. No rows are re-processed — the system uses the checkpoint row count to skip everything that was already successfully sent to Shopify.

Safe to resume multiple times
You can pause and resume the same import as many times as needed. Each resume continues from where the previous pause stopped. The checkpoint is updated atomically on each pause, so there is no risk of processing the same row twice.

Cancelling an Import

Click Cancel to permanently stop an import. Gift Lift processes the current row, then stops. All gift cards created before cancellation remain active in your Shopify store — cancellation does not undo or delete any created cards.

An import report is generated at cancellation showing all rows processed up to that point, including their SUCCESS/ERROR status. Rows not yet processed are omitted from the report.

Cancellation is permanent
A cancelled import cannot be resumed. If you need to process the remaining rows, upload them as a new CSV file. Use the original import report to identify which codes were already created so you do not re-upload them.

Background Processing

On Starter+, imports run server-side after you click Import. You can safely close the browser tab, and the import will continue processing. When you return to Gift Lift, the progress and status will reflect the current state of the background import.

Quick Create

Generate gift cards instantly from a form — no CSV or spreadsheet required.

Quick Create is designed for small batches: promotional giveaways, prizes, customer rewards, or ad-hoc card generation. Set the card parameters once, choose a quantity, and Gift Lift creates all cards in one click. Cards are active in your store within seconds.

All codes created via Quick Create are stored permanently in Gift Lift's encrypted database, so you can always return to view and export them — unlike Shopify Admin, which only shows the last 4 characters of each code after creation.

Card Settings

FieldDescriptionPlan Limit
AmountFace value in your store's default currency. Must be a positive number. Applied to every card in the batch.All plans
QuantityNumber of cards to create in this session. Each card gets a unique randomly generated code.1 (Basic) · 100 (Starter) · 500 (Intermediate) · Unlimited (Professional)
Code PrefixOptional 1–4 character prefix added to the start of every code in the batch. Alphanumeric only. E.g. PROMO → PROMOABCD1234.All plans
Code LengthTotal code length including the prefix. Choose from 8, 12, 16, or 20 characters. 16 is recommended for security. The random portion fills the remaining characters after the prefix.All plans
ExpiryNone (never expires), Relative (N days / weeks / months / years from today — all cards get the same expiry date), or Fixed (a specific calendar date applied to all cards).All plans
Internal NoteAn optional admin-facing note attached to every card in the batch. Never visible to customers.All plans
Code uniqueness
Gift Lift guarantees uniqueness within the same batch using an in-memory set. If Shopify rejects a code because it already exists in your store (from a previous batch or any other source), that card fails with an error — the rest of the batch continues unaffected.

Send to Customers Intermediate+

On Intermediate and Professional plans, you can send gift cards directly to customer email addresses as part of the creation step. Enter email addresses in the Send to Customers field — one per card, comma-separated or one per line — before clicking Create.

Emails are matched to cards in order: the first email goes to the first card created, the second email to the second card, and so on. You can enter fewer emails than cards — unmatched cards are created without sending.

ScenarioWhat happens
Email matches an existing customerGift card assigned to that customer. Shopify sends the customer a native gift card notification email.
Email not found in your storeGift Lift auto-creates a Shopify customer account. Shopify sends an account invitation email. The gift card notification is skipped to avoid sending two emails.
Email field left blankGift cards are created without any customer assignment. No emails sent. Cards can be sent later via the Assignment Manager.
Email is invalid formatBlocked before submission — the email field shows a validation error and the Create button is disabled.

Export & Security

The All Created Cards table shows all cards ever created via Quick Create for your store, with full search and pagination (50 per page). The table is searchable by code, email, amount, or status. Use the Show full codes toggle to reveal complete codes when needed.

Click Export Gift Cards to download a CSV containing all cards for your store. Columns: Shopify ID, Code, Amount, Currency, Expiry, Note, Status, Sent To, Error, Created At. Shopify IDs and codes are prefixed with an apostrophe to prevent Excel from converting them to scientific notation.

AES-256-GCM encryption
All gift card codes created via Quick Create are stored in Gift Lift's database using AES-256-GCM encryption with a unique random initialization vector per code. This means that even if someone gained unauthorized access to the database, they would see only encrypted ciphertext — not the actual gift card codes. Codes are decrypted on the server only when loaded by an authenticated session.

Merchant Summary Email Intermediate+

After each Quick Create batch completes, Gift Lift sends a summary email to your store owner address. The email includes: total cards attempted, cards successfully created, any failures, customers assigned and notified, total value created, and a 48-hour download link for the batch CSV export.

Customer Assignment

Link gift cards to Shopify customers to enable native notification emails and balance tracking.

Via CSV Import

Add a CustomerEmail or CustomerID column (or both) to your CSV to assign each gift card to a customer at import time. When both columns are present for the same row, CustomerEmail takes priority.

ScenarioGift Lift actionEmails sent to customer
CustomerEmail found in storeCard assigned to existing customer via giftCardUpdate. giftCardSendNotificationToCustomer triggered.1 — Shopify gift card notification
CustomerEmail not found in storeNew Shopify customer account auto-created. Card assigned. Shopify sends account invitation email. Gift card notification skipped.1 — account invitation only
CustomerID found in storeCard assigned to existing customer. giftCardSendNotificationToCustomer triggered.1 - gift card notification
CustomerID not found in storeGift card created without any customer link. No auto-create from an ID alone.0 - no email
No customer columns presentGift card created without assignment. No customer lookup performed.0 - no email
To send zero customer emails
Remove both the CustomerEmail and CustomerID columns from your CSV entirely. Gift cards will be created as unassigned — no customer lookup, no notification, no account creation.

Assignment Manager Intermediate+

The Gift Card Assignment Manager is a dedicated page for managing customer links across all gift cards in your Shopify store — without touching a CSV. Accessible from the sidebar as Gift Card Assignment Manager.

Browsing & Filtering

  • View all cards: See every gift card with its balance, currency, active/disabled status, expiry date, and assigned customer.
  • Filter tabs: Switch between All, Assigned, and Unassigned with instant client-side filtering.
  • Search by code: Search by the last 4 characters of a gift card code using Shopify's API. Results load 50 per page.
  • Export: Download the current filtered view as a CSV with columns: Gift Card ID, Balance, Status, Expiry, Customer ID, Customer Name, Customer Email.

Assigning Customers

1
Select a gift card
Click the checkbox next to one or more gift cards, or click Assign on a single card row.
2
Search for a customer
Type a customer name or email into the search field. Results from your Shopify store appear in a dropdown in real time using a debounced GraphQL query.
3
Toggle notification
Use the notification toggle to control whether Shopify sends the customer a gift card notification email on assignment. When on, giftCardSendNotificationToCustomer is called. When off, the assignment is silent.
4
Confirm
Click Assign. Gift Lift calls giftCardUpdate to link the customer and (if toggled) fires the notification. The table updates immediately.

Bulk Operations

  • Bulk assign: Select multiple cards using checkboxes, then click Assign to Customer from the bulk action bar to assign all selected cards to one customer at once.
  • Bulk remove: Select multiple cards and click Remove Assignment to unlink all selected cards from their current customers. Cards remain active — only the customer link is removed.
Removal does not notify customers
Removing a customer assignment does not trigger any email to the customer. The gift card remains active and usable. The removal is recorded in Gift Lift's internal audit log.

Health Dashboard All Plans

A live portfolio overview that gives you an instant signal on the health of your gift card program.

The Health Dashboard scans up to 5,000 active gift cards via Shopify's GraphQL API and computes a comprehensive set of metrics in real time. It auto-refreshes every 5 minutes — a countdown timer is shown on the page. You can also trigger a manual refresh at any time.

Health Score (0–100)

The health score is a single composite number that summarizes the overall risk level of your gift card portfolio. It starts at 100 and deductions are applied based on risk signals:

Risk signalDeduction
Cards expiring within 7 days−5 per card, max deduction −30
More than 10% of cards expire within 30 days−7
More than 20% of cards expire within 30 days−15 (instead of −7)
More than 40% of cards are unassigned (no customer)−10
More than 60% of cards are unassigned−20 (instead of −10)
More than 50% of cards have never been redeemed−7
More than 70% of cards have never been redeemed−15 (instead of −7)
Any cards expired during the current calendar month−5
Score rangeRating
85–100Excellent
70–84Good
50–69Fair
30–49At Risk
0–29Critical

Metrics Tracked

  • Total active cards: All enabled, non-zero-balance gift cards. Capped at 5,000 for performance.
  • Outstanding liability: The total value of all active card balances — the sum your store owes customers.
  • Expiry risk buckets: Cards expiring within 7 / 30 / 60 / 90 days, with total value at risk and assigned/unassigned split for each window.
  • Redemption breakdown: Never redeemed (full balance), partially used (some balance spent), fully redeemed (zero balance remaining).
  • Assignment rate: Percentage of active cards linked to a Shopify customer.
  • Expired this month: Cards whose expiry date fell within the current calendar month and their total lapsed value.
  • Average balances: Average remaining balance and average initial card value across the portfolio.

Expiry Reminders Starter+

Automatically notify customers whose gift cards are approaching their expiry date.

Expiry reminders are a direct way to reduce abandoned gift card value. When a customer receives a reminder before their card expires, they are more likely to use it — recovering revenue that would otherwise be lost.

How It Works

1
Choose a time window
Select the expiry window: 7, 30, 60, or 90 days. Gift Lift will target all cards expiring within that window.
2
Preview the send list
Gift Lift shows how many cards match and how many have an assigned customer (and thus an email address to send to). Unassigned cards are excluded.
3
Send reminders
Click Send Reminders. Gift Lift sends a reminder email to each eligible customer via your store's Shopify email system.

Eligibility Rules

  • Only cards linked to a Shopify customer with a valid email address receive reminders.
  • Unassigned cards (no customer link) are never included, regardless of their expiry date.
  • Cards with no expiry date (ExpiresOn is null) are never included.
  • A reminder for the same card within the same time window will not be re-sent if one was already sent recently (tracked in Gift Lift's send history).

Plan Limits

PlanMax reminders per send
BasicNot available
Starter100
Intermediate500
ProfessionalUnlimited

Health Report Emails Intermediate+

Scheduled digest emails delivering a full snapshot of your gift card portfolio health.

Health report emails are sent to your store owner address via AWS SES on a schedule you control. Each report contains a complete health snapshot so you can track trends in your gift card program without manually visiting the dashboard.

What Each Report Contains

  • Health Score badge: The 0–100 composite score with its colour-coded rating (Excellent, Good, Fair, At Risk, Critical).
  • Period-over-period trends: Up/down arrows comparing every metric against the previous report in the same frequency cycle. Appears after the second report send.
  • 4-column metric summary: Active cards, outstanding liability, redemption rate, and assignment rate — with trend arrows.
  • Expiry risk table: 7 / 30 / 60 / 90-day windows with card counts, total value at risk, and assigned/unassigned splits per window.
  • Redemption breakdown: Never-redeemed, partially-used, and fully-redeemed counts and values.
  • Expired this month: How many cards expired and their total lapsed value.

Frequency Options

PlanAvailable frequencies
IntermediateMonthly only
ProfessionalWeekly, bi-weekly, or monthly

Configuration & Test Send

1
Open Settings
Navigate to Settings in the Gift Lift sidebar.
2
Enable health reports
Toggle Health Report Email to On.
3
Select frequency
Choose monthly (Intermediate) or weekly / bi-weekly / monthly (Professional).
4
Save preferences
Click Save. Gift Lift will send the first report on the next scheduled interval.
5
Test send (optional)
Click Send Test Report to immediately send a report to your store owner email. This does not affect the schedule or trend snapshots.
Test send behaviour
A test send delivers your current portfolio snapshot immediately. It does not save a trend snapshot, does not reset the schedule timer, and does not count as your periodic send.

Gift Card Management Starter+

Update balances and disable gift cards directly from Gift Lift.

The Gift Card Manager page lets you search, view, and take administrative actions on individual gift cards without leaving Gift Lift. All actions call Shopify's official API mutations and are logged to an audit trail.

Balance Updates

You can add to or deduct from a gift card's current balance. Gift Lift uses Shopify's giftCardUpdate mutation to apply the change. Use cases: correct an incorrect initial amount, issue a partial refund as additional balance, or reduce balance for a manual redemption recorded outside of Shopify.

Balance limits
A gift card's balance cannot be raised above $2,000 (Shopify's API limit). Deductions cannot reduce the balance below zero. Gift Lift validates these limits before sending the mutation.

Disabling Cards

Disabling a gift card via giftCardDeactivate permanently deactivates it. A disabled card cannot be used at checkout, cannot be re-enabled, and will not appear in your store's active gift card list. Use this for lost, stolen, or fraudulent codes.

Permanent action
Disabling a gift card is irreversible through Gift Lift and through Shopify Admin. Confirm the card ID before proceeding.

Audit Log

Every balance update and disable action is recorded in Gift Lift's audit log with: the action type, the masked card code (last 4 characters), old and new values, the timestamp, and (for balance changes) the delta amount. The audit log is accessible from the Gift Card Manager page and is ordered newest-first.

Session Limits by Plan

PlanCards manageable per session
BasicNot available
StarterUp to 100
IntermediateUp to 500
ProfessionalUnlimited

Email Notifications

Automatic emails sent to your store owner address for key events.

All owner notification emails are sent via AWS SES from Gift Lift's notification system. They are separate from customer-facing Shopify emails. All emails are sent to the store owner email configured in Shopify Admin.

EmailTriggerAvailability
WelcomeSent once when you complete Gift Lift onboarding for the first time.All plans
Import startedSent when you begin a new CSV import (background processing).Starter+
Import completedSent when an import finishes with file name, total rows, success count, and error count.Starter+
Import pausedSent when you pause an import — includes progress percentage and rows remaining.Starter+
Import cancelledSent when you cancel an import — includes final row counts and a reminder to download the partial report.Starter+
Bulk create summarySent after every Quick Create batch — includes stats and a 48-hour CSV download link.Intermediate+
Health reportScheduled health dashboard snapshot — weekly, bi-weekly, or monthly.Intermediate+
Customer notification emails
Emails sent to customers (gift card notification, account invitation) are sent by Shopify's native email system using Shopify's own notification templates — not by Gift Lift. Gift Lift only triggers them via API. You cannot customize the content of these emails from Gift Lift; use Shopify Admin → Notifications to customize those templates.

Plans & Limits

All Gift Lift features and their availability by plan.

FeatureBasic (Free)Starter ($15)Intermediate ($25)Professional ($35)
CSV rows per import105001,000Unlimited
Quick Create per session1 card100 cards500 cardsUnlimited
Quick Create email sendYesYes
Pre-flight validationYesYesYesYes
Health DashboardYesYesYesYes
Pause & ResumeYesYesYes
Cancel importYesYesYes
Background processingYesYesYes
Import email notificationsYesYesYes
Expiry Reminders (per send)100500Unlimited
Manage Gift Card Balances100/session500/sessionUnlimited
Assignment ManagerYesYes
Health Report EmailsMonthlyWeekly / Bi-weekly / Monthly
Bulk create summary emailYesYes
AES-256 code encryptionYesYesYesYes

Plans are billed monthly through Shopify Billing. Upgrade, downgrade, or cancel anytime from the Plans page inside Gift Lift or from Shopify Admin → Apps.

Troubleshooting

Solutions to the most common issues merchants encounter.

A gift card code that passed validation failed during import with 'Duplicate code'.
The pre-flight validator checks for duplicate codes within your file, but cannot check codes that already exist in your Shopify store from a previous import, manual creation, or another app. Gift Lift's validator has no way to query your full store gift card list. To find the existing card: go to Shopify Admin → Gift cards and search for the code. If you need a new card with the same value, generate a new unique code.
Import error: 'Maximum gift card value exceeded'.
Shopify enforces a maximum gift card initialValue of $2,000 USD (or the equivalent in your store's currency at the time of creation). Rows exceeding this limit cannot be created via the API — this is a Shopify platform-level constraint and cannot be overridden. Split high-value cards into multiple lower-value cards if needed.
My CSV file is not being parsed or the columns are not detected.
Check that your file is a plain .csv file with comma delimiters and UTF-8 encoding. Export from Google Sheets or use your spreadsheet app's "Save as CSV (UTF-8)" option. If you exported from Excel for Windows, the default encoding may be Windows-1252 — re-save explicitly as UTF-8. Also ensure the first row is a header row with column names, not data.
The import is very slow for large files.
Gift Lift creates one gift card per Shopify API call, in sequence. This is intentional — it gives per-row accuracy for reports and error handling. Shopify's GraphQL API uses a leaky-bucket rate limit (1,000-point capacity, 50 points restored per second). Gift Lift manages throttling automatically with back-off delays. A 1,000-row import typically takes 5–15 minutes depending on your Shopify plan and API response times. Use the background processing feature (Starter+) so you can leave the page.
A customer was not assigned to their gift card even though I included CustomerEmail.
Check the import report's Details and AssignedCustomerID columns for the affected rows. Common causes: (1) the email address had a typo; (2) a Shopify API error occurred during the customer lookup mutation; (3) the customerCreate mutation failed (e.g. the email format was invalid). The gift card itself is created regardless of assignment errors — only the customer link fails.
Health Dashboard shows 0 cards or appears blank.
The dashboard fetches data fresh from Shopify on load. If it shows 0 cards: (1) wait 10–15 seconds and click Refresh — the first load may take longer due to Shopify API latency; (2) confirm your store actually has active gift cards (Shopify Admin → Gift cards); (3) the dashboard only counts active, non-zero-balance cards — disabled or fully-redeemed cards are excluded.
I am not receiving email notifications.
Verify the store owner email in Shopify Admin → Settings → Store details — that is the address Gift Lift sends all notifications to. Check your spam/junk folder for emails from your Gift Lift sending address. Notifications also require AWS SES credentials to be properly configured in the app environment — contact support if the issue persists.
The export CSV has codes that look like numbers in scientific notation.
The export CSV prefixes all codes and Shopify IDs with an apostrophe (') to prevent Excel from auto-converting them. If your codes still appear as scientific notation, ensure you are opening the CSV in Excel by importing it as text rather than double-clicking it. In Excel: Data → Get External Data → From Text, and set the Code and Shopify ID columns to Text format during import.
Can I import gift cards that were already created in Shopify Admin?
No. Gift Lift creates new gift cards — it cannot import records for cards that already exist in Shopify. If a code from your CSV matches a code already in your store, Shopify will reject it with a duplicate code error. Gift Lift does not have a feature to 'sync' or update existing Shopify gift cards from a CSV.