Chapter 5: Success Criteria

Overview

Success criteria define the measurable outcomes that determine whether each phase of AdPriority development has achieved its objectives. These criteria are structured around four phases, each building on the validated results of the previous one.

This chapter also documents validation milestones that have already been achieved during the research phase, providing a foundation of confirmed technical feasibility.


Phase 0 Success: Nexus MVP

Phase 0 validates the core concept using Nexus Clothing as a live test case. The goal is to prove that priority-based custom labels measurably improve Google Ads ROAS before investing in SaaS infrastructure.

Success Criteria

#CriterionMetricStatus
P0-01Supplemental feed pipeline workingGoogle Sheet connected to GMC, products matchedACHIEVED
P0-02Custom labels appearing in GMCAll 5 labels populated on test productsACHIEVED
P0-03All active products scored2,425 active products have priority 0-5 assignedPending
P0-04Full supplemental feed deployed~15,000-20,000 variant rows in Google SheetPending
P0-05PMAX campaigns restructuredAsset groups segmented by priority scorePending
P0-06Baseline ROAS recorded30-day pre-change ROAS documented by priority tierPending
P0-07Post-change ROAS measured30-day post-change ROAS documented by priority tierPending
P0-08Measurable ROAS improvementOverall ROAS improvement of 15%+ within 30 daysPending
P0-09Process documentedComplete step-by-step guide for replicationPending
P0-10Category mapping validatedStore owner confirms 20 category groups are accuratePending

Phase 0 Definition of Done

PHASE 0 CHECKLIST
=================

  TECHNICAL
  [x] Google Sheets supplemental feed connected to GMC
  [x] Product ID format verified (shopify_US_{productId}_{variantId})
  [x] Custom labels recognized by GMC (10/10 test products matched)
  [ ] Full catalog scored (2,425 active products, ~15K-20K variants)
  [ ] Supplemental feed processing without errors

  CAMPAIGN STRUCTURE
  [ ] PMAX campaigns restructured with priority-based asset groups
  [ ] Budget allocation aligned to priority tiers
  [ ] Priority 0 products excluded from all campaigns

  MEASUREMENT
  [ ] Baseline ROAS captured (30-day pre-change period)
  [ ] Post-change ROAS captured (30-day post-change period)
  [ ] Comparison report generated

  DOCUMENTATION
  [ ] Category mapping validated with store owner
  [ ] Seasonal calendar confirmed
  [ ] Tag modifier rules confirmed
  [ ] End-to-end process documented for SaaS replication

Expected Outcomes

MetricBefore AdPriorityAfter AdPriority (Target)
Overall ROASBaseline (to be measured)+15-30% improvement
Wasted spend on priority-0 productsUnknown % of budget0% (excluded)
Seasonal product alignmentManual, infrequentAutomated, real-time
Time to update prioritiesHours per season changeZero (automated)
Products with custom labels7 (0.006% of catalog)~20,000 (all active variants)

Phase 1 Success: SaaS Foundation

Phase 1 transforms the validated Nexus MVP into an installable Shopify app that other merchants can use. The focus is on core infrastructure: authentication, data storage, and automated feed generation.

Success Criteria

#CriterionMetricTarget
P1-01Shopify app installableOAuth flow completes without errors100% success rate
P1-02App embedded in Shopify adminPolaris UI renders inside Shopify admin panelAll major browsers
P1-03Product import workingShopify products fetched and stored in database< 5 minutes for 5K products
P1-04Priority rules configurableMerchant can create/edit category rules via UIMinimum 5 rule types
P1-05Priority scores calculatedEngine calculates scores for all imported products< 30 seconds for 5K products
P1-06Google Sheet auto-generatedSheets API creates and populates supplemental feed< 2 minutes for 5K products
P1-07GMC sync confirmedLabels appear in GMC within 24 hours of Sheet update95%+ match rate
P1-08Database operationalPostgreSQL storing rules, mappings, sync stateZero data loss
P1-09Webhook processingProduct create/update/delete events handled< 5 second processing time
P1-10Beta testers onboardedReal merchants using the app5 beta testers

Phase 1 Definition of Done

PHASE 1 CHECKLIST
=================

  AUTHENTICATION
  [ ] Shopify OAuth 2.0 flow working
  [ ] Session tokens stored securely
  [ ] App installs and uninstalls cleanly
  [ ] GDPR webhooks implemented (mandatory for App Store)

  DATA LAYER
  [ ] PostgreSQL database provisioned (postgres16 container)
  [ ] Prisma schema deployed (stores, rules, products, sync_logs)
  [ ] Product import pipeline (paginated Shopify API fetch)
  [ ] Webhook handlers (products/create, products/update, products/delete)

  RULES ENGINE
  [ ] Category-to-priority mapping configurable
  [ ] Tag modifier rules configurable
  [ ] Manual override per product
  [ ] Score calculation pipeline (hierarchy: manual > tag > seasonal > category)

  SYNC PIPELINE
  [ ] Google Sheets API integration
  [ ] Automated Sheet generation with correct column structure
  [ ] Sheet sharing (public viewer access)
  [ ] Sync status tracking in database

  USER INTERFACE
  [ ] Dashboard: priority distribution, sync status, recent activity
  [ ] Product list: sortable, filterable, inline priority editing
  [ ] Rules page: category mapping, tag modifiers
  [ ] Settings: Google account connection, sync preferences

  QUALITY
  [ ] 5 beta testers actively using the app
  [ ] Zero critical bugs in production
  [ ] < 2 second page load times
  [ ] Error logging and alerting functional

Technical Targets

ComponentTargetMeasurement
API response time< 500ms (95th percentile)Server-side logging
Page load time< 2 secondsLighthouse performance score
Product import speed1,000 products/minuteTimed bulk import
Score calculation5,000 products in < 30 secondsTimed batch run
Sheet generation20,000 rows in < 2 minutesSheets API timing
Uptime99.5%Monitoring service
Error rate< 1% of API requestsError logging

Phase 2 Success: Full Product

Phase 2 adds the features that differentiate AdPriority from manual feed management: seasonal automation, a configurable rules engine UI, and the new arrival boost system. This phase also expands from beta to paid customers.

Success Criteria

#CriterionMetricTarget
P2-01Seasonal automation workingPriorities auto-adjust on season boundariesCorrect within 24 hours of season change
P2-02Seasonal calendar configurableMerchant can define custom season dates4 default seasons + custom
P2-03Rules engine UI completeVisual rule builder for category and tag rulesNo code required
P2-04New arrival boost functionalProducts < 14 days old auto-boosted to priority 5Configurable duration and target score
P2-05Bulk operations workingMerchant can select and update multiple products100+ products in one action
P2-06Priority previewMerchant can see what scores would change before applyingShows affected product count
P2-07Sync reliabilityGMC labels match expected values98%+ accuracy on reconciliation
P2-08Paying customersMerchants on paid Starter or Growth plans50+ paying customers
P2-09Customer retentionMonthly churn rate< 8%
P2-10Customer satisfactionApp Store rating4.0+ stars

Phase 2 Feature Matrix

PHASE 2 FEATURES
=================

  SEASONAL AUTOMATION
  +-----------------------------------------------+
  | Season Calendar                                |
  |                                                |
  | Winter: Dec 1 - Feb 28    Spring: Mar 1 - May 31
  | Summer: Jun 1 - Aug 31    Fall:   Sep 1 - Nov 30
  |                                                |
  | Category x Season Priority Matrix:             |
  |                                                |
  |              Winter  Spring  Summer  Fall       |
  | T-Shirts       2       4       5      3        |
  | Shorts          0       3       5      1        |
  | Hoodies        5       3       1      5        |
  | Outerwear      5       1       0      4        |
  | Headwear-Caps  3       3       3      3        |
  | Beanies        5       1       0      3        |
  |                                                |
  | [Auto-transitions on season boundaries]        |
  +-----------------------------------------------+

  RULES ENGINE
  +-----------------------------------------------+
  | Rule Builder                                   |
  |                                                |
  | IF product_type CONTAINS "Shorts"              |
  |    AND current_season = "Summer"               |
  | THEN priority = 5                              |
  |                                                |
  | IF tag INCLUDES "DEAD50"                       |
  | THEN priority = 0 (override)                   |
  |                                                |
  | IF tag INCLUDES "NAME BRAND"                   |
  | THEN priority + 1 (modifier)                   |
  |                                                |
  | IF created_at > 14 days ago                    |
  | THEN priority = 5 (new arrival boost)          |
  +-----------------------------------------------+

  NEW ARRIVAL BOOST
  +-----------------------------------------------+
  | Configuration                                  |
  |                                                |
  | Boost duration:  14 days (configurable)        |
  | Boost priority:  5 (configurable)              |
  | Decay option:    5 -> 4 -> 3 over time         |
  | Override manual: No (manual always wins)        |
  +-----------------------------------------------+

Phase 3 Success: App Store Launch

Phase 3 takes AdPriority from a working product to a publicly available Shopify app. Success at this stage is defined by App Store approval, install velocity, and sustainable growth metrics.

Success Criteria

#CriterionMetricTarget
P3-01App Store approvedPasses Shopify app reviewFirst submission or with minor revisions
P3-02App Store listing livePublished and discoverableListed under Google Ads / Marketing categories
P3-03Install velocityNew installs in first 90 days100+ installs
P3-04Conversion to paidFree trial to paid conversion20%+
P3-05Monthly churn ratePercentage of customers canceling< 5%
P3-06App Store ratingAverage review score4.5+ stars
P3-07Review countNumber of published reviews10+ in first 90 days
P3-08Support response timeTime to first response on support tickets< 4 hours business hours
P3-09Zero critical incidentsNo data loss, no incorrect label syncZero incidents
P3-10Revenue milestoneMonthly recurring revenue$5,000+ MRR

App Store Requirements Checklist

Shopify has specific requirements for app approval. Meeting these is a hard gate for Phase 3 success.

SHOPIFY APP STORE REQUIREMENTS
===============================

  MANDATORY (will not approve without these)
  [ ] OAuth 2.0 authentication (no API keys)
  [ ] GDPR webhooks: customers/data_request, customers/redact, shop/redact
  [ ] App uninstall webhook handled (cleanup user data)
  [ ] Embedded app experience (App Bridge + Polaris)
  [ ] Session token authentication (not cookie-based)
  [ ] HTTPS everywhere
  [ ] Privacy policy URL
  [ ] Clear value proposition in listing

  QUALITY REQUIREMENTS
  [ ] No broken links or dead pages
  [ ] Responsive design (works on all screen sizes)
  [ ] Loading states for async operations
  [ ] Error handling with user-friendly messages
  [ ] Onboarding flow for new installs

  LISTING REQUIREMENTS
  [ ] App name (AdPriority)
  [ ] Tagline (< 80 characters)
  [ ] Detailed description
  [ ] Screenshots (minimum 3)
  [ ] Demo video (recommended)
  [ ] Pricing displayed clearly
  [ ] Support contact information
  [ ] Category selection

Key Metrics Dashboard

These are the ongoing metrics that define AdPriority’s health and growth trajectory across all phases.

Business Metrics

MetricPhase 0Phase 1Phase 2Phase 3Measurement
Paying customers00-5 (beta)50+150+Billing system
MRR$0$0$3,000+$10,000+Stripe dashboard
ARR$0$0$36,000+$120,000+Calculated
ARPU (avg revenue per user)$60/mo$67/moMRR / customers
Monthly churn< 8%< 5%Cancellation tracking
CAC (customer acquisition cost)< $50< $40Marketing spend / new customers
LTV (lifetime value)$750+$1,340+ARPU / churn rate
LTV:CAC ratio> 10:1> 30:1Calculated
Trial conversion rate15%+20%+Trials / paid
Net Promoter Score30+50+Customer survey

Product Metrics

MetricPhase 0Phase 1Phase 2Phase 3Measurement
Products scored2,42525,000+250,000+1,000,000+Database count
Sync success rate100%95%+98%+99%+Sync logs
Score calculation timeManual< 30s/5K< 30s/5K< 30s/5KPerformance logs
API uptime99.5%99.9%99.9%Monitoring
API response time (p95)< 500ms< 500ms< 300msAPM dashboard
Webhook processing time< 5s< 3s< 2sEvent logs

Customer Impact Metrics

MetricTargetMeasurement Method
ROAS improvement15-30% within 30 days of setupBefore/after comparison in Google Ads
Time saved4+ hours per season changeCustomer survey
Products correctly labeled98%+ accuracyGMC reconciliation
Setup time< 30 minutes to first syncOnboarding funnel tracking
Time to value< 24 hours (labels in GMC)First sync timestamp

Validation Milestones Already Achieved

Before any code was written for the SaaS platform, the research phase validated several critical technical assumptions. These milestones de-risk the implementation by confirming that the core pipeline works with real data.

Milestone 1: GMC Product ID Format Verified

Date: 2026-02-10 Status: ACHIEVED

The Shopify-to-GMC product ID format was confirmed by analyzing a live GMC export of 124,060 products from the Nexus Clothing account.

VERIFIED ID FORMAT
==================

  Format:   shopify_US_{productId}_{variantId}
  Example:  shopify_US_8779355160808_46050142748904

  Components:
  - Prefix:      "shopify_US_" (constant for all US Shopify stores)
  - Product ID:  13-digit Shopify product ID
  - Separator:   "_"
  - Variant ID:  14-digit Shopify variant ID

  Verification:
  - Source: GMC TSV export (124,060 rows)
  - All IDs follow this format consistently
  - All IDs are variant-level (no product-only IDs found)
  - Country code is "US" for all Nexus products

Why this matters: The supplemental feed must use IDs that exactly match GMC’s primary feed. An incorrect format would cause zero products to match. This was the single highest-risk technical assumption.

Milestone 2: All 5 Custom Labels Available

Date: 2026-02-10 Status: ACHIEVED

Analysis of the GMC product export confirmed that all five custom label slots are effectively available for AdPriority use.

LabelCurrent StateProducts UsingAvailable for AdPriority
custom_label_0“Argonaut Nations - Converting” on 7 products7 of 124,060 (0.006%)Yes (safe to overwrite)
custom_label_1Empty0Yes
custom_label_2Empty0Yes
custom_label_3Empty0Yes
custom_label_4Empty0Yes

Why this matters: If custom labels were already in use for other purposes (e.g., another app or manual feed rules), AdPriority would need to share or negotiate label slots. Having all 5 available means the full label schema can be implemented without conflict.

Milestone 3: Supplemental Feed Pipeline Confirmed

Date: 2026-02-10 Status: ACHIEVED

A test supplemental feed of 10 real Nexus products was created as a Google Sheet, connected to GMC, and processed successfully.

SUPPLEMENTAL FEED TEST RESULTS
===============================

  Test Parameters:
  - Feed type:     Google Sheets
  - Format:        6 columns (id + 5 custom labels)
  - Sample size:   10 active Nexus products
  - Data sources:  Content API - US, Content API - Local, Local Feed Partnership

  Results:
  +----------------------------------+-----------+
  | Metric                           | Result    |
  +----------------------------------+-----------+
  | Total products in feed           | 10        |
  | Products matched in GMC          | 10 (100%) |
  | Attribute names recognized       | All       |
  | Processing errors                | None      |
  | Time to process                  | < 1 hour  |
  | Feed accepted by GMC             | Immediate |
  +----------------------------------+-----------+

  Sample Products Tested:
  +-----------------------------------+----------+--------+----------------------+
  | Product                           | Priority | Season | Category             |
  +-----------------------------------+----------+--------+----------------------+
  | New Era Colts Knit 2015           | 4        | winter | headwear-cold-weather |
  | New Era Yankees 59FIFTY           | 4        | winter | headwear-caps        |
  | G3 Patriots Hoodie                | 0        | winter | hoodies-sweatshirts  |
  | Rebel Minds Puffer Jacket         | 5        | winter | outerwear-heavy      |
  +-----------------------------------+----------+--------+----------------------+

  Conclusion: Pipeline is PRODUCTION-READY for MVP deployment.

Why this matters: This test confirmed the entire data flow from Google Sheet to GMC custom labels. The 100% match rate with zero errors validates that the ID format, column naming, and sheet sharing approach all work correctly.

Milestone 4: Nexus Catalog Analyzed

Date: 2026-02-10 Status: ACHIEVED

The complete Nexus Clothing catalog was pulled from the live Shopify Admin API, providing the data needed to design the category mapping and rules engine.

NEXUS CATALOG ANALYSIS
======================

  Overall:
  - Total products:        5,582
  - Active products:       2,425
  - Archived products:     3,121
  - Draft products:        36
  - GMC variants:          124,060

  Product Types:
  - Unique types:          90
  - Grouped into:          20 category groups
  - Top type:              Men-Tops-T-Shirts (1,101 products, 19.7%)
  - Naming convention:     {Gender}-{Department}-{SubCategory}-{Detail}

  Vendors:
  - Unique vendors:        175
  - Top vendor:            New Era (576 products)
  - Name brands:           2,328 products tagged "NAME BRAND"

  Tags:
  - Unique tags:           2,522
  - Key priority tags:     archived (3,130), DEAD50 (615),
                           NAME BRAND (2,328), Sale (1,471),
                           in-stock (930), warning_inv_1 (3,619)

  Seasonal Distribution:
  - Year-round products:   ~60% (jeans, headwear-caps, underwear, accessories)
  - Seasonal products:     ~40% (shorts, outerwear, hoodies, beanies, sandals)

Why this matters: The catalog analysis informed the design of the 20 category groups, the seasonal priority matrix, and the tag modifier rules. These are the building blocks of the rules engine and have been designed from real data rather than theoretical assumptions.

Milestone 5: GMC Specifications Documented

Date: 2026-02-10 Status: ACHIEVED

All GMC custom label specifications and constraints were researched and documented.

SpecificationValueImpact on AdPriority
Custom labels available5 (label_0 through label_4)Full schema can be implemented
Max characters per label100More than sufficient for our values
Max unique values per label1,000AdPriority uses 6 + 4 + ~20 + 5 + 3 = ~38 values total
Case sensitivityNot case-sensitiveCan use lowercase for consistency
Visibility to shoppersNot visible (internal only)No customer-facing impact
API update limit2x per day per productDaily sync schedule is within limits
Google Sheets row limit10 million cells~20K rows x 6 columns = 120K cells (1.2% of limit)

Risk Mitigation

Each phase has identified risks with planned mitigations.

Phase 0 Risks

RiskLikelihoodImpactMitigation
ROAS does not improveMediumHigh – invalidates premiseMeasure for 30 days minimum; analyze by product group not just overall
GMC feed processing delaysLowMedium – delays measurementUse manual “Update” trigger in GMC; document processing times
Category mappings inaccurateMediumMedium – wrong priorities assignedValidate with store owner before full deployment

Phase 1 Risks

RiskLikelihoodImpactMitigation
Shopify API rate limitsMediumMedium – slow importsImplement pagination, respect rate limit headers, use bulk operations
Google Sheets API quotasLowMedium – sync failuresMonitor quota usage; implement retry with exponential backoff
Beta testers unresponsiveMediumMedium – limited feedbackRecruit 8-10 to ensure 5 active; offer extended free access

Phase 2 Risks

RiskLikelihoodImpactMitigation
Seasonal transitions cause errorsMediumHigh – wrong priorities liveImplement preview mode; allow manual season override; monitor for 48 hours after transition
Rules engine too complex for usersMediumHigh – adoption frictionStart with pre-built templates; add complexity gradually
Churn exceeds 10%MediumHigh – unsustainable growthImplement onboarding flow; add in-app guidance; monthly check-in emails

Phase 3 Risks

RiskLikelihoodImpactMitigation
App Store rejectionMediumHigh – blocks launchStudy requirements in detail; test against all criteria before submission
Low install velocityMediumMedium – slow growthInvest in App Store SEO; build case studies; explore paid acquisition
Competitor copies approachLowMedium – reduced differentiationMove fast; build brand; add features competitors cannot easily replicate

Summary

Success for AdPriority is defined in concrete, measurable terms at each phase:

  • Phase 0 proves the concept works with a real store and real Google Ads campaigns. The supplemental feed pipeline is already validated (10/10 products matched). Remaining work is full catalog deployment, PMAX restructuring, and ROAS measurement.

  • Phase 1 proves the concept can be delivered as a self-service Shopify app. Success means 5 beta testers are using the app with working OAuth, product import, rules engine, and automated Google Sheets sync.

  • Phase 2 proves the product differentiators work at scale. Seasonal automation, the rules engine UI, and new arrival boost must function reliably with 50+ paying customers and less than 8% monthly churn.

  • Phase 3 proves the product can grow through the Shopify App Store. 100+ installs in 90 days, a 4.5+ star rating, less than 5% churn, and $5,000+ MRR define a successful launch.

The research phase has already de-risked the three highest-uncertainty technical questions: the GMC product ID format works, all 5 custom labels are available, and the supplemental feed pipeline processes correctly. The remaining work is execution.