# Shopivision App Store Submission Checklist

Owner: `[NAME]`  
Target submission date: `[YYYY-MM-DD]`  
Production version / commit: `[VERSION OR SHA]`

Use this as a strict go/no-go checklist. Every required item should have an owner and evidence link before submission.

## 1. Product and install flow

- [ ] The submitted app is production-ready and all listing-described features work end to end.
- [ ] Installation starts only from a Shopify-owned surface; the app never asks a merchant to manually enter a store domain.
- [ ] OAuth begins immediately after install and reinstall.
- [ ] After authorization, the merchant lands in a usable embedded app interface.
- [ ] Latest Shopify App Bridge is loaded before other app scripts where required.
- [ ] Embedded authentication uses session tokens and works without third-party cookies or local storage, including Chrome incognito.
- [ ] No blocking 3xx, 4xx, 5xx, blank screens, broken links, clipped UI, or unhandled errors occur during the reviewer path.
- [ ] Desktop and mobile layouts have been tested.

Evidence: `[INSTALL VIDEO / QA RUN / SCREENSHOTS]`

## 2. APIs, scopes, and data sync

- [ ] New public app functionality uses the GraphQL Admin API, not the legacy REST Admin API.
- [ ] Every requested access scope is necessary and documented.
- [ ] Product titles, variants, media, and generated-asset associations remain accurate between Shopify Admin and Shopivision.
- [ ] API failure, rate-limit, and empty-state messages are understandable and recoverable.
- [ ] Webhook/API versions are supported and intentionally selected.

Requested scopes and reason:

| Scope | Feature requiring it | Evidence |
| --- | --- | --- |
| `[SCOPE]` | `[FEATURE]` | `[LINK]` |

## 3. Privacy, security, and deletion

- [ ] Privacy policy URL is public, accurate, and included in the listing.
- [ ] Terms of service and support URLs are public and working.
- [ ] `customers/data_request` is registered and handled.
- [ ] `customers/redact` is registered and handled.
- [ ] `shop/redact` is registered and handled.
- [ ] Compliance webhook requests verify Shopify HMAC; invalid HMAC returns `401 Unauthorized`.
- [ ] Data retention and deletion behavior matches the published policy.
- [ ] Secrets and reviewer credentials are not exposed in client code, logs, screenshots, or this repository.
- [ ] An emergency developer contact is configured in the Partner Dashboard.

Evidence: `[WEBHOOK TEST LOG / POLICY URL / CONTACT SCREENSHOT]`

## 4. Billing and pricing

- [ ] Paid functionality uses Shopify App Pricing or the Shopify Billing API as required.
- [ ] Price, currency, billing interval, trial, credit limits, and usage charges exactly match the app listing and in-app UI.
- [ ] Accepting and declining a charge are handled.
- [ ] Reinstall can request charge approval again when required.
- [ ] Merchants can upgrade and downgrade without contacting support or reinstalling.
- [ ] Development-store review can complete without an actual charge blocking the reviewer.

Evidence: `[BILLING TEST RUN / LISTING SCREENSHOT]`

## 5. Listing and claims

- [ ] App name, subtitle, summary, feature list, categories, and tags are accurate.
- [ ] Screenshots and screencast show the submitted production app.
- [ ] Copy avoids unverifiable superlatives, fabricated metrics, fake reviews, and unsupported security/compliance claims.
- [ ] Listing images contain no testimonials or review content.
- [ ] Geographic, plan, device, browser, or API-permission limitations are disclosed.
- [ ] Pricing, support email, privacy policy, and developer website links work.
- [ ] No App Store availability badge is used before publication.

Evidence: `[LISTING PREVIEW LINK]`

## 6. Reviewer handoff

- [ ] Demo screencast is in English or has English subtitles.
- [ ] Screencast shows onboarding and every core feature described in the listing.
- [ ] Test store URL is current.
- [ ] Full-access test credentials are current and were re-tested in a clean browser session.
- [ ] Exact numbered test instructions and expected results are included.
- [ ] Any third-party account, feature flag, seeded product, or special setup is provided.
- [ ] The submission contact monitors the listed email throughout review.

Evidence: `[SCREEENCAST URL / TEST PLAN / CREDENTIAL CHECK DATE]`

## Sign-off

| Area | Owner | Status | Evidence |
| --- | --- | --- | --- |
| Product | `[NAME]` | `[GO / NO-GO]` | `[LINK]` |
| Engineering | `[NAME]` | `[GO / NO-GO]` | `[LINK]` |
| Security/privacy | `[NAME]` | `[GO / NO-GO]` | `[LINK]` |
| Listing/marketing | `[NAME]` | `[GO / NO-GO]` | `[LINK]` |
| Reviewer access | `[NAME]` | `[GO / NO-GO]` | `[LINK]` |

Final decision: `[GO / NO-GO]`

Official references:

- https://shopify.dev/docs/apps/launch/shopify-app-store/app-store-requirements
- https://shopify.dev/docs/apps/launch/app-store-review/pass-app-review
- https://shopify.dev/docs/apps/build/compliance/privacy-law-compliance
