Where your store's data lives, who can read it, and how you get it back
RingUps keeps each store's records in a Postgres database hosted by Supabase in the ca-central-1 region, so Canadian store data stays in Canada, with daily backups. One boutique cannot read another boutique's brides, because that rule is enforced by the database rather than by application code. RingUps never holds card details, and every store can export all of its own data at any time.
Row-level security on 53 tablesCanadian regionNo card details heldFull export, no ticket
One wedding leaves a long record behind it: measurements, deposits, a signed contract, a phone number. All of it belongs to one store.
Multi-tenant isolation
How does RingUps stop one boutique from seeing another boutique's brides?
Most shared software keeps stores apart in application code. Every query the software writes carries a clause meaning "only rows belonging to my store", and the separation holds for exactly as long as every query remembers to carry it. There are hundreds of queries. One of them forgets, on one screen, in one release, and a store sees data that is not its own. This is the ordinary way tenant leaks happen, and it is almost never malicious.
RingUps puts the rule underneath the application instead. Row-level security is a feature of Postgres, the database itself, and it is enabled on 53 tables. Every policy on those tables is written against one shared helper, current_org(), with 145 policy references pointing at it. That means there is one rule to get right rather than dozens scattered through the code.
A bug in a query cannot leak another store's brides, because the database itself refuses to return them.
Proven, not asserted
$ psql -f supabase/verify-rls.sql
set role authenticated
jwt sub = owner of store A
bridesown orgother org 0
ordersown orgother org 0
paymentsown orgother org 0
appointmentsown orgother org 0
measurementsown orgother org 0
update store B row .... 0 rows
delete store B row .... 0 rows
insert into store B ... denied by policy
ROLLBACK
Isolation is checked by a script rather than described in a slide. verify-rls.sql simulates a signed-in user the way Supabase does at runtime, by setting the authenticated role and a JWT subject claim, then reads the org-scoped tables and asserts that each owner sees only their own store. A second fixture store cannot read, update, delete or insert into the first. The whole thing runs inside a transaction that is rolled back.
There is one deliberate path across the boundary, the marketplace, and it is a narrow function with an explicit column list rather than a relaxed policy. The isolation rule is never widened for a feature's convenience. How the marketplace handles identity.
What the RingUps team can see
We cannot read your brides
That sentence is the point of the whole page, so it is written without hedging. The same row-level policies that stop one boutique reading another apply to the people who build RingUps.
The internal console is not a feature you receive
RingUps runs an internal platform console to provision stores and keep the service running. Membership of it is a separate admin table, it is not a screen a boutique owner ever sees, and it is not part of any plan. It appears on this page because it is a trust proof rather than a product feature, and because a security page that describes only the customer-facing half of a system is not describing the system.
The one key that does bypass the rule, and what it is for
Setting up a new store is a concierge script run with a service-role key, and a service-role key bypasses row-level security by design. That is stated here rather than left out. It exists to create a store, not to browse one, and no code path inside the application can create an owner account. Anyone who tells you their system has no privileged key has not looked.
Nobody trains a model on your brides
Your client data is never handed to an outside company to learn from. The drafting features read your own records to produce a first draft and stop there, and they run only where a store has provisioned its own key for them. See where drafting is used.
Where does RingUps store and process a store's data?
The short version is one country, one database, one payment processor that RingUps does not stand in front of. The long version is the table.
Where RingUps data lives and what handles it. Verified against the running system.
What
Where
Detail
Your store's database
Supabase, ca-central-1
Postgres, hosted by Supabase in the Canadian region. Canadian store data stays in Canada.
Backups
Daily
Taken daily against that database. Backups age out on their own schedule, and we will give you the current windows in writing.
Separation between stores
53 tables
Row-level security in Postgres, with 145 policy references to one shared current_org() helper.
Card details
Never held
RingUps does not store card numbers. Card processing runs through Stripe, and the result comes back to RingUps on a webhook whose signature is verified before anything is recorded.
Encryption
In transit and at rest
Both, on the database and on stored files.
Everything else
On request
Email delivery and a small number of other services sit alongside the database and not all of them are Canadian. RingUps keeps a current sub-processor list and will send it in writing. Ask before you sign rather than after.
Data ownership and exit
Every customer gets a full export of their own data, and that holds even if RingUps winds down
Brides, orders, payments, appointments, inventory and the gown catalogue come out in full, at any time, self-serve, without a ticket and without an exit fee. The exports are generated by the same functions the screens render from, so a download cannot quietly disagree with what you were looking at.
The second half of that sentence is the part worth publishing. If the company winds down, you still get your data. It is written on a public page rather than left to a clause nobody reads, because a store that cannot leave has not chosen anything.
How long is my data kept, and how do I delete it?
You can correct or delete records yourself inside the app while you are a customer. If you close your account, RingUps keeps the data for a short wind-down window so you can export or change your mind, then deletes it. Backups age out on their own schedule. Some records are kept longer where tax or accounting law requires it. Ask for the current windows in writing and you will get exact numbers rather than a paragraph. The full statement is on the privacy page.
Some records are deliberately hard to destroy
Not everything should be deletable by whoever is standing at the counter, and the guards are in the database rather than in the app: payments cannot be deleted, ledger entries cannot be rewritten, a signed contract is frozen with a SHA-256 hash over its own snapshot, and a customer carrying financial history cannot be deleted at all. When a bride disputes what she was told, the record shows who did what and when, including the exact version of the terms she signed.
The technical summary
What we would tell your IT person
Plenty of boutique owners forward a security page to a family member who works in software, or to the accountant's IT contractor. This section is written for that reader, without the marketing layer, and it is the same set of facts we would give on a call.
Stack and hosting
A Postgres database hosted by Supabase in ca-central-1, with the application in front of it. Backups daily. Encryption in transit and at rest.
Tenancy model
Shared schema, isolated by row-level security in Postgres on 53 tables. 145 policy references to a single current_org() helper, so the rule is defined once. Isolation is verified by a runnable script that impersonates a signed-in user and asserts a second store reads nothing.
Authentication and roles
One account per person rather than a shared login on the counter iPad. Removing a departing employee is one action and does not lock anyone else out. Role-based access means a seamstress account does not read your margins.
Payments
RingUps never holds card details. Card processing goes through Stripe and the result is written back only after the webhook signature is verified, so a forged callback cannot post a payment. Refunds are recorded in the RingUps ledger and issued by hand in the processor's own dashboard.
Integrity guarantees
Append-only double-entry accounting. Payments and ledger entries cannot be deleted or rewritten. A signed contract is hashed with SHA-256 over its own snapshot. Imports are reversible by batch, and every imported row is idempotent on its source reference.
In a Postgres database hosted by Supabase in the ca-central-1 region, which is in Canada, with daily backups. RingUps itself is built in Kelowna, British Columbia. Not every service RingUps uses sits in Canada, and email delivery is a separate provider, so the current sub-processor list is available in writing on request. Ask for it before you sign rather than after.
Can RingUps staff see my customers?
No. We cannot read your brides. The RingUps-internal platform console is used to provision and support stores, it is not a screen a boutique owner ever receives, and the same row-level policies that stop one boutique reading another apply to the RingUps team. The one deliberate exception is the service-role key used by the store provisioning script, which bypasses row-level security by design and exists to create a store rather than to browse one.
How is one store's data kept separate from another store's?
By row-level security in Postgres, not by application code remembering to add a filter. Row-level security is enabled on 53 tables, with 145 policy references to a single current_org() helper, so there is one rule to get right rather than dozens. A bug in a query cannot leak another store's brides, because the database itself refuses to return the rows.
What happens to my data if I leave RingUps, or if RingUps winds down?
You export it, in full, at any time, without asking first: brides, orders, payments, appointments, inventory and the gown catalogue. That promise holds if the company winds down. Every customer gets a full export of their own data, and it is published here rather than kept in a drawer so that you can hold the two founders to it.
How would I hear about an outage?
By email, from the two founders, to the stores affected, followed by a written explanation of what happened. RingUps does not publish a status page today and this page will not link to one that does not exist. You should never learn about downtime from a bride standing at your counter.
Bring the hard questions
Ask what happens if we are acquired, if you leave, or if the software is down on a Saturday. Book a fifteen-minute demo on your own data and you will get a straight answer from the people who built it.