What does importing historical Shopify orders into Alva do?
Importing historical Shopify orders into Alva Digital Downloads recreates the purchase records for orders placed before the app was installed. The importer reads a CSV of past orders, matches each line item to an existing product mapping, and writes the missing purchase. Downloads then appear retroactively on the customer account page and order status page.
Think of it as a backfill. Nothing about the original orders changes in Shopify. Alva simply gains the delivery records it never received the first time around, and every matched customer regains self-service access to the exact files tied to what they bought.
Why pre-install orders can't download their files
Alva delivers files by listening to Shopify's ORDERS_PAID webhook. Every paid order fires that webhook, Alva creates a purchase record, and the customer gets download access. Orders placed before you installed the app never fired that webhook for Alva, so no purchase record was ever created for them.
Without a purchase record, there is nothing for the customer-facing surfaces to show. A buyer who opens their order status page or the downloads tab in their Shopify account sees an empty space where their file should be. There is no link to click, because Alva has no record that the sale happened.
In practice this turns into a stream of "where's my file?" tickets — and it hits hardest in the days right after you switch apps, when longtime customers come back expecting the download button they used before to still work.
The three hard guarantees: no emails, no fraud checks, no license keys
A historical import can touch thousands of old orders at once, so Alva treats it as a silent operation with three guarantees enforced in code. The import sends no emails, runs no fraud checks, and assigns no license keys. None of these can be toggled back on for the import — they are deliberate hard limits.
The reasoning behind each is simple:
- No emails. Backfilling two years of orders must never blast two years of customers with delivery notifications. Nobody gets an email; the downloads simply become available for the next time each customer visits their account.
- No fraud checks. These orders were already paid, fulfilled, and settled long ago. Re-running them through the fraud pipeline would flood your queue with checks on transactions that are ancient history.
- No license keys. The import never draws from your license-key stock. A bulk backfill assigning keys to old orders could silently exhaust inventory you are holding for live sales, so key assignment is skipped entirely.
The whole point of the historical import is to restore access quietly. It is a background repair, not a re-fulfilment. Your customers get their downloads back without a single notification, and your license-key inventory and fraud queue are left untouched.
It's idempotent, so re-running is safe
The historical import is idempotent, which means running it twice produces the same result as running it once. Re-uploading the same CSV will not create duplicate purchases — Alva recognises records that already exist and skips them, creating only the purchases that are genuinely missing.
That safety net matters more than it sounds. If a large upload is interrupted, you can simply run it again. If you later add product mappings for a second batch of products, you can re-import the same order history and only the newly mappable orders get backfilled. There is no penalty for running it more than once.
How to import your historical orders, step by step
The import runs from a CSV you export out of Shopify. At a high level there are four steps: map your products, export the orders, upload the file, and import. Before you start, make sure your digital products are already mapped to their files in Alva — the importer matches against those mappings.
1. Map your products to files first
The importer works by matching each historical order's line items against your existing product mappings. If a product isn't mapped to a file, pack, or link in Alva yet, its old orders have nothing to attach to. Set up your mappings before you import so every past order can find its match.
2. Export historical orders from Shopify
In your Shopify admin, open Orders, filter to the date range you want to backfill, and use Export to download the orders as a CSV. Shopify's own export orders documentation walks through the filters and the file format.
3. Upload the CSV in Alva and import
Back in the Alva admin, open the historical order import, upload your CSV, and run the import. Alva reads each row, matches line items to your mappings, and creates the missing purchases. When it finishes, downloads for every matched order are live on the customer account and order status pages.
CSV imports are fussy about column names and formats. For the precise columns Alva expects and a screen-by-screen walkthrough, follow the step-by-step help article on importing historical Shopify orders before you upload.
Migrating from SendOwl, Gumroad, or Shopify's native downloads
Switching digital-delivery tools is the moment this feature earns its keep. When you move to Alva from SendOwl, Gumroad, or Shopify's native digital-downloads flow, only new orders start flowing through Alva automatically. Every sale from before the switch is invisible to the new app until you backfill it.
The historical import is the step that keeps your existing customers whole through a migration. Import your past orders and nobody loses access to what they already bought — the buyer who purchased a preset pack last year can still re-download it, even though that sale happened on your old platform. If you're weighing a move, our write-up on what switching from SendOwl to Alva actually looks like covers the rest of the transition.
Where imported downloads show up for customers
Once imported, a historical purchase behaves like any other. The download appears on the Shopify order status page for that order and in the digital-downloads section of the customer's account, so buyers can self-serve without contacting you. It reuses the same delivery surfaces every live Alva order already lights up.
Because no email is sent, the access is there waiting rather than announced. That is usually exactly what you want after a migration: the next time a past customer looks for their file, it's simply there. For a tour of every place customers can reach their files, see our guide to the ways customers get their digital downloads on Shopify.
Who can use the historical import
The historical order import is generally available to every Alva shop today, after graduating from an earlier beta. There is no waitlist and no special flag to request — export your orders, map your products, and run it whenever you need to backfill. Review your plan for storage and delivery limits, then import as many past orders as your history holds.
Frequently asked questions
No. The historical order import in Alva Digital Downloads sends zero emails, by design and enforced in code. It is a silent backfill that creates the missing purchase records so downloads appear in each customer's account and order status page. No customer is notified, so importing thousands of old orders can never spam your buyers.
Yes. The import is idempotent, so re-uploading the same CSV will not create duplicate purchases. If a first pass fails partway or you add new product mappings and want to backfill again, you can safely re-run it. Existing records are recognised and skipped, and only genuinely missing purchases are created.
Orders placed before you installed the app never passed through the ORDERS_PAID webhook, so no purchase record exists for them. Without that record, the order status page and customer account tab have nothing to show. The historical import recreates the missing purchases so those downloads appear retroactively.
No. The historical import assigns no license keys and runs no fraud checks. Both are deliberately skipped so a bulk backfill of old orders never burns license-key stock or floods your fraud queue. It only creates the purchase records that let customers reach the files tied to their existing product mappings.
Export your historical orders as CSV from the Shopify admin, map your products to files in Alva, then upload the CSV in Alva and import. The tool matches each order's line items to your mappings and creates the missing purchases, so customers who bought through SendOwl, Gumroad or Shopify's native flow keep access to what they already own.