The undo button
your catalog was missing.
Reversa records the catalog changes Shopify reports and undoes mistakes without overwriting what you already fixed by hand. It alerts you when an import or an app changes hundreds of products.
Likely source: CSV import
Pattern: price ×100 · compare-at price ×100
| Product | Field | Before | After | Status |
|---|---|---|---|---|
| Ceramic sand vase | Price | $49.90 | $4,990.00 | Will be undone |
| Summer linen dress | Price | $39.90 | $3,990.00 | Will be undone |
| Organic cotton t-shirt | Compare-at price | $24.90 | $2,490.00 | Will be undone |
| Mustard velvet cushion | Price | $59.90 | $5,990.00 | Will be undone |
| Round rattan mirror | Price | $89.90 | $8,990.00 | Fixed by hand afterwards · kept |
- 618 fields across 312 products will go back
- 6 fixed by hand are kept
- We never touch inventory
Illustrative example with made-up data
What is Reversa?
Reversa is a Shopify app for agencies. It keeps a field-by-field history of products, prices, metafields and collections in every client store, groups changes by the event that caused them, and lets you undo a whole event, one product or one field. Shopify has no undo for bulk edits or CSV imports, and its activity log is view-only.
Anatomy of an incident (example)
Did an import break 300 products? Undo it. This is what happens when a bulk import breaks prices on a Tuesday afternoon, and how Reversa handles it without restoring old backups.
- 15:04Faulty CSV import
Excel drops the decimal separator: 312 prices are multiplied by 100.
312 products affected - 15:05One alert in Slack
A single grouped alert instead of 312 notifications.
One alert, not 312 - 15:20Someone fixes it by hand
A teammate corrects 6 products before seeing how big the problem is.
6 products touched - 15:41Reversa undoes
The 1,174 untouched fields go back; the 6 hand fixes are kept.
No field overwritten - 15:45Checked
The store is read again: 1,174 of 1,174 fields match.
1,174 of 1,174
How it works
Three steps, with no scripts in the online store and no full-store restores.
- 01 · RECORDS
Field-by-field history
Every change Shopify reports for products, variants, prices, images, metafields and collections, field by field, with its before and after values and its likely source: a bulk import, an app or an edit by hand.
Likely sourceFieldsCSV import1,180Feed app48 metafieldsEdit by hand3 - 02 · ALERTS
One alert per event
One alert per event when something anomalous happens, such as 50 products in 10 minutes or prices multiplied by 3 or more, by email or Slack.
1 grouped event · 312 productsPrices ×100 in 2 minutes · Email and Slack · 15:05
- 03 · UNDOES
Undo without overwriting later work
The whole event, one product or one field. A restore point is saved first, and afterwards Reversa reads the store again to check every field.
Undo planFieldsBack to previous value1,174Fixed by hand: kept6Inventorynot touched
What Reversa protects
What is recorded, what can be undone and the limits worth knowing before you pay.
| What | Records | Undoes | What we tell you | Status |
|---|---|---|---|---|
| Prices and compare-at prices | Keeps anything fixed by hand afterwards | Undone | ||
| Title, description, tags, type, vendor and handle | Undone field by field; anything edited by hand afterwards is kept | Undone | ||
| Variants (options, SKU, barcode, weight) | A deleted variant is recorded, not recreated | Undone | ||
| Images | Uploaded again, so the image gets a new URL, if the original image or Reversa's copy is still available | Undone | ||
| Product status and sales channels | Goes back to active, draft or archived, and to the channels where it was published | Undone | ||
| Product metafields | Metafields owned by another app are only recorded, not restored; variant metafields are not covered | Undone | ||
| Automated collections | Their rules are restored and Shopify recalculates which products belong | Undone | ||
| Manual collections (products and order) | Membership is recorded, not restored: only automated collections are undone | Recorded only | ||
| Deleted products | Recorded with its last known values; Reversa does not recreate it (a new product would get a different ID) | Recorded only | ||
| Inventory | Stock changes with every sale: recorded, never reverted | Recorded only | ||
| Orders, customers, themes, pages, menus and redirects | Not covered | Not covered | ||
| Videos and 3D models | Only images are copied and undone | Not covered |
Three statuses: Undone (Reversa puts the field back), Recorded only (Reversa keeps the before-and-after but does not revert it) and Not covered (Reversa neither records nor undoes it).
This table shows what Reversa does today, checked in a development store. It does not announce anything that is not built and working yet.
Built for agencies that maintain many stores
Most change history apps we have tested are built for one store. An agency needs to see them all at once and answer for them to the client.
Every client store in one panel
Sorted by what needs attention: alerts first, then stores that are all clear. Three roles: view only, can undo, administrator.
Your brand in the panel and in alerts
Your logo, accent color and typeface in the panel; your name and logo, next to the Reversa name, in the alerts your clients receive, if you turn it on.
One agency alert per urgent event
An email to the agency the moment any client store crosses a risk threshold, with the store name and a link to undo.
Scheduled undo and CSV review
Schedule a change to come back on its own at a set time, and check a CSV file against the live catalog before importing it.
Risk alert · Nórdica Home
This client store just crossed a risk threshold.
With your logo and colour, if you turn on agency branding. Illustrative example with made-up data.
Traditional backup vs. Reversa
A backup restores a snapshot of the whole store. Reversa undoes one event and keeps everything else.
| Criterion | Restoring a full snapshot | Reversa (per event, in real time) |
|---|---|---|
| Undo a single field without restoring the whole store | No. It overwrites the whole catalog back to an earlier point. | Yes. By field, product or event. |
| Keep fixes made after the mistake | No. Everything edited between the backup and the restore is lost. | Yes. It compares before, after and now, and shows those fields as conflicts. |
| Group changes by the import, app or edit that caused them | No. A snapshot of the store, with no context. | Yes. One event with its likely source (e.g. the 15:04 CSV). |
| Check every field after undoing | By hand, if at all. | Yes. Reversa reads the store again and compares every field. |
Security and data
Reversa works with your clients' stores, so it treats their data with the care of a data processor.
The database, servers and image copies are hosted in an EU region (Fly.io). Some providers, such as email delivery, are US companies working under GDPR safeguards.
Once Shopify confirms the uninstall (about 48 hours later), we delete the store's data within 30 days at most, as Shopify requires.
Catalog only: products, collections, sales channels and inventory (read-only). No access to customers or orders.
Reversa works through Shopify webhooks and the Admin API: no scripts, CSS or Liquid in the theme.
Pricing per connected store
Per store per month, billed by Shopify in USD. Every plan includes every feature, with 14 days free from when you choose your plan. There is no free plan: Reversa starts recording once you approve a plan.
Growing stores and mid-size catalogs
- Up to 1,000 products
- 90 days of history
- Every feature included
- Billed by Shopify
Fashion, home and multi-brand stores
- Up to 10,000 products
- 180 days of history
- Every feature included
- Billed by Shopify
Large catalogs and stores with an ERP
- Up to 50,000 products
- 365 days of history
- Every feature included
- Billed by Shopify
Prices in USD, as in the Shopify App Store. Shopify converts the charge to your store's billing currency when it bills locally (for example, EUR in Spain or Italy); otherwise it bills in USD.
Cancel anytime and get your unused days back. Not satisfied? We refund you. See terms
Frequently asked questions
Is Reversa a backup app?
No. A backup app stores copies so you can restore a whole snapshot. Reversa records every change as it happens, groups changes by the event that caused them (a CSV import, an app, a person) and undoes only that event, field by field, while keeping any fix made by hand afterwards.
What happens with fixes made after the mistake?
Reversa compares three values for every field: before the change, right after it and now. If someone already corrected a field by hand, Reversa shows it as a conflict and keeps the current value unless you choose otherwise.
Does it undo inventory?
No. Stock changes with every sale, so Reversa records inventory changes but never reverts them automatically.
Can it recover deleted products?
No. If a product is deleted, Reversa records that it happened, with its last known values, but it does not recreate the product: Shopify would give it a new ID, which would break old orders, reviews and links. The same applies to inventory: recorded, never reverted.
Which changes does it track?
Products, variants, images, prices, product metafields and collections, whether they come from the Shopify admin, a CSV import, a bulk editor or another app. It does not cover orders, customers, themes, pages, menus, redirects, variant metafields, videos or 3D models.
How is it billed?
Per store, through Shopify billing, in USD: $29, $49 or $99 a month depending on the number of products. Every plan includes every feature, with 14 free days from when you choose your plan: cancel before they end and you are not charged. There is no free plan: Reversa starts recording once a plan is approved, and if the plan is cancelled it pauses and stops recording new changes until a plan is chosen.
What currency am I charged in?
Prices are set in US dollars (USD), as in the Shopify App Store. Shopify adds the charge to your Shopify bill: if your store's billing currency is one Shopify bills locally (for example, euros for stores in Spain or Italy), Shopify converts the USD price to that currency; otherwise your Shopify bill is in USD (for example, stores in Hungary, which is not on Shopify's local-currency list). This depends on Shopify's billing settings, not on Reversa.
What if I am an agency?
The agency panel, with every client store in one place, is free. You pay less per store the more stores you connect: 20% off from 5 stores and 30% off from 15. Agencies admitted to early access get 3 months free per store instead of the usual 14 days.
Can I cancel? Do you offer refunds?
Yes to both. You can cancel at any time from Shopify. If you cancel part-way through a billing period, Reversa refunds the unused days of that period; days already used are not refunded (cancel on the 15th of the month and you get the rest of that month back). Not satisfied? We refund your last payment if you ask within 30 days. Shopify handles the charge and Reversa issues the refund. See the terms for the full conditions.
Where is the data stored?
Store data is kept in the EU. Reversa acts as a data processor for the merchant under GDPR and equivalent laws (such as the CCPA/CPRA in California, United States, the UK GDPR, Canada’s PIPEDA and Brazil’s LGPD), and deletes a store's data once Shopify confirms the uninstall (about 48 hours later), within 30 days at most.
Does Reversa slow down the store?
It adds no code to the online store: it works through Shopify webhooks and the Admin API, so it does not affect page speed.
When will it be available?
Reversa is in development and coming soon to the Shopify App Store. For questions, email hello@enric.app.
Coming soon to the Shopify App Store
Reversa is in development and will launch on the Shopify App Store.
Questions? Email us at hello@enric.app