# 📊 Sistema de Tracking de Contactos - CavalStudio

## Resumen

Sistema completo de seguimiento y conversión de leads que incluye:
- ✅ Guardado completo de datos de contacto en base de datos
- ✅ Pixel de tracking para emails abiertos  
- ✅ Página de agradecimiento con Calendly integrado
- ✅ Seguimiento automático por WhatsApp
- ✅ Cumplimiento GDPR con banner de cookies
- ✅ Google Analytics integrado
- ✅ Comandos para estadísticas y automatización

## 🔄 Flujo Completo

### 1. Envío de Formulario
- Usuario completa formulario de contacto
- Se guarda en tabla `contact_submissions` con tracking_id único
- Se envía email de confirmación con pixel de tracking
- Usuario es redirigido a página de agradecimiento

### 2. Página de Agradecimiento (`/contacto/gracias/{tracking_id}`)
- Muestra widget de Calendly con datos prellenados
- CTA secundario para WhatsApp inmediato
- Resumen del proyecto enviado
- Tracking de tiempo en página

### 3. Seguimiento Automático
- **Si usuario abre email**: Se registra en `email_opens` con IP y timestamp
- **Si hace clic en Calendly**: Se marca `calendly_clicked = true`
- **Si no agenda en 2h**: Sistema envía WhatsApp automático
- **Si agenda reunión**: Webhook de Calendly marca `meeting_scheduled = true`

## 📧 Sistema de Emails

### Email de Confirmación con Tracking
- **Template**: `templates/emails/contact_confirmation_tracking.html.twig`
- **Pixel**: `<img src="/track/email/{tracking_id}" />`
- **Enlace Calendly**: `/track/calendly/{tracking_id}` (redirecciona y trackea)
- **CTA WhatsApp**: Link directo con mensaje prellenado

### Datos Rastreados por Email
```php
[
    'opened_at' => '2025-01-31 10:30:00',
    'ip' => '192.168.1.1',
    'user_agent' => 'Mozilla/5.0...'
]
```

## 🗄️ Base de Datos

### Tabla `contact_submissions`
```sql
CREATE TABLE contact_submissions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    company VARCHAR(255),
    service VARCHAR(100),
    budget_range VARCHAR(50),
    message LONGTEXT NOT NULL,
    submitted_at DATETIME NOT NULL,
    
    -- Tracking info
    ip_address VARCHAR(45),
    user_agent VARCHAR(500),
    referer VARCHAR(500),
    
    -- Email tracking
    email_sent TINYINT(1) DEFAULT 0,
    email_opened_at DATETIME,
    email_opens JSON,
    
    -- Conversion tracking
    calendly_clicked TINYINT(1) DEFAULT 0,
    calendly_clicked_at DATETIME,
    whatsapp_sent TINYINT(1) DEFAULT 0,
    whatsapp_sent_at DATETIME,
    meeting_scheduled TINYINT(1) DEFAULT 0,
    meeting_scheduled_at DATETIME,
    
    -- Unique tracking
    tracking_id VARCHAR(32) NOT NULL,
    
    INDEX (tracking_id),
    INDEX (email),
    INDEX (submitted_at)
);
```

## 🛠️ Comandos de Consola

### Ver Estadísticas
```bash
# Estadísticas últimos 30 días
docker-compose exec cavalstudio_be php bin/console app:contact-stats

# Estadísticas período personalizado
docker-compose exec cavalstudio_be php bin/console app:contact-stats --days=7

# Ver submissions recientes (24h)
docker-compose exec cavalstudio_be php bin/console app:contact-stats --recent
```

### Seguimiento WhatsApp Automático
```bash
# Ejecutar manualmente
docker-compose exec cavalstudio_be php bin/console app:whatsapp-followup

# Automatizar con cron (cada 30 minutos)
*/30 * * * * docker-compose exec cavalstudio_be php bin/console app:whatsapp-followup
```

## 📊 Métricas de Conversión

El sistema calcula automáticamente:
- **Email Open Rate**: % de emails abiertos vs enviados
- **Calendly Click Rate**: % que hace clic en calendario vs total submissions
- **Conversion Rate**: % que agenda reunión vs total submissions
- **WhatsApp Follow-up**: Submissions que reciben seguimiento

### Ejemplo de Output
```
📊 Estadísticas de conversión (últimos 30 días)
+----------------------+----------+------------+
| Métrica              | Cantidad | Porcentaje |
+----------------------+----------+------------+
| Total submissions    | 45       | 100%       |
| Emails enviados      | 45       | -          |
| Emails abiertos      | 32       | 71.1%      |
| Clicks en Calendly   | 18       | 40.0%      |
| Reuniones agendadas  | 12       | 26.7%      |
| WhatsApp enviados    | 27       | -          |
+----------------------+----------+------------+
```

## 🔗 URLs de Tracking

### Principales Endpoints
- `POST /contact` - Envío de formulario
- `GET /contacto/gracias/{tracking_id}` - Página de agradecimiento
- `GET /track/email/{tracking_id}` - Pixel de tracking (1x1 GIF)
- `GET /track/calendly/{tracking_id}` - Link de Calendly con tracking
- `POST /webhooks/calendly` - Webhook para reuniones agendadas

### Parámetros de Tracking
- **tracking_id**: Hash MD5 único por submission
- **utm_source**: website
- **utm_medium**: thank-you-page
- **utm_campaign**: contact-form

## 🍪 GDPR & Cookies

### Banner de Consentimiento
- Aparece automáticamente si no hay consentimiento previo
- Opciones: "Aceptar todas" / "Solo necesarias"
- Guarda preferencia en localStorage
- Configura Google Analytics según consentimiento

### Formulario de Contacto
```html
<!-- Obligatorio -->
<input type="checkbox" name="privacy" required>
Acepto la política de privacidad...

<!-- Opcional -->
<input type="checkbox" name="marketing">
Acepto recibir comunicaciones comerciales...
```

## 📈 Google Analytics

### Eventos Trackeados
```javascript
// Envío exitoso de formulario
gtag('event', 'contact_form_success', {
    'event_category': 'Contact',
    'event_label': 'Form Submission'
});

// Tiempo en página de agradecimiento
gtag('event', 'thank_you_page_2min', {
    'event_category': 'Contact',
    'event_label': 'Time on Thank You Page'
});

// Interacciones con Calendly
gtag('event', 'calendly_interaction', {
    'event_category': 'Calendar',
    'event_label': 'calendly_event_scheduled'
});

// Clicks en WhatsApp
gtag('event', 'whatsapp_click', {
    'event_category': 'Contact',
    'event_label': 'WhatsApp CTA'
});
```

## 🔧 Configuración

### Variables de Entorno
```bash
# Emails
MAILER_DSN=smtp://user:pass@host:port
SENDER_EMAIL=cavalstudio12@gmail.com
SENDER_NAME="Caval Studio"

# Base de datos
DATABASE_URL=mysql://user:pass@host:3306/db_name

# URLs
APP_URL=https://cavalstudio.com
CALENDLY_URL=https://calendly.com/cavalstudio12/30min
WHATSAPP_NUMBER=584122128054
```

### Webhooks de Calendly
Configurar en Calendly Admin:
```
URL: https://cavalstudio.com/webhooks/calendly
Eventos: invitee.created, invitee.canceled
Account: cavalstudio12
Event Type: 30min
```

## 🚀 Automatización Recomendada

### Cron Jobs
```bash
# Seguimiento WhatsApp cada 30 minutos
*/30 * * * * /path/to/docker-compose exec cavalstudio_be php bin/console app:whatsapp-followup

# Estadísticas diarias a las 9 AM
0 9 * * * /path/to/docker-compose exec cavalstudio_be php bin/console app:contact-stats --recent | mail -s "Estadísticas CavalStudio" alejandro@cavalstudio.com
```

### Métricas a Monitorear
- **Open Rate < 20%**: Revisar subject lines
- **Click Rate < 15%**: Mejorar CTAs de Calendly  
- **Conversion < 10%**: Revisar proceso de seguimiento
- **WhatsApp enviados > 60%**: Optimizar urgencia en página de agradecimiento

## 🔍 Debugging

### Logs Útiles
```bash
# Ver logs de aplicación
docker-compose logs cavalstudio_be

# Ver envío de emails
grep "Email sent" /var/log/symfony.log

# Verificar tracking
SELECT * FROM contact_submissions WHERE email_opened_at IS NOT NULL;
```

### Problemas Comunes
1. **Pixel no trackea**: Verificar rutas y CORS
2. **Calendly no redirecciona**: Revisar URL en template de email
3. **WhatsApp no se envía**: Verificar permisos y API configurada
4. **Analytics no funciona**: Comprobar consentimiento de cookies

---

**🎯 Objetivo**: Lograr >25% de conversión (meetings scheduled / total submissions) 
**📞 Contacto**: alejandrosjrv@gmail.com para soporte técnico 