Optimizando el Envío de Campañas en Laravel con Resend

Introducción

En el proyecto devlog-ist/landing, nos enfrentamos a un problema de límites en el envío de campañas por correo electrónico debido a la gestión de audiencias en Resend. El proyecto es una landing page que busca captar usuarios y mantenerlos informados a través de campañas.

El Problema

El servicio de envío de campañas estaba creando una nueva audiencia en Resend para cada campaña. Resend impone un límite en la cantidad de segmentos (audiencias) permitidos por plan, lo que provocaba que rápidamente se agotara el límite, impidiendo el envío de más campañas.

La Solución: Reutilización de Audiencia y Manejo de Fallos

Para solucionar este problema, se implementó una estrategia de reutilización de una única audiencia compartida en Resend. Antes de enviar una nueva campaña, la audiencia existente se elimina y se vuelve a crear, asegurando que siempre haya una audiencia disponible sin exceder los límites del plan. Este proceso se gestiona de forma automática.

Además, para mejorar el seguimiento y la gestión de las campañas, se añadió una columna failure_reason a la tabla campaigns. Esta columna almacena el motivo del fallo en caso de que una campaña no se envíe correctamente. La interfaz de usuario de Filament se actualizó para mostrar esta información, facilitando la identificación y resolución de problemas.

// Ejemplo ilustrativo del proceso (no código real)
class CampaignService
{
    public function sendCampaign(Campaign $campaign)
    {
        try {
            $this->recreateAudience();
            // Lógica para enviar la campaña usando Resend
        } catch (Exception $e) {
            $campaign->failure_reason = $e->getMessage();
            $campaign->save();
            throw $e;
        }
    }

    private function recreateAudience()
    {
        // Lógica para eliminar y recrear la audiencia en Resend
    }
}

Resultados

  • Se eliminó la restricción impuesta por el límite de segmentos en Resend, permitiendo el envío de un número ilimitado de campañas (dentro de los límites generales del plan).
  • Se mejoró la capacidad de diagnóstico de fallos en las campañas gracias al registro del motivo del fallo y su visualización en la interfaz de Filament.

Próximos Pasos

  1. Implementar un sistema de reintentos automáticos para campañas fallidas.
  2. Añadir métricas de seguimiento del rendimiento de las campañas (tasa de apertura, tasa de clics, etc.).

Conclusión

La reutilización de audiencias en Resend y la mejora en el manejo de fallos han optimizado significativamente el proceso de envío de campañas en devlog-ist/landing. Estas mejoras aseguran que el proyecto pueda mantener a sus usuarios informados de manera eficiente y fiable.

Optimizando el Envío de Campañas en Laravel con Resend
Gerardo Ruiz

Gerardo Ruiz

Author

Share: