1. General Retention Principle
"Data is retained only for as long as reasonably necessary to provide the service, support merchant production workflows, meet legal/security requirements, or until deletion is requested, subject to technical backup retention."
MakeItCustom does not indefinitely retain data beyond its operational utility for merchant order fulfillment and multi-tenant security verification.
2. Retention Schedule by Data Category
The table below outlines the specific storage, lifecycle, and retention rules for each category of data processed by the application:
| Data Category | Storage Location | Active Lifecycle & Retention Rule | Uninstall / Deletion Behavior |
|---|---|---|---|
| A. Installation & Session Data | Neon PostgreSQL (Session, Shop) | Retained while app is installed to authenticate API requests and maintain tenant scoping. | Immediately deleted / invalidated upon receipt of the Shopify app/uninstalled webhook. |
| B. Product & Template Bindings | Neon PostgreSQL (Template, ProductBinding) | Retained while the merchant actively uses the template for storefront customization. | Marked inactive on uninstall; permanently purged upon merchant request. |
| C. Saved Design JSON | Neon PostgreSQL (Design) | Retained to allow customers to return to carts, complete checkouts, and support re-orders. | Retained during transitional window; purgable upon merchant deletion request. |
| D. Uploaded Artwork & Assets | Cloudflare R2 (shops/{shopId}/customer-uploads/) | Retained to incorporate customer graphics into rendered print assets. | Deleted upon individual asset deletion or full merchant purge request. |
| E. Pricing Snapshots | Neon PostgreSQL (PricingSnapshot) | Immutable records containing server-calculated fees, hashes, and TTL expiration dates (1-hour auth TTL). | Retained as cryptographic audit proof of authorized customization prices. |
| F. Production Job Records | Neon PostgreSQL (ProductionJob) | Retained to track asynchronous rendering state (PENDING, PROCESSING, COMPLETED, FAILED). | Retained for historical production logs and merchant order dashboard review. |
| G. PNG & PDF Production Files | Cloudflare R2 (shops/{shopId}/orders/{orderId}/) | Retained to allow merchant print operators to download print-ready assets from Shopify Admin. | Deleted upon merchant order archival or store data purge request. |
| H. Operational & Security Logs | Railway Container Logging Infrastructure | Temporary standard rotating application logs used for error diagnostics and fraud prevention. | Automatically purged per cloud platform log retention windows (typically 7 to 30 days). |
3. App Uninstall & Tenant Lifecycle
When a merchant uninstalls MakeItCustom from their Shopify Admin:
- Shopify immediately issues an authenticated
app/uninstalledwebhook to our server. - Our webhook handler deletes all stored offline OAuth access tokens (
Sessionrecords), immediately revoking all API access to the store. - The
Shoprecord is set toisActive: falseand stamped with anuninstalledAttimestamp. - Store templates, designs, and production assets enter a transitional dormancy window. This prevents accidental data loss if the merchant temporarily uninstalls or re-installs during theme updates.
- Permanent data removal can be executed immediately upon merchant request by contacting support.
4. Planned Configurable Retention Controls
We are actively developing merchant-configurable automated retention policies directly inside the Shopify Admin settings:
- Automated Design Pruning: Configurable auto-deletion of unpurchased customer draft designs after 30, 60, or 90 days.
- Production Asset Lifecycle: Configurable auto-archival and storage cleanup of heavy high-DPI production PNG and PDF files after an order is marked fulfilled in Shopify.
- One-Click Tenant Purge: Automated merchant self-serve data purging tool to permanently erase all historical data upon store closure.
5. How to Request Manual Data Deletion
Merchants may at any time request an immediate, complete purge of their database records, template configurations, design JSON, uploaded artwork, and generated production assets.
To initiate a deletion request, please email from the registered store owner address:
Subject:
[Data Deletion Request] - store-domain.myshopify.comEmail: support@codifysystem.com
Response SLA: All validated deletion requests are processed within 30 business days.