Gestionar el consentimiento de marketing de Paddle con Laravel

En Paddle, un comprador puede optar por recibir emails de marketing y es almacenado como un miembro nuevo de audiencia.

Pero, al emplear un event listener puedes gestionar el consentimiento de marketing en Paddle con Laravel Cashier.

En el siguiente ejemplo empleo el atributo de usuario subscribed, pero también puedes usar un servicio externo o herramienta como Mailcoach de Spatie y tenerlo sincronizado.

<?php

namespace App\Listeners;

use App\Models\User;
use Laravel\Paddle\Events\WebhookReceived;

class PaddleEventListener
{
    public function handle (WebhookReceived $event)
    {
        if ($event->payload['alert_name' ] === 'new_audience member') {
            if ($user = User::whereEmail($event->payload['email'])->first()) {
                $user->fill([
                    'subscribed' => $event->payload['marketing_consent'],
                ])->save();
            }
        }

        if ($event->payload['alert_name'] === 'update_audience_member') {
            if ($user = User::whereEmail($event->payload['new_customer_email'])->first()) {
                $user->fill([
                    'subscribed' => $event->payload['new_marketing_consent'],
                ])->save();
            }
        }
    }
}