# Contact API — Guía de despliegue

Serverless que recibe el formulario del microsite Hyundai y reenvía los datos al asesor por email vía [Resend](https://resend.com). Sin límites diarios como los que tiene FormSubmit.

**Tiempo total:** ~15 minutos. Se hace **una sola vez**. Después el CMS y la guía de comerciales no cambian.

---

## 1. Cuenta Resend

Resend es un servicio de email transaccional. Tier gratis: **3.000 emails/mes** — muchísimo para esta campaña.

1. Regístrate en https://resend.com/signup con tu email corporativo
2. Confirma el email
3. En el dashboard, entra en **API Keys → Create API Key**
4. Nómbrala `hyundai-contact-api`, permisos `Sending access`, dominio `All domains`
5. **Copia la API key** (empieza por `re_...`). Solo se muestra una vez.

### 1b. (Opcional pero muy recomendado) Verificar dominio propio

Por defecto, Resend envía desde `onboarding@resend.dev`. Los correos llegan pero:
- Cliente de correo del asesor lo puede marcar como spam
- Aparece como remitente `Hyundai Empresas <onboarding@resend.dev>` — no muy profesional

Para enviar desde `no-reply@hyundai.es` o similar:

1. En Resend: **Domains → Add Domain** → introducir el dominio
2. Resend te da 3 registros DNS (SPF, DKIM, DMARC). Añadirlos donde gestionéis el DNS del dominio (Cloudflare, GoDaddy, Ionos…)
3. Volver a Resend y **Verify DNS Records** — tarda de 1 minuto a 24h
4. Cuando esté verificado, poner en la variable `MAIL_FROM` de Netlify el remitente que quieras

Si no queréis tocar DNS, saltad este paso — funciona con `onboarding@resend.dev` para pruebas y campañas internas.

---

## 2. Deploy a Netlify

### Opción A — Netlify Drop (más rápido)

1. Ir a https://app.netlify.com (con tu cuenta)
2. En el panel principal, arrastrar la **carpeta entera `contact-api/`** a la zona de drag-and-drop
3. Esperar 30-60 segundos hasta que aparezca la URL del site
4. **Renombrar el site** (Site settings → Change site name) a algo memorable, ej. `hyundai-contact-api`. Quedará `https://hyundai-contact-api.netlify.app/`

### Opción B — Netlify CLI (si vais a iterar)

```sh
cd ~/Documents/APPS/hyundai/contact-api
npx netlify-cli login
npx netlify-cli init      # elegir "Create & configure a new site"
npx netlify-cli deploy --prod
```

---

## 3. Configurar variables de entorno

En el dashboard del site en Netlify:

**Site settings → Environment variables → Add variable**

| Key | Value | Obligatoria |
|---|---|---|
| `RESEND_API_KEY` | La key `re_...` del paso 1 | Sí |
| `MAIL_FROM` | Ej. `Hyundai Empresas <no-reply@hyundai.es>` (si verificaste dominio) o dejar sin poner para usar `onboarding@resend.dev` | No |
| `ALLOWED_DOMAINS` | CSV de dominios permitidos como destinatario. Default: `hyundai.es,hyundai.com`. Añadir todos los del equipo comercial | No |

**Importante**: tras añadir/cambiar variables, hacer **redeploy** desde Deploys → Trigger deploy → Deploy site. Sin redeploy, las variables nuevas no las coge la función.

---

## 4. Probar la función

Con curl (sustituye la URL por la tuya):

```sh
curl -X POST https://hyundai-contact-api.netlify.app/contact \
  -H "Accept: application/json" \
  -F nombre="Test Pérez" \
  -F cargo="Director Flota" \
  -F empresa="Test S.L." \
  -F email="test@ejemplo.com" \
  -F _recipient="TU_EMAIL@hyundai.es" \
  -F respuestas_test="1. Pregunta → A. Respuesta" \
  -F flota_recomendada="Flota eléctrica"
```

Respuesta esperada: `{"ok":true,"success":"true"}` y correo en la bandeja del email que hayas puesto en `_recipient`.

**Si falla:**
- `{"ok":false,"error":"recipient_not_allowed"}` → el email de `_recipient` no está en `ALLOWED_DOMAINS`. Añadir el dominio y redeploy.
- `{"ok":false,"error":"service_not_configured"}` → falta `RESEND_API_KEY` en las env vars.
- `{"ok":false,"error":"resend_error", ...}` → algo rechazó Resend (dominio remitente sin verificar, etc.). Mira el `detail`.

---

## 5. Conectar el CMS

Abre `hyundai-cms-lite.html` en un editor de texto y busca:

```js
const CONTACT_API_URL = 'REEMPLAZAR_TRAS_DEPLOY';
```

Sustituye por tu URL real, ej:

```js
const CONTACT_API_URL = 'https://hyundai-contact-api.netlify.app/contact';
```

Guarda. Ya está — todos los microsites que generen los comerciales a partir de ahora usan el nuevo endpoint. No hay que rehacer los que ya estaban desplegados salvo que quieras migrarlos.

---

## Coste

- **Netlify**: gratis (125.000 invocaciones de función/mes en el free tier — imposible llegar con esta campaña).
- **Resend**: gratis (3.000 emails/mes). Si superáis, plan Pro son 20 $/mes por 50.000 emails.
- **Dominio verificado**: gratis, solo requiere acceso a DNS del dominio.

En condiciones normales, **coste 0 €**.

---

## Debugging

- **Logs de función en tiempo real**: Netlify dashboard → Functions → `contact` → click en cualquier invocación para ver el log.
- **Logs de Resend**: dashboard Resend → Emails → filtra por fecha para ver qué se ha enviado y estado.
- **CORS**: si el microsite está en otro dominio, ya está permitido (`Access-Control-Allow-Origin: *`). No debería dar problemas.

---

## Migración desde FormSubmit

Los microsites viejos siguen apuntando a FormSubmit. Opciones:

- **Dejarlos**: siguen funcionando con el tope de 50/día (o el que sea que os interese respetar).
- **Migrar**: regenerar cada microsite desde el CMS actualizado y sustituir el archivo desplegado.

Para campañas nuevas: el CMS ya genera microsites con el nuevo endpoint automáticamente, no hay que hacer nada.
