278 lines
9.2 KiB
Markdown
278 lines
9.2 KiB
Markdown
|
|
# 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
|
||
|
|
|