# SEO Requirements vs Implementation - Page-by-Page Comparison ## 🏠 HOME PAGE (`/` or `/home/`) ### ✅ Title Tag **Required**: `Retail ERP & POS for Indian MSMEs | POZO` **Implemented**: ✅ **MATCHES** - Location: `server/seo-middleware.js` line 168 - Also in: `src/PozoApp/Pages/HomePage.jsx` line 326 ### ✅ Meta Description **Required**: `Fast billing, smart inventory, GST-ready POS. POZO helps kirana, mini-supermarkets & retail chains speed checkout, connect weighing scales, and manage multi-store ops.` **Implemented**: ✅ **MATCHES** - Location: `server/seo-middleware.js` line 169 ### ⚠️ Canonical URL **Required**: `https://www.pozo.app/home/` (change to `https://www.pozo.app/` after migration) **Implemented**: ⚠️ **PARTIAL** - Currently generates: Dynamic based on request path - **Issue**: Uses `/home/` currently, needs to change to `/` after migration - **Location**: `server/seo-middleware.js` lines 463-475 - **Action**: Update after migration to use root `/` instead of `/home/` ### ✅ OG/Twitter Tags **Required**: - og:title: `Retail ERP & POS for Indian MSMEs | POZO` - og:description: `Fast billing, smart inventory, GST-ready POS for kirana & supermarkets.` - og:url: `https://www.pozo.app/home/` - og:image: `https://www.pozo.app/static/og/pozo-home.jpg` - twitter:card: `summary_large_image` **Implemented**: ✅ **MOSTLY MATCHES** - Location: `server/seo-middleware.js` lines 610-631 - **Issues**: - og:description uses full description (not shortened version) - og:image uses `/og/home.jpg` (not `/static/og/pozo-home.jpg`) - **Action**: Update image path to `/static/og/pozo-home.jpg` if that's the correct asset ### ✅ JSON-LD (Organization + Website + WebPage) **Required**: ```json { "@context":"https://schema.org", "@graph":[ { "@type":"Organization", "name":"POZO", "url":"https://www.pozo.app/", "logo":"https://www.pozo.app/static/brand/logo.png", "foundingDate":"2019", "sameAs":[] }, { "@type":"WebSite", "name":"POZO", "url":"https://www.pozo.app/", "potentialAction":{ "@type":"SearchAction", "target":"https://www.pozo.app/search?q={query}", "query-input":"required name=query" } }, { "@type":"WebPage", "url":"https://www.pozo.app/home/", "name":"Retail ERP & POS for Indian MSMEs | POZO", "isPartOf":{"@id":"https://www.pozo.app/"}, "description":"Fast billing, smart inventory, GST-ready POS. POZO helps kirana, mini-supermarkets & retail chains speed checkout, connect weighing scales, and manage multi-store ops." } ] } ``` **Implemented**: ✅ **MATCHES** (with minor differences) - Location: `server/seo-middleware.js` lines 553-596 - Also in: `src/PozoApp/Pages/HomePage.jsx` lines 291-321 - **Differences**: - Logo path: Uses `/src/Images/PozoAppFavicon.png` instead of `/static/brand/logo.png` - WebPage URL: Uses dynamic `pageUrl` (currently `/home/` but will be `/` after migration) - **Action**: Update logo path to `/static/brand/logo.png` if that's the correct asset --- ## 📝 BLOG PAGE (`/blog` or `/home/blog`) ### ✅ Title Tag **Required**: `POZO Blog — Retail ERP, POS & Grocery Billing Guides` **Implemented**: ✅ **MATCHES** - Location: `server/seo-middleware.js` line 196 ### ✅ Meta Description **Required**: `Practical guides on POS billing, weighing-scale integration, GST e-invoices, multi-store ERP & inventory control for Indian retailers.` **Implemented**: ✅ **MATCHES** - Location: `server/seo-middleware.js` line 197 ### ⚠️ Canonical URL **Required**: `https://www.pozo.app/home/blog` (later → `/blog`) **Implemented**: ⚠️ **PARTIAL** - Currently generates: Dynamic based on request path - **Issue**: Uses `/home/blog` currently, needs to change to `/blog` after migration - **Action**: Update after migration ### ❌ JSON-LD (CollectionPage + Breadcrumbs) **Required**: ```json { "@context":"https://schema.org", "@type":"WebPage", "@id":"https://www.pozo.app/home/blog", "name":"POZO Blog — Retail ERP, POS & Grocery Billing Guides", "isPartOf":{"@id":"https://www.pozo.app/"}, "description":"Practical guides on POS billing, weighing-scale integration, GST e-invoices, multi-store ERP & inventory control for Indian retailers." } ``` ```json { "@context":"https://schema.org", "@type":"BreadcrumbList", "itemListElement":[ {"@type":"ListItem","position":1,"name":"Home","item":"https://www.pozo.app/home/"}, {"@type":"ListItem","position":2,"name":"Blog","item":"https://www.pozo.app/home/blog"} ] } ``` **Implemented**: ❌ **MISSING** - **Current State**: - Blog page uses generic WebPage schema from middleware (lines 587-593) - No CollectionPage type - No BreadcrumbList for blog page - **Location**: `src/AdminPanel/Blog/Blog.jsx` - No JSON-LD found - **Action Required**: - Add CollectionPage schema to blog page - Add BreadcrumbList schema to blog page - Update middleware to detect blog page and inject proper schemas --- ## 💰 PRICING PAGE (`/pricing` or `/home/pricing-pozoapp`) ### ✅ Title Tag **Required**: `Pricing - Retail ERP & POS Plans | POZO` **Implemented**: ✅ **MATCHES** - Location: `server/seo-middleware.js` line 182 - Also in: `src/PozoApp/Components/PricingPozoApp.jsx` line 708 ### ✅ Meta Description **Required**: `Simple plans for MSMEs. Fast billing, inventory, GST e-invoice, weighing-scale integration, WhatsApp e-bills & multi-store controls. Book a demo.` **Implemented**: ✅ **MATCHES** - Location: `server/seo-middleware.js` line 183 ### ⚠️ Canonical URL **Required**: Should be `https://www.pozo.app/pricing` (after migration) **Implemented**: ⚠️ **PARTIAL** - Currently: Dynamic based on request path - **Action**: Update after migration ### ✅ JSON-LD (SoftwareApplication + WebPage + Breadcrumbs) **Required**: ```json { "@context":"https://schema.org", "@type":"SoftwareApplication", "name":"POZO", "applicationCategory":"BusinessApplication", "operatingSystem":"Web", "url":"https://www.pozo.app/home/pricing-pozoapp", "offers":{ "@type":"Offer", "priceCurrency":"INR", "availability":"https://schema.org/InStock" }, "featureList":[ "Fast POS billing","Inventory & purchase","GST e-invoice", "Weighing-scale integration","WhatsApp e-bill","Multi-store ERP" ] } ``` ```json { "@context":"https://schema.org", "@type":"WebPage", "@id":"https://www.pozo.app/home/pricing-pozoapp", "name":"Pricing — Retail ERP & POS Plans | POZO", "description":"Simple plans for MSMEs with POS billing, inventory, GST e-invoice & multi-store controls." } ``` ```json { "@context":"https://schema.org", "@type":"BreadcrumbList", "itemListElement":[ {"@type":"ListItem","position":1,"name":"Home","item":"https://www.pozo.app/home/"}, {"@type":"ListItem","position":2,"name":"Pricing","item":"https://www.pozo.app/home/pricing-pozoapp"} ] } ``` **Implemented**: ✅ **MATCHES** (with minor URL difference) - Location: `src/PozoApp/Components/PricingPozoApp.jsx` lines 670-703 - **Differences**: - URL uses `/pricing` instead of `/home/pricing-pozoapp` (will be correct after migration) - All other fields match exactly - **Note**: Pricing page has proper JSON-LD in component, but middleware also injects generic schema --- ## 📊 Summary ### ✅ Fully Implemented 1. **Home Page**: Title, Meta Description, OG Tags, JSON-LD (with minor path differences) 2. **Blog Page**: Title, Meta Description 3. **Pricing Page**: Title, Meta Description, JSON-LD (SoftwareApplication + WebPage + Breadcrumbs) ### ⚠️ Needs Updates 1. **Home Page**: - Canonical URL (change `/home/` to `/` after migration) - Logo path (update to `/static/brand/logo.png`) - OG image path (update to `/static/og/pozo-home.jpg`) 2. **Blog Page**: - Canonical URL (change `/home/blog` to `/blog` after migration) - **MISSING**: CollectionPage JSON-LD - **MISSING**: BreadcrumbList JSON-LD 3. **Pricing Page**: - Canonical URL (already uses `/pricing` in component, but middleware may override) --- ## 🔧 Action Items ### Immediate Fixes (Before Migration) 1. **Update Home Page JSON-LD Logo Path** - File: `server/seo-middleware.js` line 560 - Change: `/src/Images/PozoAppFavicon.png` → `/static/brand/logo.png` 2. **Update Home Page OG Image Path** - File: `server/seo-middleware.js` line 171 - Change: `/og/home.jpg` → `/static/og/pozo-home.jpg` (if asset exists) 3. **Add Blog Page CollectionPage Schema** - File: `src/AdminPanel/Blog/Blog.jsx` - Add: CollectionPage JSON-LD schema - Add: BreadcrumbList JSON-LD schema ### After Migration 4. **Update All Canonical URLs** - Remove `/home/` prefix from all URLs - Update middleware path mapping - Update component URLs 5. **Verify OG Image Assets** - Ensure `/static/og/pozo-home.jpg` exists - Update all OG image paths if needed --- ## 🎯 Implementation Status | Page | Title | Meta Desc | Canonical | OG Tags | JSON-LD | Status | |------|-------|-----------|-----------|---------|---------|--------| | Home | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ | 80% | | Blog | ✅ | ✅ | ⚠️ | ✅ | ❌ | 60% | | Pricing | ✅ | ✅ | ⚠️ | ✅ | ✅ | 90% | **Overall**: 77% Complete --- **Last Updated**: 2025-01-27