Rotar secrets y variables de entorno
Debes rotar un secret cuando: sospechas que fue comprometido, el proveedor lo invalida automáticamente, o como parte de tu política de seguridad periódica. Este artículo describe el procedimiento correcto para cada secret crítico del sistema.
Regla general
Siempre genera el nuevo secret antes de invalidar el anterior. Esto garantiza que no haya ventana de downtime entre la rotación y el redespliegue.
---
1. ELEVENLABS_WEBHOOK_SECRET
1. En ElevenLabs → Agents → tu agente → Webhook → haz clic en Rotate Signing Secret.
2. Copia el nuevo secret antes de confirmar la rotación.
3. En Vercel → Settings → Environment Variables, actualiza ELEVENLABS_WEBHOOK_SECRET con el nuevo valor.
4. Haz clic en Save en Vercel.
5. Redespliega el proyecto: en Vercel → Deployments → Redeploy (último deployment exitoso).
6. Confirma la rotación en ElevenLabs.
7. Verifica en los logs de Vercel que el próximo webhook llega con 200 OK.
ELEVENLABS_WEBHOOK_SECRET=whsec_NUEVO_SECRET_AQUI
---
2. PAYPAL_CLIENT_SECRET
1. En PayPal Developer Dashboard → My Apps & Credentials → tu app → haz clic en Rotate Secret.
2. Copia el nuevo Client Secret.
3. Actualiza PAYPAL_CLIENT_SECRET en Vercel.
4. Redespliega.
5. Prueba una orden de pago de prueba en sandbox para confirmar.
---
3. TWILIO_AUTH_TOKEN
Twilio tiene un Secondary Auth Token que permite la rotación sin downtime:
1. En la consola Twilio → Account → API keys & tokens → haz clic en Secondary auth token → Create.
2. Actualiza TWILIO_AUTH_TOKEN en Vercel con el Secondary Token.
3. Redespliega y verifica que los SMS siguen funcionando.
4. En Twilio, promueve el Secondary Token a Primary y genera un nuevo Secondary.
5. Actualiza Vercel de nuevo con el nuevo Primary.
---
4. RESEND_API_KEY
1. En Resend → API Keys → Create API Key (crea uno nuevo antes de eliminar el viejo).
2. Actualiza RESEND_API_KEY en Vercel.
3. Redespliega.
4. Envía un correo de prueba desde el dashboard.
5. Elimina el API Key viejo en Resend.
---
5. SUPABASE_SERVICE_ROLE_KEY
Este es el secret más crítico — tiene acceso total a la base de datos sin restricciones de RLS.
1. En Supabase → Project Settings → API → haz clic en Generate new service_role key (la función está en la parte inferior de la página).
2. Actualiza SUPABASE_SERVICE_ROLE_KEY en Vercel antes de que el key anterior expire.
3. Redespliega inmediatamente.
4. Confirma que el dashboard carga correctamente.
> Nunca expongas SUPABASE_SERVICE_ROLE_KEY en el cliente (nunca en variables NEXT_PUBLIC_*).
---
6. WHATSAPP_ACCESS_TOKEN
Los System User Tokens de Meta no tienen rotación automática, pero deben rotarse si el sistema de seguridad de Meta los revoca.
1. En Meta Business Manager → System Users → tu usuario → Generate Token.
2. Selecciona los permisos whatsapp_business_messaging y whatsapp_business_management.
3. Copia el nuevo token.
4. Actualiza WHATSAPP_ACCESS_TOKEN en Vercel y redespliega.
---
Verificación post-rotación (checklist)
Después de cualquier rotación, verifica:
- [ ] Los webhooks de ElevenLabs llegan con
200 OK - [ ] Los webhooks de PayPal llegan con
200 OK - [ ] Un recordatorio de prueba llega al canal configurado
- [ ] El dashboard carga las citas correctamente
- [ ] El widget en
/a/[slug]inicia llamadas sin error
Si algún item falla, revisa los Vercel Logs para identificar qué variable no fue actualizada correctamente.