Legal
Privacy policy
What Batten collects, why, how long it is kept, and how to have it deleted.
This policy covers this website, the Shopify apps and themes published by Batten, and the plugins and templates published by Batten on other platforms. It is written to be read rather than to be survived.
The short version
Batten does not run analytics on this website, does not set advertising cookies, and does not sell or share personal data. The only personal data Batten holds is what you send through the support form or by email, the minimum a merchant's store passes to an installed app so the app can work, and, for Batten Members, the member list a Framer site owner asks us to hold for them.
This website
What is collected. Nothing until you use the support form. The form collects your name, your email address, your store URL, the product you are asking about, your subject line, your description of the problem, any file you attach, and your consent to be contacted.
Why. To answer you, and to keep a record of the conversation so a later message about the same problem makes sense.
How long. Support correspondence is kept for as long as it is useful for supporting you, and is deleted on request.
Cookies. This site sets no cookies. Your theme choice is stored in your own browser's local storage and is never sent anywhere.
Hosting logs. The hosting provider keeps standard server logs, which include IP addresses, for a short period for security and reliability. Batten does not use those logs for analytics or profiling.
Shopify apps
There are four Batten apps: Spec Tables, Size Chart, Discount Rules, and Volume Discounts. This section is written against what the code actually does, app by app.
What is stored outside your store
Very little, and it is the same in every app. Each app keeps one session record per shop, which is what Shopify's own app framework needs in order to stay authenticated with your store. That record holds the shop domain, the access token and its refresh token, the granted scopes, the token expiry, and the identity fields Shopify supplies with a session, which describe the staff user who installed or opened the app. Those identity fields are about a merchant, never about a shopper.
Discount Rules keeps one extra row per shop: the shop domain, the identifier and title of the single automatic discount the app owns, the identifier of its Shopify Function, and a count of how many rules you have written. It holds no rule content and no customer data. Every other app keeps nothing beyond the session.
Where your settings live
Everything you configure lives in your own store, not on Batten servers.
| App | Where your configuration is held | Access requested |
|---|---|---|
| Spec Tables | Your existing product, variant, collection, and shop metafields, plus the block settings your theme stores. Nothing app owned. | None. The app requests no access scopes at all. |
| Size Chart | Charts and assignment rules as app owned metaobjects on your store, the per product override as a metafield, and the default chart on the app installation. | Products, metaobjects and their definitions, and files, for the measuring guide image. |
| Discount Rules | Your rule table as a metafield on the one automatic discount the app owns. | Discounts, and reading products. |
| Volume Discounts | Tier sets as app owned metaobjects, the compiled configuration on the app's automatic discount, and the display data on each product in scope. | Products, discounts, and metaobjects. |
Because that configuration is store data, it stays with your store, it is visible to you in your admin, and it survives an uninstall.
Customer personal data
No Batten app stores customer personal data of any kind. No customer names, addresses, order histories, or contact details are written to any Batten database.
Three of the four apps never read customer data either. They request no scope that would grant it and make no customer query.
Discount Rules and Volume Discounts evaluate their rules inside a Shopify Function. A Function is compiled code that runs on Shopify's own infrastructure, inside the checkout evaluation, with no network access and no filesystem. Where you have written a rule that depends on the shopper, that Function is given only what the rule needs to answer the question:
- Volume Discounts is told whether the shopper carries the customer tags your tier sets name. Nothing else about them is requested.
- Discount Rules is told the shopper's tag membership, their number of previous orders when a rule uses the first order condition, and their email address when a rule matches on email domain. Only the part after the
@is compared, against the list of domains you configured.
None of that leaves the Function. It is not returned to Batten, not written to a metafield, and not stored anywhere. Neither app requests the Shopify scope that grants customer records through the Admin API.
No tracking on your storefront
The storefront pieces of every app are theme app extensions rendered by Shopify. They make no request to any host other than Shopify's own, set no cookies, write nothing to a visitor's browser storage, and contain no analytics or tracking of any kind. No Batten app uses a third party analytics, advertising, or error reporting service on the server side either.
Shopify's required data requests
Every Batten app implements the three mandatory compliance webhooks, and each one verifies the request signature before it does anything.
| Request | What the app does |
|---|---|
| A shopper's data request | Acknowledged. There is no customer data to return, because none is held. |
| A shopper's erasure request | Acknowledged. There is nothing to erase, because none is held. |
| A shop erasure request | Every record the app holds for that shop is deleted. |
A request made to Batten directly, rather than through Shopify, is answered within thirty days.
On uninstall
The session record for your shop, which is the access token and everything attached to it, is deleted as soon as Shopify tells the app you have uninstalled. Discount Rules holds one further row, the pointer to its own discount, and that is deleted when Shopify sends the shop erasure request that follows an uninstall. Write to us if you would rather it went sooner.
Your charts, rules, tier sets, and metafields live in your store, so they stay in your store, under your control.
Batten Members for Framer
Batten Members is a hosted service, so this section is longer than the others.
Who holds what. If you install Members on your Framer site, the member list is yours. Batten holds it on your behalf and acts on your instructions. Your members should be told about your site's own privacy practices by you, and this section describes what we do with the data underneath.
What is stored about your project
Your project name, an email address for you if you choose to give one, the two keys the plugin uses, your tier, and your licence status and expiry. The publishable key ships inside your published site. The secret key is shown to you once and only a one way digest of it is stored, which is why we cannot send it back to you and why a copy of our database does not hand anyone your project.
Alongside it: the plans you create, which are a name and a sort order, and your gating rules, which are a page path or a section name, the mode you set, and the plan a page requires.
What is stored about your members
For each member: their email address, a name if you typed one when you invited them, the plan you assigned, whether they are invited, active, or revoked, when the row was created, and when they were last seen signing in. Nothing else. No IP addresses, no browser or device details, no behavioral records, and no password, because there is no password.
The email address is the only thing a member gives us themselves. Everything else on the row is set by you or by the system.
How signing in works
A member types their email into your login form. If that address is on your list, the service asks its authentication provider to email a single use sign in link. If the address is not on your list, or has been revoked, nothing is sent, and the form gives the same reply either way so your member list cannot be probed from outside.
Following the link returns the member to your site with a short lived access token. That token is held in the member's own browser storage under a named key, alongside a copy of their own member record so the page can show their name and plan. No cookie is set. A sign in lasts about an hour, after which a new link is needed. Signing out clears that browser storage and revokes the tokens on the server.
Every decision about whether a visitor may see a page is made on the server. The published site is only ever told the answer, never the member list.
Who else touches this data
- The database and authentication provider that hosts the members service. It holds the member records described above, creates an authentication record for each member who signs in, sends the magic link email, and keeps its own platform level authentication logs, which include IP addresses, for security purposes.
- The hosting provider for the service, which keeps standard server logs.
- Framer, which hosts the plugin inside the editor and serves your published site.
- The licensing provider for Pro. It is sent a licence key and an identifier for your project, and nothing else. No member data ever reaches it.
There is no analytics service, no advertising network, and no error tracking service in the plugin, in the components, or in the service.
Retention and deletion, stated plainly
Revoking a member ends their access and marks the row revoked. It does not delete the row, because keeping it is what lets you see who was removed. Uninstalling the plugin, or disconnecting a project, clears the keys out of your Framer editor and deletes nothing on the server. A lapsed Pro licence drops the project back to the free tier and deletes nothing.
So: nothing is deleted automatically. Deletion happens when you ask for it. Write to us and we will delete a single member's record, or your project and every member, plan, and gate attached to it, within thirty days. A member may write to us directly and we will pass the request to the site owner and act on it.
Themes and templates
A Batten theme or template runs inside your own site or store. It sends no data to Batten, makes no external requests, and contains no tracking of any kind.
Payments
Purchases made through a marketplace are handled by that marketplace: the Shopify App Store, the Shopify Theme Store, or the Framer or Webflow listing. A Batten Members Pro licence is sold through a payment provider acting as merchant of record. Those providers handle payment details. Batten never sees your card details.
Support email is sent and received through an email service provider acting on Batten's instructions. Your message and address pass through that provider so that it can be delivered.
Your rights
You can ask what is held about you, ask for it to be corrected, ask for it to be deleted, or withdraw consent to be contacted. Write to support@battenthemes.com and it will be handled within thirty days.
Children
Batten products are business tools and are not directed at children.
Changes
Material changes to this policy will be noted on the changelog with the date of the change.