Chapter 1: Vision & Goals

The Problem: Retailers Waste Ad Spend on the Wrong Products

Every day, thousands of Shopify merchants pour money into Google Ads without a strategy for which products deserve the most budget. The result is predictable and costly: winter jackets get the same ad spend as shorts in January, dead stock competes with bestsellers for clicks, and new arrivals languish in obscurity while clearance items drain the budget.

The root cause is straightforward. Google Ads Performance Max (PMAX) campaigns treat all products equally unless the merchant manually segments them using custom labels in Google Merchant Center. But managing those labels is a manual, error-prone process that most merchants either skip entirely or configure once and never update.

The Scale of the Problem

Consider a retailer like Nexus Clothing with 5,582 products across 90 product types and 175 vendors. In winter, puffer jackets and hoodies should receive maximum ad spend while shorts and sandals should be excluded entirely. When spring arrives, the priorities must reverse. Multiply this by seasonal transitions four times per year, new product arrivals weekly, and clearance cycles monthly, and the manual management burden becomes untenable.

THE WASTED AD SPEND CYCLE
=========================

  Merchant sets up PMAX campaign
           |
           v
  All products treated equally
           |
           v
  Budget spread across entire catalog
           |
           +---> Shorts get clicks in January (wasted)
           |
           +---> Dead stock gets impressions (wasted)
           |
           +---> New arrivals buried under old products (missed opportunity)
           |
           +---> Seasonal items out of sync (wrong timing)
           |
           v
  Poor ROAS  -->  Merchant blames Google Ads  -->  Reduces budget
           |
           v
  Fewer sales  -->  Competitor with better segmentation wins

Why Manual Management Fails

ChallengeImpact
Time-consumingUpdating labels for thousands of products takes hours per season change
Error-proneManual CSV uploads introduce typos, wrong IDs, stale data
Often forgottenSeason changes happen gradually; merchants miss the transition window
Doesn’t scaleWorks for 50 products, breaks at 500, impossible at 5,000+
No automationNew products sit unlabeled for days or weeks
Siloed knowledgeOnly the person who set it up understands the logic

The Solution: AdPriority

AdPriority automates product priority scoring with a simple, opinionated 0-5 scale. Instead of forcing merchants to build complex feed rules from scratch, AdPriority provides a purpose-built scoring system that maps directly to Google Ads budget allocation through Google Merchant Center custom labels.

The 0-5 Priority Scale

The scoring system is deliberately simple. Every product gets a single number from 0 to 5 that directly controls how aggressively it is advertised.

PRIORITY SCALE
==============

  5  |  PUSH HARD     Maximum budget, aggressive bidding
     |                 Seasonal bestsellers, hot new arrivals, peak demand
     |
  4  |  STRONG         High budget, balanced approach
     |                 Strong performers, seasonal relevance, name brands
     |
  3  |  NORMAL         Standard budget, conservative bidding
     |                 Average products, year-round staples
     |
  2  |  LOW            Minimal budget, strict ROAS targets
     |                 Declining season, overstocked, low margin
     |
  1  |  MINIMAL        Very low budget, highest ROAS threshold only
     |                 End of season, slow movers, clearance
     |
  0  |  EXCLUDE        No advertising spend
     |                 Dead stock, archived, out of stock, non-ad products

Priority Score Definitions

ScoreNameBudget BehaviorTypical Use Cases
5Push HardMaximum spend, aggressive biddingSeasonal peaks (shorts in summer, jackets in winter), hot new arrivals, proven bestsellers with strong margins
4StrongHigh spend, balanced approachCore performers, seasonal relevance, name brand products, rising demand categories
3NormalStandard spend, conservative biddingYear-round staples (jeans, fitted caps), average performers, baseline catalog
2LowMinimal spend, strict ROAS targetsOff-season items still in stock, low-margin products, overstocked items, underwear and basics
1MinimalVery low spend, only highest ROASEnd-of-season clearance, slow movers, items approaching dead stock
0ExcludeZero ad spendArchived products, dead stock (DEAD50 tagged), out-of-stock variants, gift cards, non-shoppable items

How Priority Scores Are Assigned

AdPriority calculates scores automatically using a layered rules engine. The merchant configures high-level rules (category mappings, seasonal calendars, tag modifiers), and the engine handles the per-product calculations.

Rule Hierarchy (highest priority wins):

  1. Manual override – Merchant locks a specific score
  2. Exclusion tagsarchived, DEAD50 force score to 0
  3. Inventory warningswarning_inv_1 reduces score by 1
  4. New arrival boost – Products created within 14 days get score 5
  5. Tag modifiersin-stock adds +1, NAME BRAND adds +1, Sale subtracts -1
  6. Seasonal calendar – Category-specific seasonal adjustments
  7. Category default – Base score from product type mapping

Real-World Example: Nexus Clothing in Winter

Product: "Rebel Minds Puffer Jacket" (active, Winter)
  Category group: Outerwear - Heavy --> seasonal Winter score: 5
  Tags: none relevant
  Final priority: 5 (PUSH HARD)

Product: "Jordan Craig Stacked Jeans" (active, Winter)
  Category group: Jeans & Pants --> seasonal Winter score: 4
  Tags: NAME BRAND --> +1
  Final priority: 5 (PUSH HARD)

Product: "New Era Yankees 59FIFTY" (active, Winter)
  Category group: Headwear - Caps --> seasonal Winter score: 3
  Tags: NAME BRAND --> +1
  Final priority: 4 (STRONG)

Product: "Generic Mesh Shorts" (active, Winter)
  Category group: Shorts --> seasonal Winter score: 0
  Tags: none relevant
  Final priority: 0 (EXCLUDE)

Product: "Old Season Hoodie" (archived, DEAD50)
  Exclusion tag override: archived --> 0
  Final priority: 0 (EXCLUDE)

How It Works: End-to-End Data Flow

AdPriority connects three systems: Shopify (product catalog), Google Merchant Center (product feed), and Google Ads (campaign bidding). The data flows in one direction, from product data to ad spend allocation.

END-TO-END DATA FLOW
=====================

+-------------------+     +------------------------+     +-------------------+
|                   |     |                        |     |                   |
|   SHOPIFY STORE   |     |   AdPriority ENGINE    |     |  GOOGLE MERCHANT  |
|                   |     |                        |     |     CENTER        |
|  - 5,582 products |---->|  1. Fetch products     |---->|                   |
|  - 90 types       |     |  2. Apply category     |     |  Supplemental     |
|  - 175 vendors    |     |     rules              |     |  Feed (Google     |
|  - 2,522 tags     |     |  3. Apply seasonal     |     |  Sheets)          |
|  - Webhooks for   |     |     calendar           |     |                   |
|    product changes|     |  4. Apply tag          |     |  custom_label_0:  |
|                   |     |     modifiers           |     |    priority-5     |
+-------------------+     |  5. Calculate final    |     |  custom_label_1:  |
                          |     priority (0-5)      |     |    winter         |
                          |  6. Generate custom    |     |  custom_label_2:  |
                          |     labels              |     |    outerwear      |
                          |  7. Write to Google    |     |  custom_label_3:  |
                          |     Sheet               |     |    in-stock       |
                          |                        |     |  custom_label_4:  |
                          +------------------------+     |    name-brand     |
                                                         |                   |
                                                         +--------+----------+
                                                                  |
                                                                  | GMC fetches
                                                                  | daily (auto)
                                                                  v
                                                         +-------------------+
                                                         |                   |
                                                         |   GOOGLE ADS      |
                                                         |   PERFORMANCE MAX |
                                                         |                   |
                                                         |  Campaign 1:      |
                                                         |    Priority 5     |
                                                         |    (max budget)   |
                                                         |                   |
                                                         |  Campaign 2:      |
                                                         |    Priority 3-4   |
                                                         |    (normal budget) |
                                                         |                   |
                                                         |  Campaign 3:      |
                                                         |    Priority 1-2   |
                                                         |    (min budget)   |
                                                         |                   |
                                                         |  [Priority 0:     |
                                                         |   excluded]       |
                                                         |                   |
                                                         +-------------------+

Custom Label Schema

AdPriority uses all five available GMC custom label slots to provide rich segmentation data to Google Ads campaigns.

LabelPurposeExample ValuesUnique Values
custom_label_0Priority Scorepriority-0 through priority-56
custom_label_1Seasonwinter, spring, summer, fall4
custom_label_2Category Groupt-shirts, jeans-pants, outerwear-heavy, headwear-caps~20
custom_label_3Product Statusnew-arrival, in-stock, low-inventory, clearance, dead-stock5
custom_label_4Brand Tiername-brand, store-brand, off-brand3

This schema stays well within GMC’s limit of 1,000 unique values per label.

The Sync Pipeline

For the MVP and Starter tier, AdPriority uses a Google Sheets supplemental feed as the transport mechanism. This approach requires zero GMC API authentication from the merchant and auto-syncs daily.

SYNC PIPELINE (Google Sheets MVP)
==================================

  AdPriority App
       |
       |  Google Sheets API
       v
  +---------------------------+
  | Google Sheet              |
  |                           |
  | id                        | custom_label_0 | custom_label_1 | ...
  | shopify_US_8779..._4605.. | priority-5     | winter         | ...
  | shopify_US_9128..._4726.. | priority-4     | winter         | ...
  | shopify_US_9057..._4700.. | priority-0     | winter         | ...
  |                           |
  | (one row per variant)     |
  | (~15,000-20,000 rows)     |
  +---------------------------+
       |
       |  GMC auto-fetches daily
       v
  Google Merchant Center
       |
       |  Labels applied to matching products
       v
  Google Ads PMAX Campaigns
       |
       |  Product groups segmented by custom labels
       v
  SMART BUDGET ALLOCATION

For the Pro and Enterprise tiers, AdPriority uses the Content API for Shopping directly, enabling near-real-time updates (within GMC’s 2x/day per-product update limit).


Target Market

Primary Audience

AdPriority is built for Shopify merchants who are already running Google Ads but not getting the most out of their budget. The ideal customer has enough products that manual management is painful but not so many that they need an enterprise feed management platform.

SegmentDescriptionEstimated SizePriority
Shopify + Google Ads PMAXMerchants actively running Performance Max campaigns~200,000 storesP0
Seasonal catalog retailersFashion, sporting goods, outdoor – products with seasonal demand curves~50,000 storesP0
100+ SKU storesLarge enough catalogs that manual management breaks down~100,000 storesP1
Agencies managing multiple storesDigital marketing agencies running Google Ads for Shopify clients~5,000 agenciesP2

Ideal Customer Profile

IDEAL CUSTOMER
==============

  Store Revenue:       $100K - $5M annually
  Product Count:       100 - 50,000 SKUs
  Google Ads Spend:    $1,000 - $50,000/month
  Team Size:           1-10 people
  Pain Point:          "We know we should segment our products in
                        Google Ads but we don't have time to manage it"
  Current Solution:    Manual CSV uploads (quarterly at best) or
                        no custom labels at all
  Decision Maker:      Store owner or marketing manager
  Platform:            Shopify (required)

Why These Customers

ReasonExplanation
Already spending on adsThey have budget allocated; AdPriority helps them spend it better
Seasonal productsThe value proposition is most compelling when priorities change with seasons
Manual pain is realAt 100+ SKUs, updating custom labels manually becomes a significant time investment
PMAX adoptionGoogle is pushing all Shopping advertisers toward Performance Max, expanding the market
Measurable ROIROAS improvement is directly measurable, making the $29-199/mo price easy to justify

Revenue Model

AdPriority follows a SaaS subscription model with four tiers designed to capture merchants at every stage of growth.

Pricing Tiers

PRICING STRUCTURE
=================

  STARTER         GROWTH           PRO              ENTERPRISE
  $29/mo          $79/mo           $199/mo          Custom
  -----------     -----------      -----------      -----------
  500 products    Unlimited        Unlimited        Unlimited
  Manual scores   Seasonal auto    Google Ads API   Multi-store
  GMC sync        Rules engine     AI suggestions   White-label
  Basic labels    Tag modifiers    ROAS tracking    API access
                  New arrival      Performance      Dedicated
                  boost            dashboard        support
  -----------     -----------      -----------      -----------
  Entry point     Sweet spot       Power users      Agencies

Detailed Tier Comparison

FeatureStarter ($29/mo)Growth ($79/mo)Pro ($199/mo)Enterprise (Custom)
Product limit500UnlimitedUnlimitedUnlimited
Manual priority scoringYesYesYesYes
GMC sync (Google Sheets)YesYesYesYes
GMC sync (Content API)YesYes
Category rulesBasicAdvancedAdvancedAdvanced
Seasonal automationYesYesYes
New arrival boostYesYesYes
Tag-based modifiersYesYesYes
Google Ads integrationYesYes
AI recommendationsYesYes
ROAS trackingYesYes
Performance dashboardYesYes
Multi-store managementYes
White-labelYes
API accessYes
Dedicated supportEmailEmail + ChatPriorityDedicated CSM
Free trial14 days14 days14 daysDemo

Revenue Projections

MilestoneTimelineCustomersMRRARR
Beta launchMonth 1-25 (free)$0$0
Paid launchMonth 310$500$6,000
TractionMonth 650$3,000$36,000
GrowthMonth 12150$10,000$120,000
ScaleMonth 18500$30,000$360,000

Assumptions: Average revenue per customer of $60/mo (mix of Starter and Growth tiers), 5% monthly churn, 15% month-over-month growth after launch.


Project Goals

AdPriority development follows a phased approach, starting with a real-world validation using Nexus Clothing (the developer’s own store) before building the SaaS platform.

Goal 1: Validate with Nexus Clothing (Phase 0)

Objective: Prove the concept works with a real store, real products, and real Google Ads campaigns.

  • Use Nexus Clothing as the test case (5,582 products, 90 product types, 175 vendors)
  • Build the supplemental feed pipeline (Google Sheets to GMC)
  • Restructure PMAX campaigns around priority-based product groups
  • Measure ROAS improvement over 30 days
  • Document the process for replication

Why this matters: Building a SaaS product without first validating the approach on a real store risks building something that sounds good in theory but fails in practice. Nexus Clothing provides a complex, representative test case.

Goal 2: Build the SaaS Platform (Phase 1)

Objective: Transform the validated approach into an installable Shopify app.

  • Shopify app with OAuth authentication
  • Database storing priority rules and product mappings per merchant
  • Automated Google Sheets generation via Sheets API
  • Basic Polaris UI for managing priorities
  • Onboard 5 beta testers

Goal 3: Launch on Shopify App Store (Phase 2-3)

Objective: Make AdPriority available to the 200,000+ Shopify merchants running Google Ads.

  • Complete the seasonal automation engine
  • Build the configurable rules engine UI
  • Pass Shopify App Store review
  • Achieve 100+ installs in the first 90 days
  • Maintain less than 5% monthly churn
  • Accumulate positive reviews

Goal 4: Scale to 100+ Merchants (Phase 3+)

Objective: Reach product-market fit and sustainable growth.

  • 100+ paying customers
  • $10,000+ MRR
  • Proven ROAS improvement metrics from customer data
  • Google Ads API integration (Pro tier)
  • AI-powered recommendations based on aggregate performance data

Phase Timeline

DEVELOPMENT TIMELINE
====================

  Phase 0: Nexus MVP                Phase 1: SaaS Foundation
  Week 1-2                          Week 3-4
  +-----------------------------+   +-----------------------------+
  | - Supplemental feed setup   |   | - Shopify app scaffold      |
  | - Category mapping applied  |   | - OAuth authentication      |
  | - PMAX restructured         |   | - Database schema           |
  | - Monitoring & measurement  |   | - Core API endpoints        |
  | - Process documented        |   | - Basic priority UI         |
  +-----------------------------+   +-----------------------------+
          |                                    |
          v                                    v
  Phase 2: Full Product             Phase 3: App Store Launch
  Week 5-8                          Week 9-12
  +-----------------------------+   +-----------------------------+
  | - Seasonal automation       |   | - App Store submission      |
  | - Rules engine UI           |   | - Marketing materials       |
  | - Tag modifiers             |   | - Onboarding flow           |
  | - New arrival boost         |   | - Billing integration       |
  | - Beta testing (5 stores)   |   | - Scale to 100+ merchants   |
  +-----------------------------+   +-----------------------------+

Summary

AdPriority solves a specific, measurable problem: retailers waste ad spend because they cannot efficiently manage which products deserve the most advertising budget. The solution is a purpose-built priority scoring system that automates the assignment of 0-5 scores based on category, season, product status, and brand, then syncs those scores to Google Merchant Center custom labels where Google Ads campaigns can use them for intelligent budget allocation.

The approach is validated first with a real store (Nexus Clothing, 5,582 products), then productized as a Shopify app, and finally scaled through the Shopify App Store. The revenue model targets $29-199/month per merchant, positioning AdPriority below enterprise feed management tools but above basic feed generators, in a market gap where no competitor offers dedicated priority scoring with seasonal automation.