PHPackages                             sendkit/sendkit-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. sendkit/sendkit-laravel

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

sendkit/sendkit-laravel
=======================

SendKit integration for Laravel

1.1.4(1mo ago)1402↓10.4%MITPHPPHP ^8.3CI passing

Since Feb 28Pushed 1mo agoCompare

[ Source](https://github.com/sendkitdev/sendkit-laravel)[ Packagist](https://packagist.org/packages/sendkit/sendkit-laravel)[ RSS](/packages/sendkit-sendkit-laravel/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (17)Used By (0)

SendKit for Laravel
===================

[](#sendkit-for-laravel)

Official Laravel integration for [SendKit](https://sendkit.dev). Adds a `sendkit` mail transport and webhook handling.

Installation
------------

[](#installation)

```
composer require sendkit/sendkit-laravel
```

Configuration
-------------

[](#configuration)

Add your API key to `.env`:

```
MAIL_MAILER=sendkit
SENDKIT_API_KEY=your-api-key
```

Optionally publish the config file:

```
php artisan vendor:publish --tag=sendkit-config
```

Usage
-----

[](#usage)

### Sending Emails

[](#sending-emails)

Use Laravel's standard mail system — it just works:

```
Mail::to('recipient@example.com')->send(new WelcomeEmail());
```

### Using the SDK Directly

[](#using-the-sdk-directly)

```
use SendKit\Laravel\Facades\SendKit;

$response = SendKit::emails()->send([
    'from' => 'you@example.com',
    'to' => 'recipient@example.com',
    'subject' => 'Hello',
    'html' => 'Welcome!',
]);
```

### Contacts

[](#contacts)

```
use SendKit\Laravel\Facades\SendKit;

// Create or update a contact (upsert by email)
$contact = SendKit::contacts()->create([
    'email' => 'john@example.com',
    'first_name' => 'John',
    'last_name' => 'Doe',
    'list_ids' => ['list-uuid-1'],
    'properties' => ['COMPANY' => 'Acme'],
]);

// List contacts (paginated)
$contacts = SendKit::contacts()->list();
$contacts = SendKit::contacts()->list(['page' => 2]);

// Get a single contact
$contact = SendKit::contacts()->get('contact-uuid');

// Update a contact
$contact = SendKit::contacts()->update('contact-uuid', [
    'first_name' => 'Johnny',
]);

// Delete a contact
SendKit::contacts()->delete('contact-uuid');

// Add a contact to lists
SendKit::contacts()->addToLists('contact-uuid', ['list-uuid-1', 'list-uuid-2']);

// List a contact's lists
$lists = SendKit::contacts()->listLists('contact-uuid');

// Remove a contact from a list
SendKit::contacts()->removeFromList('contact-uuid', 'list-uuid');
```

### Contact Properties

[](#contact-properties)

```
use SendKit\Laravel\Facades\SendKit;

// Create a property ("string", "number", or "date")
$property = SendKit::contactProperties()->create([
    'key' => 'company',
    'type' => 'string',
    'fallback_value' => 'N/A',
]);

// List all properties
$properties = SendKit::contactProperties()->list();

// Update a property
SendKit::contactProperties()->update('property-uuid', [
    'key' => 'organization',
]);

// Delete a property
SendKit::contactProperties()->delete('property-uuid');
```

### Validating an Email

[](#validating-an-email)

```
use SendKit\Laravel\Facades\SendKit;

$result = SendKit::validateEmail('recipient@example.com');

$result['is_valid'];       // "HIGH" or "LOW"
$result['should_block'];   // true if the email should be blocked
$result['block_reason'];   // reason for blocking, or null
$result['evaluations'];    // detailed evaluation results
```

The `evaluations` array contains:

- `has_valid_syntax` — whether the email has valid syntax
- `has_valid_dns` — whether the domain has valid DNS records
- `mailbox_exists` — whether the mailbox exists
- `is_role_address` — whether it's a role address (e.g. info@, admin@)
- `is_disposable` — whether it's a disposable email
- `is_random_input` — whether it appears to be random input

> **Note:** Each validation costs credits. A `SendKitException` with status 402 is thrown when credits are insufficient.

Webhooks
--------

[](#webhooks)

Webhook handling is auto-registered at `POST /webhook/sendkit`.

### Setup

[](#setup)

Add your webhook secret to `.env`:

```
SENDKIT_WEBHOOK_SECRET=your-webhook-secret
```

### Listening for Events

[](#listening-for-events)

```
use SendKit\Laravel\Events\EmailDelivered;

Event::listen(EmailDelivered::class, function ($event) {
    // $event->payload contains the webhook data
});
```

### Available Events

[](#available-events)

- `EmailSent` — `email.sent`
- `EmailDelivered` — `email.delivered`
- `EmailBounced` — `email.bounced`
- `EmailComplained` — `email.complained`
- `EmailOpened` — `email.opened`
- `EmailClicked` — `email.clicked`
- `EmailFailed` — `email.failed`
- `EmailDeliveryDelayed` — `email.delivery_delayed`
- `EmailRejected` — `email.rejected`
- `ContactCreated` — `contact.created`
- `ContactUpdated` — `contact.updated`
- `ContactDeleted` — `contact.deleted`

###  Health Score

48

—

FairBetter than 94% of packages

Maintenance96

Actively maintained with recent releases

Popularity20

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

16

Last Release

50d ago

PHP version history (2 changes)1.0.0PHP ^8.2

1.1.4PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/f9e70d6932393807b7cfa41b9c6ecc26eda3969de27abce2cde3b4b77171e138?d=identicon)[paulocastellano](/maintainers/paulocastellano)

---

Top Contributors

[![paulocastellano](https://avatars.githubusercontent.com/u/265964?v=4)](https://github.com/paulocastellano "paulocastellano (26 commits)")

---

Tags

laravelmailemailsendkit

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/sendkit-sendkit-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/sendkit-sendkit-laravel/health.svg)](https://phpackages.com/packages/sendkit-sendkit-laravel)
```

###  Alternatives

[propaganistas/laravel-disposable-email

Disposable email validator

5762.6M6](/packages/propaganistas-laravel-disposable-email)[coconutcraig/laravel-postmark

Laravel package for sending mail via the Postmark API

2152.9M1](/packages/coconutcraig-laravel-postmark)[rulr/laravel-mailpot

A local mail inbox for Laravel

161.9k](/packages/rulr-laravel-mailpot)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
