CartPDF is a Shopify app that turns a shopper’s cart into a quote PDF, and lets that shopper ask the merchant to price it. This policy explains exactly what the app reads, what it keeps, and for how long.
The app requests one access scope and no others:
| Scope | What it is used for |
|---|---|
read_products |
Product titles, images, SKUs and prices, so a merchant can add a line to a quote by hand. Everything on an ordinary quote comes from the cart itself, not from this scope. |
The app does not request read_orders, read_customers or
any write scope. It produces a document; it cannot place an order or change
anything in a store.
The app does receive personal data — but only what a shopper types into the quote request form. A shopper who uses the plain “Download quote PDF” button gives nothing: that cart is rendered and returned, and nothing about it is written down.
| Data | Why | Retained |
|---|---|---|
| Shopify session and access token | To call the Shopify API on the store’s behalf | Until uninstall |
| Shop settings — shop name, business address, contact details, tax number, currency, locale, logo URL, brand colour, plan | To render documents and apply the correct plan | Until uninstall |
| The merchant’s SMTP password, encrypted with AES-256-GCM | To send a quote from the merchant’s own mail server | Until changed, cleared or uninstall |
| Quote designs created in the app | They are the merchant’s own work | Until deleted or uninstall |
| Quote requests — the name, company, email, phone and message a shopper submitted, plus a copy of the cart at that moment (product titles, quantities and prices) | It is the quote the merchant has to price and reply to | Until the merchant deletes it, the customer is redacted, or uninstall |
| At checkout only — the name, email, phone and shipping address the shopper has already entered into Shopify’s checkout, when the merchant has placed the quote block there and Shopify has granted the app access to those fields | So a checkout quote PDF can show the buyer and delivery address without asking them to type them a second time | For a PDF download, these details are printed onto the document and discarded. If they submit a quote request, the name, email and phone are kept with that request; the shipping address is not stored |
| Usage events — a timestamp, what happened, and which design was used | Monthly usage counting and the in-app dashboard | Until uninstall |
A quote request is a copy, taken once. The app never re-reads a shopper’s cart afterwards, and it holds no payment details of any kind.
fonts.googleapis.com.
Fonts already installed on the system are used without any external request.
client.crisp.chat) — the support chat in
the app’s admin screens. It loads for the MERCHANT inside their Shopify
admin; it is never placed on a storefront and no shopper ever meets it.
Crisp receives what the merchant types into the chat, plus the usual details
a web request carries (IP address, browser). It is not loaded in the design
builder, and setting CRISP_WEBSITE_ID to an empty value removes
it entirely.
The app sends no data to analytics providers, advertising networks or data brokers.
Paid plans are handled entirely by Shopify’s Billing API. Payment details are never seen, handled or stored by this app. The app records only which plan a store is on and how many PDFs it has built in the current calendar month.
Uninstalling the app stops all access immediately. On Shopify’s
shop/redact request, the app permanently deletes everything it holds
for that store — settings, designs, usage events, sessions, and the cached PDF
files on disk.
On Shopify’s customers/data_request, the app collects every quote
request matching that customer and makes it available to the merchant to pass on.
On customers/redact, the name, company, email, phone and message are
erased from those quotes and their download links are revoked. The merchant’s
own commercial record of what was quoted and for how much is kept, with nothing
left in it that identifies the person.
A merchant may also request deletion at any time through https://add-ons.org/contact/.
If this policy changes materially, the date at the top of this page is updated and merchants are notified in the app before the change takes effect.
add-ons.org — https://add-ons.org/contact/