Effective date: 7 September 2026. This is the published policy for the Size Chart Shopify app and its Online Store 2.0 theme app extension.
Operator: Benetti Corporation, a Texas C-Corporation
Contact email: benettimedia@gmail.com
Mailing address: Benetti Corporation, 1401 Lavaca Street #40044, Austin, TX 78701, USA
Governing jurisdiction: Texas, USA
This policy covers information processed when a merchant installs or uses Size Chart, creates or imports charts, assigns charts to products or collections, exports charts, or uses Shopify-managed billing. It also covers chart content rendered on a merchant’s storefront.
The theme extension does not contain a shopper input form, browser storage, analytics call, or network request in the audited JavaScript. Its script only opens and closes the chart dialog. The Liquid block reads a merchant-selected chart and renders title, measurements, units, and fit note.
Configured scopes are read_metaobject_definitions,
write_metaobject_definitions, write_metaobjects, and
write_products. The audited code does not query Shopify customer
records. It still implements the three mandatory privacy webhooks:
customers/data_request, customers/redact, and
shop/redact.
The billing path checks Shopify-managed subscription status. It does not contain a card-number or bank-account form.
Chart content and assignment references live in the merchant’s Shopify store. When managed-pricing enforcement is enabled, the app also reads subscription details from Shopify.
In production, Shopify sessions and compliance-webhook audit records are
stored in Google Cloud Firestore in Google Cloud project
benetti-shopify-prod, database (default), location
nam5 (United States multi-region). Session documents store shop
domain, session fields, an update timestamp, and expiresAt only
when Shopify supplies an applicable expiry. Audit documents store the Section 2
audit fields including required expiresAt.
Local development and tests use Prisma with SQLite instead of production Firestore. SQLite does not provide the production TTL service.
The app runs as the Cloud Run service size-chart in region
us-central1 of the same project. Cloud Run request logs and the
application’s own diagnostic output are routed to the Cloud Logging bucket
size-chart-runtime and are retained for 1 day.
A log-sink exclusion keeps those entries out of the project’s 30-day
_Default bucket, so 1 day is the effective runtime-log retention.
Google Cloud administrative-activity audit logs, which record configuration
changes made by the operator rather than merchant activity, are retained by
Google for 400 days in the _Required bucket and cannot be
shortened. Access to all of the above is controlled by Google Cloud IAM on the
benetti-shopify-prod project, which is used by this app only.
CSV import content is held in request memory. Export responses use
Cache-Control: no-store.
Support and privacy correspondence goes to benettimedia@gmail.com, a Google-operated mailbox read only by Benetti Corporation. There is no ticket system, chat widget, or support database, and no Size Chart code path connects to that mailbox. A message stays in it until the operator deletes it, and a sender can ask for their correspondence to be deleted using the same address.
When the merchant enables the theme app extension, the selected chart can appear on product pages. Product assignment is checked first; a collection assignment can be used as a fallback. Merchants should not put personal information or secrets into chart fields because those fields are intended for public display. The app does not automatically detect such content.
Home setup step 4 is an anonymous GET of one assigned product page on the merchant’s own public storefront. Finding the block marker proves a shopper sees the chart. The app does not request read_themes and reads no customer data for this check.
Firestore time-to-live policies are provisioned on the
expiresAt field of both the shopify_sessions and
shopify_compliance_audits collection groups, so Google Cloud
deletes a document after the timestamp the app wrote. A document with no
expiresAt deliberately does not expire; it is removed by the
handlers described below.
shop/redact deletes and verifies them again.Chart deletion requires the merchant to type the exact handle and a fresh exhaustive scan that finds zero assignment references. The app does not perform partial cleanup.
Merchants can export charts and assignments to CSV, edit a chart, unassign it, or delete it. Shopify sends the three mandatory privacy webhooks to the configured compliance endpoint. For customer topics, the current handler records that the app holds no Shopify customer record to furnish or erase.
For a manual privacy or data request, contact benettimedia@gmail.com. The operator answers such a request within 30 days. The rights that apply to a given request depend on the law of the requester’s jurisdiction.
Admin routes authenticate through Shopify. Webhook requests are authenticated before dispatch. Declared scopes are limited. Production sessions are stored in a durable backend and deleted on uninstall. Recognized Shopify identifiers and credentials are redacted in the SDK logging path. This is not a certification or a claim about encryption, backups, region, or incident response.
If data categories, purposes, storage, providers, retention, or merchant controls materially change, this page is updated before or with that change, and the effective date at the top is moved forward.
Privacy and data requests: benettimedia@gmail.com
Mail: Benetti Corporation, 1401 Lavaca Street #40044, Austin, TX 78701, USA
Governing jurisdiction: Texas, USA