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.
Navigating the App
| Page | What it does |
|---|---|
| Gift Cards (CSV Import) | Upload a CSV file, validate rows, run imports, monitor progress, view history and reports. |
| Create Gift Cards | Generate individual or small-batch gift cards instantly from a form — no CSV required. |
| Gift Card Manager | View, search, and manage gift cards — update balances, disable cards, view audit history. |
| Gift Card Assignment Manager | Assign or remove customer links from existing gift cards in bulk or individually. |
| Dashboard | Live health score, expiry risk buckets, redemption breakdown, and portfolio totals. |
| Expiry Reminders | Send reminder emails to customers whose gift cards are nearing expiry. |
| Settings | Configure health report email frequency, test-send a report, manage plan. |
| Plans | Compare 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.
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.Column Reference
Two columns are required. All others are optional and can be omitted entirely or left blank per row.
| Column | Format | Rules | Example |
|---|---|---|---|
| Code | Plain text | 8–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 |
| Amount | Positive decimal | Must 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 |
| Column | Format | Details | Example |
|---|---|---|---|
| Note | Plain text | An 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 |
| ExpiresOn | YYYY-MM-DD | Expiry 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 |
| CustomerEmail | Email address | Assigns 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 |
| CustomerID | Numeric or GID | Assigns 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:
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
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.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 Column | Description |
|---|---|
| Code | The gift card code from your CSV row. |
| Status | SUCCESS or ERROR. |
| Details | For SUCCESS rows: the Shopify Gift Card GID (gid://shopify/GiftCard/…). For ERROR rows: the exact error message returned by Shopify's API. |
| AssignedCustomerID | The Shopify customer GID if the card was assigned to a customer. Blank if unassigned. |
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.
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.
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.
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
| Field | Description | Plan Limit |
|---|---|---|
| Amount | Face value in your store's default currency. Must be a positive number. Applied to every card in the batch. | All plans |
| Quantity | Number of cards to create in this session. Each card gets a unique randomly generated code. | 1 (Basic) · 100 (Starter) · 500 (Intermediate) · Unlimited (Professional) |
| Code Prefix | Optional 1–4 character prefix added to the start of every code in the batch. Alphanumeric only. E.g. PROMO → PROMOABCD1234. | All plans |
| Code Length | Total 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 |
| Expiry | None (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 Note | An optional admin-facing note attached to every card in the batch. Never visible to customers. | All plans |
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.
| Scenario | What happens |
|---|---|
| Email matches an existing customer | Gift card assigned to that customer. Shopify sends the customer a native gift card notification email. |
| Email not found in your store | Gift 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 blank | Gift cards are created without any customer assignment. No emails sent. Cards can be sent later via the Assignment Manager. |
| Email is invalid format | Blocked 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.
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.
| Scenario | Gift Lift action | Emails sent to customer |
|---|---|---|
| CustomerEmail found in store | Card assigned to existing customer via giftCardUpdate. giftCardSendNotificationToCustomer triggered. | 1 — Shopify gift card notification |
| CustomerEmail not found in store | New Shopify customer account auto-created. Card assigned. Shopify sends account invitation email. Gift card notification skipped. | 1 — account invitation only |
| CustomerID found in store | Card assigned to existing customer. giftCardSendNotificationToCustomer triggered. | 1 - gift card notification |
| CustomerID not found in store | Gift card created without any customer link. No auto-create from an ID alone. | 0 - no email |
| No customer columns present | Gift card created without assignment. No customer lookup performed. | 0 - no email |
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
giftCardSendNotificationToCustomer is called. When off, the assignment is silent.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.
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 signal | Deduction |
|---|---|
| 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 range | Rating |
|---|---|
| 85–100 | Excellent |
| 70–84 | Good |
| 50–69 | Fair |
| 30–49 | At Risk |
| 0–29 | Critical |
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
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 (
ExpiresOnis 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
| Plan | Max reminders per send |
|---|---|
| Basic | Not available |
| Starter | 100 |
| Intermediate | 500 |
| Professional | Unlimited |
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
| Plan | Available frequencies |
|---|---|
| Intermediate | Monthly only |
| Professional | Weekly, bi-weekly, or monthly |
Configuration & Test 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.
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.
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
| Plan | Cards manageable per session |
|---|---|
| Basic | Not available |
| Starter | Up to 100 |
| Intermediate | Up to 500 |
| Professional | Unlimited |
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.
| Trigger | Availability | |
|---|---|---|
| Welcome | Sent once when you complete Gift Lift onboarding for the first time. | All plans |
| Import started | Sent when you begin a new CSV import (background processing). | Starter+ |
| Import completed | Sent when an import finishes with file name, total rows, success count, and error count. | Starter+ |
| Import paused | Sent when you pause an import — includes progress percentage and rows remaining. | Starter+ |
| Import cancelled | Sent when you cancel an import — includes final row counts and a reminder to download the partial report. | Starter+ |
| Bulk create summary | Sent after every Quick Create batch — includes stats and a 48-hour CSV download link. | Intermediate+ |
| Health report | Scheduled health dashboard snapshot — weekly, bi-weekly, or monthly. | Intermediate+ |
Plans & Limits
All Gift Lift features and their availability by plan.
| Feature | Basic (Free) | Starter ($15) | Intermediate ($25) | Professional ($35) |
|---|---|---|---|---|
| CSV rows per import | 10 | 500 | 1,000 | Unlimited |
| Quick Create per session | 1 card | 100 cards | 500 cards | Unlimited |
| Quick Create email send | — | — | Yes | Yes |
| Pre-flight validation | Yes | Yes | Yes | Yes |
| Health Dashboard | Yes | Yes | Yes | Yes |
| Pause & Resume | — | Yes | Yes | Yes |
| Cancel import | — | Yes | Yes | Yes |
| Background processing | — | Yes | Yes | Yes |
| Import email notifications | — | Yes | Yes | Yes |
| Expiry Reminders (per send) | — | 100 | 500 | Unlimited |
| Manage Gift Card Balances | — | 100/session | 500/session | Unlimited |
| Assignment Manager | — | — | Yes | Yes |
| Health Report Emails | — | — | Monthly | Weekly / Bi-weekly / Monthly |
| Bulk create summary email | — | — | Yes | Yes |
| AES-256 code encryption | Yes | Yes | Yes | Yes |
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.
.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.') 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.