Skip to content

Registro de Trabajo de Correo Electrónico del Cuestionario

1. Por qué Cloud Run → Google Sheet se estancó

  • El plan original enrutaba los envíos de cuestionarios a través de growth-quiz-writer en Cloud Run y luego capturaba cada cliente potencial en una hoja de cálculo de Google para que el equipo pudiera inspeccionar las puntuaciones y los niveles. Un POST curl a https://growth-quiz-writer-825297113896.asia-southeast1.run.app seguía devolviendo HTTP 403 (Prohibido), y ni Netlify ni Cloud Run registraban la invocación porque el servicio nunca recibía una solicitud válida.
  • Ejecutar gcloud run services add-iam-policy-binding growth-quiz-writer --member="allUsers" --role="roles/run.invoker" --region="asia-southeast1" --project=growth-archetype-quiz falló con PERMISSION_DENIED en locations/asia-southeast1. El comando se autenticó como el propietario de la organización, pero una política de la organización no permite el enlace, por lo que Cloud Run permaneció bloqueado y nada llegó a la hoja de cálculo de Google.
  • Debido a que el servicio Cloud Run nunca registró ningún intento de cuestionario, dejamos de seguir esa ruta y construimos la lógica de grabación dentro de este repositorio (netlify/functions/record-quiz.js) para que podamos iterar localmente y observar los registros de Netlify.

2. Función Netlify + retransmisión MailerSend

  • Netlify ahora recibe cada envío de cuestionario y llama a email-quiz-lead.js, que habla con MailerSend. Los primeros intentos de probar el nuevo punto final produjeron {"message":"Invalid JSON"} porque la carga útil JSON incluía nuevas líneas perdidas. El patrón confiable es volcar la carga útil en un archivo temporal a través de printf y dejar que curl -d @/tmp/quiz-payload.json lo envíe.
  • Las cuentas de prueba de MailerSend introdujeron sus propias barreras. Después de cambiar al nuevo flujo, vimos {"message":"Trial accounts can only send emails to the administrator's email. #MS42225","errors":{"to":["Trial accounts can only send emails to the administrator's email. #MS42225"],"from.email":["The from.email domain must be verified in your account to send emails. #MS42207"]}}. La solución fue:
    1. Establecer la dirección to igual al correo electrónico del administrador de MailerSend (el mismo que GROWTHQUIZ_EMAIL_TO durante el desarrollo).
    2. Verificar el dominio del remitente dentro de MailerSend para que from.email esté permitido.
  • Una vez que esos interruptores estuvieron en su lugar, el mismo comando curl devolvió {"message":"Email sent"} y los registros de Netlify registraron record-quiz invocando la retransmisión para el correo electrónico enviado.

3. Lista de verificación de pruebas

  1. Ejecute la vista previa de documentos (npm run docs:preview) y visite /es/quizzes/revenue-ops/.
  2. Ingrese un correo electrónico de trabajo, responda las siete preguntas y confirme que aparece la pantalla de nivel final con un mensaje de estado como Enviando su diagnóstico de Revenue Ops....
  3. Inspeccione los registros de Netlify record-quiz; deberían mostrar Triggering email relay for <email> y Email relay succeeded for <email>.
  4. Para reproducir la carga útil del cuestionario manualmente, use este fragmento de shell seguro:
bash
printf '%s' '{"email":"moses@growthflowengineering.xyz","answers":[5,3,1,5,3,1,5],"score":27,"tier":{"label":"Functional but Unstable Revenue Ops","description":"Growth is unpredictable and valuation multiples are suppressed.","action":"Align rituals, reporting, and incentives across GTM pods."}}' >/tmp/quiz-payload.json
curl -X POST https://websitegfe.netlify.app/.netlify/functions/email-quiz-lead \
  -H "Content-Type: application/json" \
  -H "x-growth-quiz-secret: GFEgfe@123#" \
  -d @/tmp/quiz-payload.json
  1. El modo de prueba de MailerSend aún requiere que la dirección de administrador verificada coincida con el campo to y que el dominio del remitente esté verificado antes de que pueda salir cualquier correo.

4. Resultado y próximos pasos

  • El cuestionario de Revenue Ops ahora refleja el flujo de Arquetipo de Crecimiento: captura de correo electrónico primero, centro de preguntas secuencial, resumen de nivel y retransmisión de MailerSend. La interfaz suma las respuestas numéricas, elige un nivel, muestra la copia y envía { email, answers, score, tier } a record-quiz.
  • Cuando cree futuros cuestionarios, copie docs/en/quizzes/quiz-template.md, actualice los valores de las preguntas y siga reutilizando el ayudante record-quiz + MailerSend. Si eventualmente necesita escribir en Sheets u otro almacén de datos nuevamente, extienda record-quiz antes de la llamada de correo electrónico para que ninguna ruta única bloquee la retransmisión de correo electrónico.