Sushinet

Cart Shield — Privacy Policy

Last updated: 18 October 2026 · Effective: 18 October 2026

This policy covers Cart Shield, the Shopify app built and operated by Edwin Guo (ABN 20 938 499 163), a sole trader in New South Wales, Australia, trading as Sushinet ("we", "us").

Published at https://sushinet.fyi/cart-shield/privacy. It is hosted separately from Cart Shield itself, deliberately: you should be able to read what we do with your data even at a moment when the app is down.

Summary — the short version

Which app this policy covers, and where the others are

One app per policy, so nothing here describes a product you did not install:

The apps share a server but hold separate databases and separate data. Each app's DPA is linked from its own policy.


1. What data we collect, and why

1.1 Storefront visits (the web pixel)

In short: five fields per event, plus three on particular events. Nothing from the page, the cart or the buyer.

Cart Shield connects a Shopify web pixel to your storefront when you open the app. It is declared to Shopify as analytics, so where your store asks visitors for consent, Shopify runs it only for visitors who allow analytics. It listens to these Shopify standard events: page_viewed, collection_viewed, product_viewed, search_submitted, product_added_to_cart, product_removed_from_cart, cart_viewed, checkout_started, checkout_completed, alert_displayed and payment_info_submitted.

For each event the pixel sends exactly these fields:

Three fields are added only on particular events:

The pixel sends nothing else — not the page URL, referrer, screen size, product data, prices, the cart, or the buyer's email or address.

What our server does with it:

The visit also holds the score, band and signals Cart Shield worked out from the above, including each signal's value.

Cart Shield does not record mouse movement or keystrokes, and stores no device fingerprint.

1.2 Orders (the orders/create webhook)

In short: we read the order, score it, and keep the result together with references and codes. Order records have no time limit.

When an order is created, Shopify sends it to Cart Shield. For each order we store:

What goes back into Shopify: Cart Shield writes its verdict to the order's risk panel in your Shopify admin — a risk level and up to 20 short explanations.

1.3 The checkout check (storefront script, off by default)

In short: if you turn it on, a small script on your storefront counts interactions and sends them to our server, which writes a pass, skip or fail mark onto the cart. The mark and daily counts are all that is kept.

This runs only when you set the checkout check to Monitor or Enforce on the Protection page and switch on Cart Shield's app embed in your theme. Then, on each storefront page:

What our server does with it:

What goes into your store: the mark on each checked cart, the sealed _cs cart attribute described above (which Shopify then keeps on the order), and an app-owned setting on Cart Shield's own installation holding the check's mode, the hidden field's name, and — if the decoy is on (§1.5) — a short list of a few of your products (id, title and price) that includes the decoy. The embed prints that list into the page, out of sight, for a script to find.

1.4 Your rules and the checkout Function

In short: a rule naming a person is stored as a code plus a short hint. Checkout data is compared inside Shopify and never reaches us.

You can create rules about emails, email domains, phone numbers, names, addresses, countries, regions, connection types (Tor, VPN or proxy, server or cloud host, residential proxy, known bad network, crawler address) and the country of a connection.

Rules are kept until you delete them.

1.5 The decoy product (off by default)

If you turn the decoy on, Cart Shield creates one product in your store: unlisted (reachable only by its address, never in a collection, search or your sitemap), marked hidden from search engines, with a title and price chosen for your shop, inventory not tracked, and published to the Online Store channel only. The checkout check lists it where only a script would find it (§1.3), and a cart holding it is refused at checkout (§8). It identifies no one; its only purpose is to be taken by a script that reads the page rather than a person who looks at it.

Turning the decoy off archives the product. ⚠️ Uninstalling Cart Shield leaves the decoy in your store: once uninstalled, the app has no access left to remove it. If you used it, delete it from Products in your Shopify admin.

1.6 Data read live from Shopify but not stored

Some shopper details are read from Shopify at the moment they are needed and are not stored:

These details are shown to you or used for the check, and then discarded. Each such read of shopper details is recorded in the access log (§1.10), without the details themselves.

1.7 Activity log

The activity log is the list on the Activity page and on Home ("What Cart Shield did"): one row for each thing Cart Shield did or noticed to defend your store. Each row holds only ids and closed codes: what kind of event it was (from a fixed list, for example order scored, order not scored, rule matched, order held, hold failed, hold released, cancelled and refunded, customer frozen, customer unfrozen, freeze ended, rule added or removed, order tagged, segments created, Shopify Flow trigger sent, risk panel written, plan feature switched off, checkout refused), which defence did it (a block rule, a freeze, flagged orders, the checkout check, the decoy and so on), who acted (cart-shield, merchant, or shopify for something done in Shopify's own admin), a short reason code (for example strong-score:70 or rule:email, the kind of rule and never its value), the Shopify order id, the id of the rule or visit it concerns, and the time. A row that records a refused checkout also holds a one-way hash of the checkout (the same value as in §1.13), only so that a redelivered notice is listed once. It never holds a name, email address, phone number, street address, IP address, cart token or the value of a rule. Tagging's own record is still the time the order was tagged (§1.2). Rows are kept for 90 days and then deleted by the hourly job (§7); they are erased earlier as described in §10.

1.8 Shop settings and OAuth session

1.9 Support conversations (your messages to us)

If you open a request from the app's Support page, the subject and message you write, its category, your shop's name, your shop's domain and your shop's contact email are sent to Zoho Desk (Zoho's Australian data centre, desk.zoho.com.au), the help desk where we answer every support request — the same place an email to support@sushinet.fyi lands. If your shop has no contact email, the ticket uses support+<your-shop>@sushinet.fyi instead. Each request is its own conversation there.

The app keeps one reference per request — its category, and when it was opened, last written to and closed — so you can see your requests and reply to them. It holds no subject and no message text. (An earlier one-per-shop reference to a single conversation is still held for shops that wrote before October 2026; it is a ticket id, no text, and is removed in the next release.) Erasing your shop's data (§10) removes these references; it does not delete the conversations in Zoho Desk, which are our correspondence with you. We keep them for as long as we need them to support you, and you can ask us to delete them.

Please do not paste your customers' details into a support message. Zoho Desk holds our correspondence with you, not your customers' data, so it is not a sub-processor of it — and it stays that way only if a message carries none.

1.10 Operational records

1.11 Freeze, Shopify Flow and email segments

1.12 Billing records

1.13 Refused checkouts (the checkouts/create and checkouts/update webhooks)

In short: to show you what your block rules, freezes, checkout check and decoy refused, our server repeats the checkout Function's comparison on each checkout Shopify sends us, and keeps only which defence refused it.

The checkout Function cannot tell us what it refused, and a refused checkout never becomes an order. So Cart Shield subscribes to Shopify's checkouts/create and checkouts/update webhooks, which send the checkout — the buyer's email and phone, the delivery address and name, the cart token and the product variants — when it opens and each time it changes (a checkout refused on opening, before anything is typed, sends only the first, with the cart's products and no personal details). The same handler reads both.

1.14 What we do not collect

Cart Shield's database stores none of the following: the shopper's name, street address or phone number; their time zone; their IP address in readable form; payment card details; product titles or prices (other than the few the checkout check lists in your own store, §1.3); discount codes; marketing consent. It holds no device fingerprint, no mouse or keystroke recording and no raw event stream: events are folded into counters as they arrive and then discarded.


2. Who is in charge of what — our role

In short: for your shoppers' data, you decide and we follow your instructions. For your own account and settings, we decide.

If one of your shoppers asks to see or delete their data, the request goes to you, and we will help you answer it (§11).

3. Why we are allowed to process it

In short: mostly because you installed an app to spot fraudulent orders, and it needs this data to do that.

Where the GDPR or UK GDPR applies:

What Legal basis
Running Cart Shield: scoring, rules, the risk panel, keeping you signed in Performance of a contract (Art 6(1)(b))
Fraud detection on your shoppers' visits, carts and orders Yours to hold as controller. For you, preventing fraud is commonly a legitimate interest (Art 6(1)(f), recital 47)
Security logging, the web server access log, and diagnosing a fault you report Legitimate interests (Art 6(1)(f))
Answering your support requests Performance of a contract (Art 6(1)(b))

Reading from a shopper's browser. The web pixel and the checkout check's script read from the visitor's device (§1.1, §1.3). Where a law requires consent for that, you decide how your store obtains it. The pixel runs under Shopify's analytics consent; the checkout check reads browser tells only with analytics consent unless you turn Respect EU consent off; its interaction counts are sent regardless of consent. If a law where your shoppers are requires consent for those counts, you must obtain it on your store.

4. Where data lives

Cart Shield's database is on a virtual server we operate in Sydney, Australia, shared only with our other apps, each under its own system account with its own database. Data is encrypted in transit (HTTPS) between Shopify, the app, a shopper's browser and your browser.

If you are in the EEA or the UK: Cart Shield's data is stored in Australia. Australia is not covered by a European Commission adequacy decision, so where the GDPR applies, transfers rely on the safeguards in Article 46 or the derogations in Article 49 (§6).

5. Who we share data with, and who we rely on

We do not sell merchant or shopper data, and we do not share it for anyone else's purposes. We rely on a small number of providers to run the app. Under the GDPR those that hold or receive your shoppers' data on our instructions are sub-processors, listed in Annex III of the DPA:

Provider Country What it does for us What it can hold
Shopify Canada / USA The platform. It runs the checkout Function, the web pixel and the app proxy, sends us orders, and answers our live reads (§1.6). Everything in §1 comes from Shopify. We write back the risk-panel verdict, the validation metafield (§1.4), the checkout check's cart marks and settings (§1.3), the decoy (§1.5), and the tags, holds, cancellations and refunds you turned on (§8).
Oracle Cloud Australia (Sydney) The server running the app and its database, and the object storage holding the daily backups (§7). Everything Cart Shield stores (§1).
IP reputation services (three, used in turn) Overseas; locations not fixed by us IP lookup: proxy, VPN, hosting and country. Each one after the first is used only if the ones before it are not set up, have used their day's quota, or do not answer. The order's IP address, at most one lookup per order (answers are cached, §7).
A DNS blocklist of compromised machines Overseas; the list operator's own servers, reached through our resolver Checked by a DNS lookup of the reversed address under the list's own domain, through our server's DNS resolver. IPv4 only. The order's IPv4 address, inside the DNS query. Our DNS resolver also sees the query.
Zoho Desk Australia Our help desk (§1.9). Your messages, shop name, domain and contact email. Not your customers' data.

How the lookups run:

What we download. Data also flows the other way. We download these lists to our server, sending no shopper data: the Tor exit list; published address ranges of cloud and hosting providers; published ranges of search-engine crawlers and assistants; lists of VPN ranges and of networks known for abuse; a privacy relay's published exit ranges; and an IP-to-country table. We describe them by kind rather than by name: they receive nothing from us, and naming them would tell anyone trying to get round Cart Shield where to look.

Our public website, sushinet.fyi (where this page is served), is hosted by Vercel (USA). No store, merchant or shopper data from Cart Shield reaches it.

We will update this list before adding any provider that would receive store data. If a legal request such as a court order ever compelled disclosure, we would tell the affected merchant unless the law prohibited us from doing so.

6. Sending data overseas

In short: your data is stored in Australia. An order's IP address goes to the lookup services in §5, wherever they are.

We are an Australian business and Cart Shield's database is in Australia. Shopify (Canada and the USA) and the IP lookup services in §5 are overseas recipients. Under Australian Privacy Principle 8, we remain accountable for what they do with it.

If you or your shoppers are in the EEA or the UK: Australia is not the subject of a European Commission adequacy decision. Where the GDPR applies, transfers to us rely on the safeguards in Article 46 — in practice the Standard Contractual Clauses, which we will sign with any merchant who asks — or on the derogations in Article 49.

7. How long we keep data

8. Decisions Cart Shield can make about an order or a checkout

In short: by default Cart Shield only scores and explains. Every action here is one you switch on, and a person can review it.

These are automated decisions with an effect on a shopper, made only because the merchant chose them. We disclose them because Shopify's protected-customer-data requirements ask apps to be explicit about automated decisions with a significant effect, and because Australian Privacy Principle 1.8 requires it from 10 December 2026.

A person can review any decision. If you are a shopper and think an order or checkout was handled wrongly, contact the store. The store controls these settings and can release, reverse or change them. If the store needs our help to understand a decision, we will help them.

9. How we protect it, and what happens if that fails

No system is perfectly secure. If a data breach affects your store, we will tell you without undue delay, and within 72 hours of becoming aware of it. Where the Australian Notifiable Data Breaches scheme or GDPR Article 33 applies, we will also notify the regulator.

10. Deletion — Shopify's mandatory compliance webhooks

All three compliance webhooks verify Shopify's signature before acting; an invalid signature is rejected and no data is touched.

What stays in your store after uninstall. Tags Cart Shield added (§8), the risk-panel verdicts on your orders, and the decoy product if you used it (§1.5) are your store's data and stay there, as does the sealed _cs attribute on any order placed from a checked cart (§1.3). The validation metafield (§1.4), the checkout check's settings (§1.3) and the marks on carts are held by Shopify against Cart Shield's installation, its checkout validation and the carts, not on our server.

11. Your rights, and how to use them

In short: ask us at support@sushinet.fyi and we will answer within 30 days, free.

12. Children's data

Cart Shield is a business tool sold to merchants and is not directed at children. We do not knowingly collect personal information about anyone under 16. If we learn that we hold some, we will delete it.

13. Cookies and your storefront

14. Access scopes, and Protected Customer Data status

Cart Shield asks for these scopes, each for the feature named:

Scope Used for
write_orders Reading orders (§1.2); writing the verdict to the risk panel; cancel and refund when you turn it on (§8)
write_pixels Connecting the web pixel (§1.1)
read_customer_events Subscribing that pixel to Shopify's standard events
write_validations Installing and configuring Cart Shield's checkout validation Function (§1.4)
write_merchant_managed_fulfillment_orders Holding and releasing a flagged order that ships from your own location (§8)
write_third_party_fulfillment_orders The same hold, for an order that ships from a fulfilment service's location
read_shopify_payments_disputes Home's dispute figures, read live and not stored (§1.6)
read_shopify_payments_accounts The Shopify Payments account those disputes sit under, which Shopify gates separately
write_customers Reading whether an order is the customer's first (§1.2); tagging a Strong order's customer when you turn it on (§8)
write_products Reading a product's publish time (§1.2); creating and archiving the decoy (§1.5)
write_publications Publishing the decoy to the Online Store channel only (§1.5)
read_themes Checking whether the checkout check's app embed is switched on in your live theme, so Protection can warn you. Nothing in a theme is written
unauthenticated_read_checkouts Reading the checkout check's mark on a cart through the Storefront API (§1.3)
unauthenticated_write_checkouts Writing that mark
read_reports The assistant order label (§1.2): once an hour, one Shopify report query per shop, for orders from the last 48 hours that Shopify has not yet attributed. It reads each order's id with the assistant channel Shopify's reports name (agentic_referring_channel, agentic_sales_channel) and keeps only that channel name on the order, with which source it came from and when it was last asked. It is shown as a fact and never changes the score. Shopify's reports do not include test orders

Any scope that writes a resource also lets the app read it; Cart Shield reads only what the sections above describe.

Protected Customer Data. Cart Shield reads orders, so it handles protected customer data, including name, email, phone and address fields at Level 2. It subscribes to the protected webhooks orders/create, orders/risk_assessment_changed, orders/cancelled and checkouts/update (§1.13; checkout data is order data, so write_orders covers it). Shopify reviews our access to protected customer data as part of App Store review.

15. Changes to this policy

If what Cart Shield collects, where it sends it or how long it keeps it changes, we will update this document and the "Last updated" date before the change goes live. Material changes are announced in the app.

16. Contact

Questions about this policy, or a request to access or delete data we hold: support@sushinet.fyi — Edwin Guo, trading as Sushinet, New South Wales, Australia.