nandosr98 / laravel-remarketing
This is my package laravel-remarketing
Fund package maintenance!
laravel-remarketing
Installs: 11
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/nandosr98/laravel-remarketing
Requires
- php: ^8.2
- illuminate/contracts: ^11.0||^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.8
- orchestra/testbench: ^10.0.0||^9.0.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
README
Laravel Remarketing es una librería sencilla y flexible que permite automatizar el envío de correos electrónicos de remarketing a usuarios que han iniciado un proceso (por ejemplo, una compra o solicitud) pero no lo han completado.
La librería se integra fácilmente en cualquier proyecto Laravel y permite configurar el tiempo de espera, el asunto del correo, la plantilla Blade a usar y el nombre de la cola de ejecución.
🚀 Instalación
Instala el paquete mediante Composer:
composer require nandosr98/laravel-remarketing
Publica los archivos de configuración, vistas y migraciones:
php artisan vendor:publish --tag="remarketing-config" php artisan vendor:publish --tag="remarketing-views" php artisan vendor:publish --tag="remarketing-migrations"
Ejecuta la migración para crear la tabla de remarketing:
php artisan migrate
⚙️ Configuración
El archivo de configuración config/remarketing.php permite personalizar el comportamiento del sistema de remarketing:
return [ 'send_after_hours' => 1, // Número de horas después de las cuales se enviará el correo 'queue_name' => 'remarketing', // Nombre de la cola 'queue_connection' => 'redis', 'model_related' => App\Models\MiProducto::class, // Modelo relacionado 'model_related_property_name' => 'producto_id', // Nombre del campo de la relación 'model_related_method_name' => 'producto', // Metodo de la relación para acceder a los datos 'mailable_class' => RemarketingMessage::class, // Clase utilizada para enviar el correo 'mail_name' => 'Sender Name', // Nombre del remitente del correo 'mail_subject' => 'Subject of the email', 'mail_view' => 'remarketing::default', ];
🧱 Estructura de la tabla
La migración create_laravel_remarketing_table crea una tabla simple para almacenar los registros de remarketing:
| Campo | Tipo | Descripción |
|---|---|---|
| id | bigint | Identificador |
| model | string | Modelo relacionado (ej: App\Models\Order) |
| model_id | bigint | ID del modelo |
| sent | boolean | Si ya se ha enviado el email |
| queued | boolean | Si ya fue incluido en un Job |
| created_at | timestamp | Fecha de creación |
| updated_at | timestamp | Fecha de actualización |
🧠 Flujo de funcionamiento
- Creación de un registro
- Ejecución del comando → selecciona los registros pendientes y crea Jobs.
- Job de envío → manda el correo
RemarketingMessage. - Evento de apertura → marca el registro como abierto.
- Evento de eliminación → borra el registro cuando se completa la acción.
⚡ Comando Artisan
php artisan remarketing:queue
Este comando:
- Busca todos los
remarketingsno enviados. - Verifica que hayan pasado las horas definidas en
hours_delay. - Los marca como
queuedysent. - Lanza un Job por cada registro.
📬 Job: RemarketingJob
public function handle() { Mail::send(new RemarketingMessage($this->id)); }
💌 Mailable: RemarketingMessage
public function build() { $remarketing = BaseRemarketing::where('id', $this->id) ->with(config('remarketing.model_related_method_name')) ->first(); if (!$remarketing) { return null; } $remarketing->sent = true; $remarketing->save(); return $this->view(config('remarketing.mail_view')) ->subject(config('remarketing.mail_subject')); }
🎯 Eventos
| Evento | Descripción |
|---|---|
OpenedRemarketing |
Se lanza cuando el usuario abre el correo. |
DeleteRemarketing |
Se lanza cuando completa el proceso y se borra el registro. |
Ejemplo:
event(new DeleteRemarketing($remarketingId));
🧩 Service Provider
$package ->name('laravel-remarketing') ->hasConfigFile() ->hasViews() ->hasMigration('CreateRemarketingTable') ->hasCommands();
🧪 Ejemplo completo
use LaravelRemarketing\LaravelRemarketing\Models\Remarketing; BaseRemarketing::create([ 'model' => App\Models\User::class, 'model_id' => $user->id, ]); Artisan::call('remarketing:queue'); event(new DeleteRemarketing($remarketingId));
🕐 Cron recomendado
0 * * * * php /path/to/artisan remarketing:queue >> /dev/null 2>&1
🧰 Requisitos
- PHP ≥ 8.2
- Laravel ≥ 10
- Cola configurada (Redis, Database, SQS, etc.)
- Sistema de correo configurado
🧑💻 Autor
Desarrollado por nandosr98
Con ❤️ para la comunidad Laravel.