Esta plantilla crea una página de contacto estática con Astro y un endpoint en Google Apps Script que escribe los envíos en Google Sheets.
Pasos rápidos:
- Instalar dependencias:
npm install-
(Opcional) Si usas reCAPTCHA, obtén la clave en https://www.google.com/recaptcha/admin y añádela en tu configuración. Si no la usas, no es necesario.
-
Google Apps Script:
- Crear nuevo proyecto en https://script.google.com
- Pegar
google-apps-script/Code.gs - En
Script PropertiesañadirSPREADSHEET_ID. - Desplegar: "Deploy" → "New deployment" → tipo "Web app" → Ejecutar como: "Me" → Quién tiene acceso: "Anyone".
- Copiar la URL y ponerla en
APPS_SCRIPT_URLen.env.exampley ensrc/scripts/contact.js.
-
Ejecutar localmente:
npm run dev- Deploy: genera
npm run buildy publica en GitHub Pages (ramagh-pages) o usa flujo CI.
Notas de seguridad y privacidad: revisar README del plan para requerimientos de GDPR, retención y consentimiento.
Si quieres procesar envíos con n8n (por ejemplo para enviar emails, crear tickets o enriquecer datos), sigue estos pasos:
- En n8n crea un nodo Webhook configurado para
POSTy copia la URL del webhook. - En el editor de Apps Script añade las siguientes Script Properties (Project Properties):
SPREADSHEET_ID= ID de la hoja (si no existe ya)N8N_WEBHOOK_URL= URL del webhook de n8nN8N_SECRET= (opcional) secreto que Apps Script enviará en el headerX-N8N-SIGNATURE
- El
google-apps-script/Code.gsya reenviará automáticamente el payload JSON aN8N_WEBHOOK_URLdespués de validar y guardar en la hoja.- El payload contiene:
timestamp, name, email, phone, subject, message, consent.
- El payload contiene:
- Ejemplo de workflow típico en n8n:
Webhook->IF(verificarconsent) ->Google Sheets(append) ->Send Email(SendGrid) ->Slack(notificación)
- Prueba rápida desde terminal (ejemplo):
curl -X POST 'https://tu-n8n.example/webhook/rest/contact-webhook' \
-H 'Content-Type: application/json' \
-d '{ "name":"Prueba", "email":"test@example.com", "message":"Hola" }'- Seguridad: es recomendable configurar
N8N_SECRETy validar el headerX-N8N-SIGNATUREen n8n, o proteger el webhook mediante autenticación en tu instancia n8n.
Si quieres, puedo generar un ejemplo de workflow n8n en JSON o guiarte paso a paso para crear el webhook y la regla de validación en tu instancia.