Migrations
Moving your subscribers, without the part that keeps you up
Moving your subscribers to WallaB.AI is a CSV import you drive yourself, or a free white-glove migration we run for you. You export your subscribers from your current app — Recharge, Appstle, Skio, Loop, Seal, or anything else — upload the file, and confirm the column mapping WallaB proposes from your own headers. Before a single subscription is created you get a readiness report: exactly what will import, what will import with a warning, and what will not, row by row. When you are moving off another billing app, imported subscriptions land on a billing hold — WallaB creates them and charges nobody until you confirm the old app is switched off, which is what stops a shopper being billed twice. Payment methods never travel in the file: cards stay vaulted in Shopify and are reused there, so they never touch WallaB and your shoppers re-authorize nothing. And leaving is deliberately just as easy — your whole subscriber book exports to a CSV in one click, in the same columns the importer reads.
No lock-in
A two-way door, on purpose
The hard part of switching subscription apps is rarely the switch. It is the thought that you might be wrong, and that being wrong will cost you another migration — or a support ticket asking for your own data back.
So we built both directions and we say so out loud: coming in is a self-serve importer (or a free migration we run for you), and going out is one click, any time, without asking us. Lowering the cost of leaving is the entire point. It is what makes trying WallaB a small decision instead of a big one, and it is why we would rather earn the renewal than hold the door shut.
Coming in
Upload the CSV your current app exports, confirm the column mapping WallaB proposes from your own headers, review a readiness report, then commit. Or hand it to us and we will run the whole thing.
Going out
Your complete subscriber book downloads as a CSV from your dashboard in one click, in the exact columns our own importer reads — so it can be carried to another platform, or brought straight back here.
The part that keeps you up
Nothing charges until you flip the switch
The real hazard in a subscription migration is not lost data. It is two apps holding live billing for the same shopper on the same morning. WallaB cannot reach into your old app and switch its billing off — Shopify deliberately scopes each app to its own subscription contracts — so we do the one thing we can do, which is refuse to bill until you tell us the coast is clear.
Tick the billing hold when you commit a migration batch. WallaB creates every subscription, preserves every next-charge date, and charges nobody. Your subscribers exist, they are correct, and they are quiet.
Commit with the hold on
On the commit step, check “hold billing until I confirm the old app is switched off”. The subscriptions are created held.
Nothing charges — through any path
The hold is enforced where the charge itself happens, so a scheduled renewal, a shopper restarting from the portal, and a failed-payment retry are all covered by the same guard. There is no side door.
Switch the old app off
Pause or cancel the subscriptions in your previous app, or uninstall it. Take as long as you need — held subscriptions are not going anywhere and are not costing anyone anything.
Release the hold
Come back and click “Start billing”. It is owner-only and asks you to type a confirmation, and from that moment WallaB bills each subscription on the schedule it came in with.
Leave the hold off for a fresh import that is not moving off another billing app — a spreadsheet of subscribers you have been managing by hand, for example.
Step by step
How a migration actually runs
Five steps, and nothing touches your live data until step five. Every row is staged first, with its own verdict and its own reason.
Export your subscribers
Ask your current app for a CSV of active subscriptions. Any columns it gives you are fine — extra ones are kept in the record and ignored, never a reason to fail a row.
Upload, and confirm the column mapping
WallaB reads your header row and proposes a mapping — exact name first, then known synonyms, then a close fuzzy match — and shows it against a preview of your own parsed rows. You confirm it. Where gaps remain, an AI assist can propose fills from the headers and column type signatures alone, each badged as a suggestion for you to approve; your customers' actual values are redacted before anything leaves your store, and the importer works fully without an AI key.
Match each cadence to a plan
Your rows are grouped by billing cadence — every two weeks, every month — and you point each group at a selling plan, or create a price-neutral plan for that exact cadence on the spot. Imported prices are preserved verbatim, so a grandfathered rate survives the move instead of being quietly repriced to your current catalogue.
Read the readiness report
A dry run with no side effects, and a verdict that is faithful to what the commit would actually do: how many will import, how many will import with a warning, how many will be skipped as already imported, how many would fail and why, and — on a live store — how many subscribers we could not verify a reusable payment method for. Ambiguity is surfaced, never averaged away.
Commit, then release the hold
Committing is owner-only and asks you to type the number of subscriptions being created. Rows are processed one at a time with a per-row audit trail, so a single bad row never takes the batch down. Then, when your old app is off, you release the billing hold and WallaB starts billing.
Coming from
Coming from a specific app
The importer is universal: it works from a column mapping you confirm, not from a hand-built adapter per vendor. That is why no app is “unsupported” here — and why the honest distinction below is about how much is prefilled for you, not about who we will accept.
Recharge
Verified column layout — the mapping step is prefilled and optional
A verified column layout. A Recharge subscription export imports with the mapping step prefilled and optional — open it if you want to check, skip it if you do not.
Appstle
You confirm the column mapping before anything validates
Offered as a preset: WallaB prefills a starting mapping drawn from the known shape of an Appstle export, and asks you to confirm it against your real file first. Exports that identify products by variant id alone still resolve — product matching tries variant id, then SKU, then the title pair.
Skio
You confirm the column mapping before anything validates
Offered as a preset with automatic header detection, and a mapping you confirm against your own file before anything validates. We have not verified a current Skio export column-by-column, and we would rather ask you than guess on your behalf.
Loop
You confirm the column mapping before anything validates
Same as Skio: automatic header detection, then your confirmation. The per-file confirmation is the verification — it is worth more than a promise that a format we have never seen will line up.
Seal, PayWhirl, Bold — or a spreadsheet
Verified column layout — the mapping step is prefilled and optional
Two ways in. Download our CSV template, move your subscribers into it, and upload — the columns are documented down to the format of each field. Or upload whatever your app exports and map its columns; the mapping step does not care whose file it is.
Payment methods
Cards never travel in the file
WallaB never touches card data, and no payment detail belongs in an import file. On a live store the payment method a subscriber already has vaulted with Shopify is reused for the contract WallaB creates — the card stays where it always was, and the shopper is not asked to re-authorize anything.
There are two honest limits. A subscriber whose card was never vaulted through Shopify's own vault has nothing to reuse, so they will need to add a payment method — the readiness report tells you how many people that is before you commit, rather than after. And retry history does not come with them: someone mid-dunning in your old app starts clean here.
Guarantees
What an import will never do
It never charges anyone
A row whose next charge date has already passed imports paused rather than overdue, a cancelled row gets no billing cycle at all, and a held batch charges nobody. Nobody pays for time already served.
It never emails your subscribers
Imported subscriptions skip the welcome workflow entirely, before your settings are even read. Nobody gets welcomed to a service they have been using for a year.
It never double-imports
Every source subscription is remembered by a natural key, so re-uploading the same export, retrying an interrupted commit, or importing two overlapping files creates no duplicates.
It never guesses on your behalf
An ambiguous date like 03/04/2026 stops and asks whether you mean month-first or day-first. An ambiguous number like 125.000 becomes a visible row error rather than a silent thousand-fold misread of a price. A missing country on an address is dropped with a reason, never inferred.
Done for you
Or let us do it
We will run your migration for you, free: the export, the column mapping, the readiness report, the cadence-to-plan matching, and the cutover — you approve each decision, we do the clicking.
It is capacity-limited while we are small, offered to stores in the order they ask, so the honest thing to say is: ask early. If we are at capacity we will tell you plainly and point you at the self-serve path, which is the same pipeline we would have used anyway.
The way out
And if you leave
Your subscriber book downloads as a CSV from your dashboard whenever you want it, in the same columns our importer accepts — so it round-trips: portable to another platform, and re-importable here if you change your mind. Individual shoppers can request an export of their own records too.
We would rather you left easily and came back than stayed because the door was heavy.
Questions
What merchants ask before they switch
Will my customers be charged twice while I switch?
Not if you use the billing hold. Commit your migration batch with the hold switched on and WallaB creates every subscription but charges nobody — the guard sits at the point where a charge would happen, so scheduled renewals, portal restarts, and failed-payment retries are all covered. You switch billing off in your old app, then release the hold from your dashboard (owner-only, with a typed confirmation), and WallaB starts billing on each subscription's existing schedule.
What if my current app isn't on your list?
It still works. The importer maps columns rather than vendors: you upload whatever CSV your app exports, WallaB proposes a mapping from your header row, and you confirm it against a preview of your own rows. If you would rather start clean, download the CSV template and move your subscribers into it — every column is documented.
Can I get my subscribers back out of WallaB.AI?
Yes, in one click, without asking us. Your whole subscriber book downloads as a CSV in the same columns our importer reads, so it can be taken to another platform or re-imported here. Individual shoppers can request an export of their own records as well.
Bring them over when you're ready
Read the importer guide first if you like the details, or book a demo and we will walk your export through it with you.