PozoAppCommonUpdatedCode/WEBINAR_INTEGRATION.md

285 lines
6.5 KiB
Markdown
Raw Permalink Normal View History

2025-12-05 09:45:16 +05:30
# Webinar Integration Documentation
## Overview
This document provides technical details for the PozoApp webinar landing pages, including admin panel integration, GTM tracking, and performance optimization.
## Admin Panel Integration
### Data Structure
Both webinar forms submit data to the admin panel using the `postAdminPanel` API endpoint (`/HomePage`).
#### Main Webinar Registration
**SectionName:** `WebinarRegistrations`
**Content (JSON):**
```json
{
"fullName": "string",
"storeName": "string",
"city": "string",
"state": "string",
"whatsapp": "string",
"email": "string",
"outlets": "string (1 / 2-3 / 4+)",
"currentPOS": "string",
"problems": ["array of selected problems"],
"language": "string",
"consent": boolean,
"utm_source": "string",
"utm_medium": "string",
"utm_campaign": "string",
"utm_term": "string",
"utm_content": "string",
"submittedAt": "ISO 8601 timestamp",
"pageUrl": "string",
"userAgent": "string"
}
```
#### Post-Webinar Recording Access
**SectionName:** `WebinarRecordingAccess`
**Content (JSON):**
```json
{
"fullName": "string",
"email": "string",
"storeName": "string (optional)",
"consent": boolean,
"leadType": "recording-access",
"utm_source": "string",
"utm_medium": "string",
"utm_campaign": "string",
"utm_term": "string",
"utm_content": "string",
"submittedAt": "ISO 8601 timestamp",
"pageUrl": "string",
"userAgent": "string"
}
```
### API Request Format
```javascript
{
SectionName: 'WebinarRegistrations' | 'WebinarRecordingAccess',
Content: JSON.stringify(formData),
CreatedBy: 0, // Public form submission
ActiveStatus: 'A'
}
```
## GTM Event Tracking
### Setup
1. Replace `GTM-XXXXXXX` in `index.html` with your actual GTM container ID
2. Events are automatically tracked via `window.dataLayer.push()`
### Events
#### Page View
```javascript
{
event: 'page_view',
page_path: '/webinar',
page_title: 'Webinar Landing Page'
}
```
#### Webinar Registration
```javascript
{
event: 'webinar_registration',
formData: {
email: 'user@example.com',
outlets: '2-3',
utm_source: 'google',
utm_medium: 'cpc',
utm_campaign: 'webinar_2025',
utm_term: 'retail_pos',
utm_content: 'ad_variant_a'
}
}
```
#### Recording Access
```javascript
{
event: 'webinar_recording_access',
formData: {
email: 'user@example.com',
utm_source: 'email',
utm_medium: 'newsletter',
utm_campaign: 'webinar_followup'
}
}
```
## Consent Tracking
### Requirements
Both forms require explicit consent before submission:
**Main Webinar:** "I agree to receive event reminders and follow-ups on WhatsApp/email."
**Post-Webinar:** "I agree to receive follow-up emails from the Pozo team"
### Implementation
- Consent checkbox is **required** (HTML5 validation)
- JavaScript validation shows error message if unchecked
- Consent value is stored in admin panel as boolean
- Timestamp of submission is recorded
## Performance Optimization
### Implemented Optimizations
1. **Scroll Handler Debouncing**
- Scroll events debounced by 50ms
- Uses `{ passive: true }` for better performance
- Reduces unnecessary re-renders
2. **Image Optimization**
- Logo images use optimized WebP format
- Explicit width/height to prevent layout shift
3. **CSS Optimizations**
- Efficient selectors
- Minimal use of box-shadow
- Optimized animations with `cubic-bezier` timing
### Performance Targets
- **LCP (Largest Contentful Paint):** < 2.0s on 4G
- **FID (First Input Delay):** < 100ms
- **CLS (Cumulative Layout Shift):** < 0.1
### Testing
Run Lighthouse audit:
```bash
npm run build
npx serve -s dist
# Open Chrome DevTools > Lighthouse > Run audit
```
## Canonical URL Setup
### Current Setup
- Main webinar: `/webinar`
- Post-webinar: `/webinar/recording`
### Production Deployment
1. Ensure HTTPS is enforced
2. Add canonical tags in `index.html`:
```html
<link rel="canonical" href="https://yourdomain.com/webinar" />
```
3. Set up 301 redirects for any alternate URLs
## UTM Parameter Tracking
### Supported Parameters
- `utm_source` - Traffic source (e.g., google, facebook, email)
- `utm_medium` - Marketing medium (e.g., cpc, social, newsletter)
- `utm_campaign` - Campaign name (e.g., webinar_2025_q1)
- `utm_term` - Paid keywords (e.g., retail_pos_software)
- `utm_content` - Ad variant (e.g., ad_variant_a)
### Example URLs
```
https://yourdomain.com/webinar?utm_source=google&utm_medium=cpc&utm_campaign=webinar_2025&utm_term=retail_pos&utm_content=ad_variant_a
https://yourdomain.com/webinar/recording?utm_source=email&utm_medium=newsletter&utm_campaign=webinar_followup
```
### Data Flow
1. URL parameters are captured on page load
2. Stored in form submission
3. Sent to admin panel
4. Tracked in GTM events
## Error Handling
### Form Validation
- HTML5 validation for required fields
- JavaScript validation for consent checkbox
- Email format validation (browser native)
### API Error Handling
```javascript
try {
const response = await dispatch(postAdminPanel(data)).unwrap();
if (response?.data?.statusCode === 1) {
// Success
message.success('Registration successful!');
} else {
// API returned error
message.error('Registration failed. Please try again.');
}
} catch (error) {
// Network or other error
console.error('Form submission error:', error);
message.error('An error occurred. Please try again later.');
}
```
### User Feedback
- Success: Ant Design `message.success()`
- Error: Ant Design `message.error()`
- Loading state: Button shows "Submitting..." and is disabled
## Security Considerations
1. **HTTPS Only:** Enforce HTTPS in production
2. **CORS:** Ensure admin panel API allows requests from webinar domain
3. **Rate Limiting:** Consider implementing rate limiting on API
4. **Data Sanitization:** Form data is JSON stringified before storage
5. **No Sensitive Data:** Avoid storing passwords or payment info
## Maintenance
### Regular Tasks
1. **Monitor Form Submissions**
- Check admin panel for new leads
- Verify UTM tracking is working
- Review error logs
2. **Performance Monitoring**
- Run monthly Lighthouse audits
- Monitor Core Web Vitals in Google Search Console
- Check GTM event firing in Preview mode
3. **Content Updates**
- Update event dates/times
- Refresh testimonials
- Update FAQ as needed
## Support
For technical issues:
- Check browser console for errors
- Verify GTM container ID is correct
- Test form submission in admin panel
- Review network tab for API responses
For questions, contact the development team.