Cómo crear una lista de suscriptores con Go y AWS

A continuación, explicaremos Cómo crear una lista de suscriptores con Go y AWS.

Simple Subscribe

Si se busca administrar una lista propia de correo o boletín informativo, se puede configurar Simple Subscribe en los propios recursos de AWS para recopilar direcciones de correo electrónico.

Esta API de código abierto está escrita en Go y se ejecuta en AWS Lambda, funciona así: los visitantes del sitio pueden registrarse en su lista, que se almacena en una tabla de DynamoDB, lista para ser consultada o exportada cuando se desee.

Cuando alguien se registre, recibirá un correo electrónico pidiéndole que confirme su suscripción. En ocasiones, esto se denomina “suscripción doble”, aunque también puede ser “verificado”.

Simple Subscribe funciona en una infraestructura sin servidor y utiliza AWS Lambda para gestionar las solicitudes de suscripción, confirmación y cancelación de suscripción.

Se puede encontrar el proyecto Simple Subscribe, con su código de fuente completamente abierto, en GitHub

Cómo crear un flujo de suscripción verificado

Un proceso de registro de correo electrónico no verificado es sencillo. Alguien coloca su correo electrónico en un cuadro de su sitio web, luego ese correo electrónico va a una base de datos.

Si bien se puede usar una estrategia como un Captcha o un rompecabezas para la verificación del usuario, estos pueden crear suficiente fricción como para rechazar a los suscriptores potenciales.

En cambio, un correo electrónico de confirmación puede ayudar a garantizar tanto la corrección de la dirección como la sensibilidad del usuario.

Para crear un flujo de suscripción con confirmación por correo electrónico, hay que crear funciones de responsabilidad única que satisfagan cada paso lógico. Esos son:

  • Aceptar una dirección de correo electrónico y registrarla.
  • Generar un token asociado con esa dirección de correo electrónico y registrarlo.
  • Enviar un correo electrónico de confirmación a esa dirección de correo electrónico con el token.
  • Aceptar una solicitud de verificación que tenga tanto la dirección de correo electrónico como el token.

Para lograr cada uno de estos objetivos, Simple Subscribe utiliza el AWS SDK for Go para interactuar con DynamoDB y SES.

En cada etapa, hay que considerar cómo se ven los datos y cómo los almacena. Esto puede ayudar a resolver cuestiones como, “¿Qué sucede si alguien intenta suscribirse dos veces?” o incluso modelos de amenazas como, “¿qué pasa si alguien se suscribe con un correo electrónico que no es de su propiedad?”

Suscripción

El proceso de suscripción comienza con un formulario web. Una entrada de formulario con atributos type=”email” requiere de ayuda con la validación. Cuando se envía el formulario, manda una solicitud GET al punto final de suscripción de suscripción simple.

Simple Subscribe recibe una solicitud GET a este punto final con una cadena de consulta que contiene el correo electrónico del suscriptor previsto. Luego genera un valor id y agrega ambos emails en la tabla de DynamoDB.

La columna confirm, indica que el artículo es una solicitud de suscripción que aún no se ha confirmado. Para verificar una dirección de correo electrónico en la base de datos, se deberá encontrar el elemento correcto y cambiar confirma o verdad.

Mientras trabaja con sus datos, considere el objetivo de cada manipulación y cómo podría comparar una solicitud entrante con los datos existentes.

Por ejemplo, si alguien realiza una solicitud de suscripción posterior para la misma dirección de correo electrónico, ¿cómo se manejaría?

Dado que los precios de DynamoDB dependen de la cantidad de datos que lea y escriba en sus tablas, es ventajoso evitar acumular datos en exceso.

Con esto presente, sería prudente manejar las solicitudes de suscripción para el mismo correo electrónico realizando una actualización en lugar de agregar una nueva línea.

Simple Subscribe en realidad usa la misma función para agregar o actualizar un elemento de la base de datos. Por lo general, esto se conoce como “actualizar o insertar”.

En el caso de DynamoDB, utiliza una operación de actualización. Para Go SDK, su sintaxis es UpdateItem.

Cuando se recibe una solicitud de suscripción duplicada, el elemento de la base de datos solo se empareja con el email. Si se encuentra un artículo de línea existente, se anulan sus id y timestamp, lo que actualiza el registro de la base de datos existente.

Verificar direcciones de correo electrónico

Después de enviar el formulario, el suscriptor previsto recibe un correo electrónico de SES que contiene un enlace. Este enlace se construye usando email y id de la tabla, además de tomar el formato:

<BASE_URL><VERIFY_PATH>/?email=subscriber@example.com&id=uuid-xxxxx

En esta configuración, la id es un UUID que actúa como un token secreto. Proporciona un identificador que puede hacer coincidir que es complejo y difícil de adivinar. Este enfoque disuade a las personas de suscribirse con direcciones de correo electrónico que no controlan.

Al ir el enlace, se envía una solicitud a su punto final de verificación con un id email en la cadena de consulta.

Es importante comparar tanto los valores entrantes email como los id del registro de la base de datos. Esto verifica que el destinatario del correo electrónico de confirmación está iniciando la solicitud.

A continuación, se realiza otra operación de actualización de conjunto confirma true, y actualizar la marca de tiempo.

Cómo proporcionar enlaces para darse de baja

Similar a verificar una dirección de correo electrónico, Simple Subscribe utiliza un email y id de los argumentos a la función que elimina un elemento de la tabla de DynamoDB para cancelar la suscripción de una dirección de correo electrónico.

Para permitir que las personas se eliminen de la lista, se deberá proporcionar una URL en cada correo electrónico que envíe un email e id como una cadena de consulta para el punto final de cancelación de suscripción. Se vería algo como:

<BASE_URL><UNSUBSCRIBE_PATH>/?email=subscriber@example.com&id=uuid-xxxxx

Cuando se hace clic en el enlace, la cadena de consulta se pasa al punto final de cancelación de suscripción. Si el elemento proporcionado de email y id coincide con un elemento de la base de datos, ese elemento se eliminará.

Cómo cuidar los datos

Para Simple Subscribe, este proceso significa mantener la seguridad de la base de datos. Para evitar retener direcciones de correo electrónico cuando confirm y false pasó un cierto período de tiempo, sería buena idea configurar una función de limpieza que se ejecute en un horario regular. Esto se puede lograr manualmente, con una función de AWS Lambda o mediante la línea de comandos.

Para limpiar, se requiere buscar elementos de la base de datos donde confirm sea false y timestamp sea ​​más antiguo que un punto en particular en el tiempo. Dependiendo de su caso de uso y los volúmenes de solicitud, la frecuencia con la que elija limpiar variará.

Además, dependiendo del caso de uso, es posible que se desee mantener copias de seguridad de sus datos. Si se está particularmente preocupado por la integridad de los datos, puede explorar la copia de seguridad bajo demanda o la recuperación en un momento determinado para DynamoDB.

Leíste: Cómo crear una lista de suscriptores con Go y AWS, te recomendamos: Cómo mejorar elementos vitales web en WordPress

Te invitamos a que nos sigas en nuestras redes sociales: Facebook, Twitter, Instagram y Youtube con el perfil: @tortugacode