Laravel 5 / Lumen 5 SparkPost Webhook Controller
, (*1)
A simple SparkPost webhook controller to help with email events. Useful for notifying users that you cannot reach them via email inside your application. Compatible with Laravel 5+ and Lumen 5+., (*2)
Installation
composer require brentnd/laravel-sparkposthooks, (*3)
Basic Usage
1) Create a controller that extends SparkPostWebhookController as follows. You can then handle any SparkPost webhook event., (*4)
use Brentnd\Api\Webhooks\SparkPostWebhookController;
class MySparkPostController extends SparkPostWebhookController {
/**
* Handle a bounced email
*
* @param $payload
*/
public function handleMessageEventBounce($payload)
{
$email = $payload['rcpt_to'];
}
/**
* Handle a rejected email
*
* @param $payload
*/
public function handleMessageEventPolicyRejection($payload)
{
$email = $payload['rcpt_to'];
}
/**
* Handle an email open
*
* @param $payload
*/
public function handleTrackEventOpen($payload)
{
$transmissionId = $payload['transmission_id'];
}
}
2) Create the route to handle the webhook. In your routes.php file add the following., (*5)
post('sparkpost-webhook', ['as' => 'sparkpost.webhook', 'uses' => 'MySparkPostController@handleWebhook']);
3) Exclude your route from CSRF protection so it will not fail., (*6)
4) Make sure you add your webhook in SparkPost to point to your route. You can do this here: https://app.sparkpost.com/webhooks, (*7)
Webhook Events
Webhook event types:, (*8)
Common events and their handlers. For other events, just follow the same pattern., (*9)
| Event type |
Event |
Method |
| Ping |
- |
handlePing() |
| Message Events |
Bounce |
handleMessageEventBounce() |
| Message Events |
Delivery |
handleMessageEventDelivery() |
| Message Events |
Injection |
handleMessageEventInjection() |
| Message Events |
Policy Rejection |
handleMessageEventPolicyRejection() |
| Message Events |
Delay |
handleMessageEventDelay() |
| Engagement Events |
Click |
handleTrackEventClick() |
| Engagement Events |
Open |
handleTrackEventOpen() |
| Engagement Events |
Initial Open |
handleTrackEventInitialOpen() |
| Unsubscribe Events |
List Unsubscribe |
handleUnsubscribeEventListUnsubscribe() |
| Unsubscribe Events |
Link Unsubscribe |
handleUnsubscribeEventLinkUnsubscribe() |
Contributors
Based on eventhomes/laravel-mandrillhooks, (*10)