Handle Paddle's marketing consent with Laravel
On Paddle, a buyer can opt-in to receive marketing emails and is stored as a new audience member.
But, by using an event listener, you can handle the Paddle's marketing consent on Laravel Cashier too.
The following example code uses a subscribed
user attribute, but you can use an external service or tool like Spatie's Mailcoach and have it synced.
<?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();
}
}
}
}