Chapter 23: Phase 3 - App Store Launch

Goal

Submit AdPriority to the Shopify App Store, pass the review process, and launch publicly. Phase 3 focuses on meeting all Shopify requirements, preparing marketing materials, and establishing the billing infrastructure.


Shopify App Store Submission Requirements

Two legal documents must be hosted at publicly accessible URLs before submission.

DocumentURLContent
Privacy Policyhttps://adpriority.com/privacyData collected (product data only, no customer PII), data usage (priority scoring and GMC sync), data sharing (custom labels to GMC only), data retention (deleted within 30 days of uninstall), user rights (export/deletion via GDPR webhooks)
Terms of Servicehttps://adpriority.com/termsService description, acceptable use, billing terms, limitation of liability, termination clause, data ownership (merchant owns their data)

App Listing

The listing is the storefront that merchants see when discovering AdPriority.

Required assets:

AssetSpecificationNotes
App icon1200x1200px PNGClean design, no text, recognizable at small sizes
App name“AdPriority” (30 characters max)Must be unique in App Store
Tagline“Automate Google Ads product priorities with smart scoring” (70 chars max)Primary search hook
Screenshots3-5 images, 1600x900px eachDashboard, Products list, Rules engine, Seasonal calendar, Settings
Description100-500 wordsSEO-optimized, covers problem/solution/features
Key benefits3-5 bullet pointsValue propositions for scanning
Demo video60-90 seconds (optional but recommended)Walkthrough of install to first sync
Support URLhttps://adpriority.com/supportHelp center or contact form
CategoryMarketing > AdvertisingPrimary category for App Store placement

Listing description (draft):

AdPriority: Smart Product Scoring for Google Ads

Stop wasting ad spend on the wrong products. AdPriority automatically
scores your products from 0-5 based on category, season, inventory,
and brand, then syncs those scores as custom labels to Google Merchant
Center. Use these labels to build focused Performance Max campaigns
that put your budget where it matters.

KEY FEATURES:

- Automatic 0-5 priority scoring based on configurable rules
- Seasonal calendar that adjusts priorities when seasons change
- New arrival boost gives fresh products maximum visibility
- One-click sync to Google Merchant Center via supplemental feed
- Visual dashboard showing priority distribution and sync health

HOW IT WORKS:

1. Install and import your products (automatic)
2. Configure category rules and seasonal priorities
3. AdPriority calculates a priority score for every product
4. Scores sync to Google Merchant Center as custom labels
5. Segment your PMAX campaigns by priority for smarter budgets

Works with any Shopify store running Google Ads. No Google API
setup required for the Starter tier.

Start your 14-day free trial today.

Screenshots

Each screenshot should demonstrate a specific value proposition:

#ScreenCaptionWhat to Show
1Dashboard“See your priority distribution at a glance”Pie chart, sync status, quick stats
2Products“Every product scored automatically”Product list with priority badges, filters
3Product Detail“Understand exactly why each score was assigned”Priority breakdown card showing base + modifiers
4Rules“Configure rules that match your business”Rule list with pattern matching
5Seasons“Priorities adjust automatically with the seasons”Calendar view and category-season matrix

Demo Video

A 60-90 second video covering:

  1. Opening: “Stop wasting ad spend” hook (5 seconds)
  2. Problem statement: Manual custom label management (10 seconds)
  3. Install flow: Click install, products import automatically (15 seconds)
  4. Dashboard: Show priority distribution (10 seconds)
  5. Products: Browse products with priority badges (10 seconds)
  6. Rules: Create a category rule (15 seconds)
  7. Sync: Watch labels push to Google Sheet (10 seconds)
  8. Closing: “Start your free trial” CTA (5 seconds)

Review Process

Timeline

Shopify App Store review typically takes 5-10 business days from submission to decision. If the app is rejected, the team provides specific feedback, and resubmission restarts the review clock.

Review Checklist

Shopify reviews the app against these criteria:

RequirementStatusNotes
HTTPS everywhereRequiredCloudflare Tunnel provides TLS
OAuth implementationRequiredToken exchange flow, no implicit grants
Session token validationRequiredJWT verification with client secret
Webhook HMAC verificationRequiredAll webhook endpoints verify signature
GDPR webhooks implementedRequired3 mandatory endpoints
Polaris UI componentsRequiredAll UI built with Polaris v13
Responsive designRequiredPolaris handles automatically
Accessibility (WCAG 2.0 AA)RequiredPolaris provides built-in a11y
Loading statesRequiredSpinner on every async operation
Empty statesRequiredHelpful messaging when no data exists
Error handlingRequiredUser-friendly error messages
Scope justificationRequiredDocumented reason for each OAuth scope
No test/debug dataRequiredClean submission with no placeholder content
Privacy policyRequiredPublicly hosted URL
Terms of serviceRequiredPublicly hosted URL
Support contactRequiredEmail or help center URL

Common Rejection Reasons

ReasonHow to Avoid
Missing GDPR webhooksImplement all three, even as no-ops for non-PII apps
Requesting unnecessary scopesOnly request read_products, write_products, read_inventory
UI not using PolarisUse only Polaris components, no custom CSS that overrides Polaris
No loading statesAdd Spinner to every data fetch, SkeletonPage on initial load
No empty statesAdd EmptyState with illustration and CTA for every empty list
Broken OAuth flowTest with multiple development stores, handle edge cases
Missing error handlingCatch all API errors, show Banner with tone="critical"
App crashes on installTest fresh install on a store with no products, with 50K products
Billing not workingTest appSubscriptionCreate in test mode before submission
Data not deleted on uninstallapp/uninstalled webhook must cascade delete all store data

Resubmission Strategy

If rejected:

  1. Read the rejection feedback carefully (Shopify is specific)
  2. Fix every cited issue (do not submit with partial fixes)
  3. Test the fixes thoroughly
  4. Add a note in the resubmission explaining what was changed
  5. Resubmit (review clock resets to 5-10 business days)

Marketing

App Store SEO

Shopify’s App Store search uses the app name, tagline, and description for ranking. Target keywords:

KeywordSearch Volume (est.)Competition
google adsHighHigh
custom labelsMediumLow
performance maxMediumMedium
google shoppingHighHigh
product priorityLowVery Low
google merchant centerMediumMedium
pmax optimizationLowLow

SEO strategy: Include primary keywords in the tagline (“Google Ads product priorities”) and secondary keywords in the description. The unique terms “product priority” and “priority scoring” have very low competition because no existing app targets this concept.

Launch Campaign

ChannelActionTimeline
Shopify Community forumsPost in “Apps” section with use case storyLaunch day
Reddit r/shopifyShare experience with priority-based PMAX resultsLaunch week
Reddit r/PPCPost about custom label automation strategyLaunch week
Twitter/XThread: “How we improved ROAS by X% with product scoring”Launch day
Blog post“Why Your PMAX Campaigns Need Product Priorities”Launch week
Email to beta usersAnnounce launch, ask for App Store reviewLaunch day
YouTubePost the demo video as a tutorialLaunch week

Demo Video Distribution

The demo video serves double duty as a marketing asset and an App Store listing video:

  • Upload to YouTube (public, SEO-optimized title and description)
  • Embed on the App Store listing
  • Embed on the marketing website landing page
  • Share in forum posts and social media

Pricing Setup: Shopify Billing API

Subscription Plans

AdPriority uses Shopify’s Billing API for recurring charges. Merchants are charged through their Shopify bill, which eliminates payment friction.

Plan configuration:

PlanPriceTrialProductsFeatures
Starter$29/mo14 days500Manual scoring, GMC sync, basic labels
Growth$79/mo14 daysUnlimitedSeasonal auto, rules engine, tag modifiers, new arrival boost
Pro$199/mo14 daysUnlimitedGoogle Ads API, AI suggestions, ROAS tracking, performance dashboard

Billing Flow

BILLING FLOW
============

  1. Merchant installs app (free during trial)
         |
         v
  2. 14-day trial starts automatically
         |
         v
  3. Trial expiration approaching (day 12):
     Show Banner: "Your trial ends in 2 days. Choose a plan."
         |
         v
  4. Merchant clicks "Choose Plan" on Billing page
         |
         v
  5. App creates subscription via GraphQL:
     appSubscriptionCreate(
       name: "AdPriority Growth"
       price: $79.00
       interval: EVERY_30_DAYS
       trialDays: 0  (already in trial)
       returnUrl: /billing/callback
     )
         |
         v
  6. Shopify returns confirmationUrl
         |
         v
  7. Redirect merchant to Shopify payment confirmation
         |
         v
  8. Merchant approves charge
         |
         v
  9. Shopify redirects to returnUrl
         |
         v
  10. App verifies subscription status via GraphQL
          |
          v
  11. Update store.plan_tier in database
          |
          v
  12. Enable tier features

Plan Enforcement

FeatureStarterGrowthPro
Product importCapped at 500UnlimitedUnlimited
Seasonal automationBlocked (show upgrade prompt)EnabledEnabled
Rules engineBasic (3 rules max)FullFull
Tag modifiersBlockedEnabledEnabled
Google Ads connectionBlockedBlockedEnabled
ROAS trackingBlockedBlockedEnabled

When a merchant on the Starter tier tries to access a Growth feature, the UI shows a Polaris Banner with an upgrade call-to-action rather than hiding the feature entirely. This educates merchants about available features and drives upgrades.

Billing Webhooks

WebhookAction
app_subscriptions/updateSync plan status changes (activated, cancelled, frozen)
app/uninstalledCancel subscription, initiate data retention countdown

Post-Launch Priorities

After App Store approval, the focus shifts to:

  1. Monitor installs: Track daily install rate, conversion from trial to paid
  2. Respond to reviews: Reply to every App Store review within 24 hours
  3. Support queue: Handle incoming support emails within 24-48 hours
  4. Bug fixes: Rapid response to any issues reported by early users
  5. Gather testimonials: Ask satisfied merchants for case studies
  6. Iterate on onboarding: Reduce time-to-value based on user behavior data

Target Metrics (First 90 Days)

MetricTarget
Installs100+
Trial-to-paid conversion20%+
Monthly churn< 5%
App Store rating4.0+ stars
Support response time< 24 hours
NPS score> 40