PHPackages                             noardcode/laravel-signhost - 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. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. noardcode/laravel-signhost

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

noardcode/laravel-signhost
==========================

Official Laravel package for Signhost.

v1.1.0(today)6551MITPHPPHP ^8.2|^8.3|^8.4|^8.5CI passing

Since Jan 9Pushed 5mo agoCompare

[ Source](https://github.com/noardcode/laravel-signhost)[ Packagist](https://packagist.org/packages/noardcode/laravel-signhost)[ Docs](https://www.noardcode.nl)[ RSS](/packages/noardcode-laravel-signhost/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (14)Versions (3)Used By (0)

[![CI](https://github.com/noardcode/laravel-signhost/actions/workflows/ci.yml/badge.svg)](https://github.com/noardcode/laravel-signhost/actions/workflows/ci.yml)[![Latest Version on Packagist](https://camo.githubusercontent.com/3ed59ad9da6617de15a5b437510da895e21a815302e03c005cc55b1d175a0df9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6e6f617264636f64652f6c61726176656c2d7369676e686f73742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/noardcode/laravel-signhost)[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE.md)[![PHP Version](https://camo.githubusercontent.com/fca6a5abe8cb8ca5a09d7514f79421a5acfc883e66c5e71627c5051291b2c4ce/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d626c75653f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/fca6a5abe8cb8ca5a09d7514f79421a5acfc883e66c5e71627c5051291b2c4ce/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d626c75653f7374796c653d666c61742d737175617265)[![Laravel Version](https://camo.githubusercontent.com/1cbb4fa4e7002fd12be04e5545f811339154e65c314fa78a0fcbb022e7d8effe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31312d6f72616e67653f7374796c653d666c61742d737175617265)](https://camo.githubusercontent.com/1cbb4fa4e7002fd12be04e5545f811339154e65c314fa78a0fcbb022e7d8effe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31312d6f72616e67653f7374796c653d666c61742d737175617265)

Laravel Signhost
================

[](#laravel-signhost)

**Laravel Signhost** is the official Laravel package for integrating [Signhost](https://www.signhost.com/) document signing and digital identification into your Laravel project. It is maintained and supported by [NoardCode](https://www.noardcode.nl/).

This package provides a clean, expressive API for interacting with the Signhost signing and identification platform directly from your Laravel applications.

---

Table of Contents
-----------------

[](#table-of-contents)

- [Electronic Signature](#electronic-signature)
- [ID Proof](#digital-identification-idproof)
- [Requirements](#requirements)
- [Getting Started with Laravel Signhost](#getting-started-with-laravel-signhost)
    - [Simulation Mode](#simulation-mode-no-account-required)
    - [Moving to a Real Signhost Account](#moving-to-a-real-signhost-account)
    - [Enabling Digital Identification (IdProof)](#enabling-digital-identification-idproof)
- [Installation](#installation)
- [Database Migrations](#database-migrations)
- [Example Usage: Signing Workflows](#example-usage-signing-workflows)
    - [Creating a basic transaction for a signature](#creating-a-basic-transaction-for-a-signature)
    - [Using FormSets to create a more advanced transaction](#using-formsets-to-create-a-more-advanced-transaction)
    - [Storing document and receipt from a finished transaction](#storing-document-and-receipt-from-a-finished-transaction)
- [Example Usage: IdProof Workflows](#example-usage-idproof-workflows)
    - [Digital Identification (IdProof)](#digital-identification-idproof)
    - [Handling the Postback](#handling-the-postback)
    - [Retrieving the Dossier documents](#retrieving-the-dossier-documents)
- [Using simulation mode](#using-simulation-mode)
    - [Simulating a Signing Activity Webhook](#simulating-a-signing-activity-webhook)
    - [Simulating a Signhost ID Proof Webhook](#simulating-a-signhost-id-proof-webhook)
- [Events](#events)
- [Storage Structure](#storage-structure)
- [Contributing](#contributing)
- [Security](#security-vulnerabilities)
- [License](#license)
- [Support](#support)

---

Electronic Signature
--------------------

[](#electronic-signature)

[Signhost Electronic Signature](https://www.signhost.com/products/electronic-signature) enables you to sign documents online in a legally binding and compliant way.

Documents can be digitally signed by one or multiple parties using a variety of verification methods, ensuring integrity and non-repudiation.

**Key features include:**

- Legally binding digital signatures compliant with **eIDAS** and other Global standards
- Support for multiple signers and workflows
- Seamless integration with popular services such as **iDEAL** (which becomes [Wero](https://wero-wallet.eu) in 2027), **SMS**, or **email verification**

> **Please Note:**
> Signhost only stores your signed files for 30 days. After that, they are deleted and can no longer be downloaded. Make sure to store your files in a secure location.

---

ID Proof
--------

[](#id-proof)

Beyond digital signing, Signhost offers [ID Proof](https://www.signhost.com/products/digital-identification), a solution for comprehensive digital identity verification. This package supports the verification of Passports, ID Cards, and Residence Permits.

> **Please Note:**
> ID Proof is a distinct solution from Signhost's Digital Signing product. You may use this package to implement ID Proof as a standalone service or combined with the signing workflow.

The end-user receives a link to a web form to complete the identification process using one of the following methods:

- **Camera + Selfie Check:** Uses OCR (Optical Character Recognition) and facial biometrics.
- **NFC via ReadID App:** Reads the chip via the external ReadID application.
- **NFC via Signhost App:** Reads the chip directly via the Signhost application.

---

Requirements
------------

[](#requirements)

- PHP 8.2 or higher
- Laravel 11 or higher
- A [Signhost account](https://www.signhost.com) (not required for simulation mode)

---

Getting Started with Laravel Signhost
-------------------------------------

[](#getting-started-with-laravel-signhost)

Laravel Signhost supports both **simulation** and **production** environments.
This lets you start developing and testing immediately without an active Signhost account.

### Simulation Mode (No Account Required)

[](#simulation-mode-no-account-required)

You can start testing right away using **simulation mode**.
This mode does not require any Signhost credentials and lets you experiment with the entire signing and identification flow using fake data.

```
SIGNHOST_MODE=simulation
```

In this mode you can:

- Create and test transactions
- Add signers and simulate signing events
- Explore IdProof flows safely
- Run tests in CI environments

All interactions happen locally, no external API requests are made.
This makes it ideal for initial development, local demos, or automated test pipelines.

---

### Moving to a Real Signhost Account

[](#moving-to-a-real-signhost-account)

When you’re ready to go live, switch to **production mode** and connect to your real Signhost account. All configuration values can be set via .env. The package automatically detects these values from your Laravel configuration.

```
SIGNHOST_MODE=production
SIGNHOST_USER_TOKEN=your_user_token
SIGNHOST_CLIENT_SECRET=your_client_secret
SIGNHOST_APP_KEY=your_app_key
SIGNHOST_WEBHOOK_TOKEN=your_webhook_token
SIGNHOST_WEBHOOK_SECRET=your_webhook_secret
```

**Steps to activate:**

1. Create an account at [signhost.com](https://www.signhost.com) → **Sign up**
2. Log in to the **Developer Portal** to generate your credentials
3. Fill in your `.env` file as shown above
4. Start testing live transactions. Your account includes **initial test credits** so you can safely experiment before going fully live.

**Enabling Webhooks:**

To receive transaction updates from Signhost, set up a webhook in your Signhost account using your **webhook secret** and **token**. The default webhook URL this package provides is:

```
[your-url]/signhost/postback/transaction

```

To be able to receive webhooks, this endpoint must:

- Be publicly accessible from the internet (or use NGROK or a similar tool)
- Respond with an **HTTP 200** status to a **POST** request

---

### Enabling Digital Identification (IdProof)

[](#enabling-digital-identification-idproof)

> **Please Note:**
> To access the production API for ID proof, you **must** implement an IdProof verification endpoint that returns a 200 status code to a POST request. This step is required and cannot be skipped.

If you want to use **Digital Identification (IdProof)**, it’s recommended to first test your full implementation in **simulation mode**.

Once tested, follow these steps to enable IdProof in production:

1. **Contact Signhost Support** to request activation of the IdProof service
    →
2. A Signhost representative will help you set up the service. Be aware that this process can take up to 2 weeks.
3. Provide a **valid return endpoint** that can be reached publicly: ```
    [your-url]/signhost/postback/idproof

    ```

    This endpoint must:
    - Be publicly accessible from the internet
    - Respond with an **HTTP 200** status to a **POST** request

After verification, Signhost will activate the IdProof service for your account, and you’ll be able to process real identity verifications in your Laravel application.

---

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

[](#installation)

Install the package via Composer:

```
composer require noardcode/laravel-signhost
```

Then publish the configuration file:

```
php artisan vendor:publish --tag="signhost-config"
```

This will create a file at:

```
config/signhost.php

```

You can now adjust the configuration or link environment variables.

---

Database Migrations
-------------------

[](#database-migrations)

Laravel Signhost includes a set of database migrations that prepare your application to store transaction data and encrypted value objects.

Run the migrations after installing the package:

```
php artisan migrate
```

These migrations will create the necessary tables and columns for:

- Storing **Signhost transactions** and their metadata
- Tracking **uploaded and signed files**

If you want to inspect or customize these migrations, you can publish them using:

```
php artisan vendor:publish --tag="signhost-migrations"
```

This will copy all migration files from the package into your `database/migrations` directory, allowing you to modify or extend them as needed.

---

Example Usage: Signing Workflows
--------------------------------

[](#example-usage-signing-workflows)

### Creating a basic transaction for a signature

[](#creating-a-basic-transaction-for-a-signature)

This example shows how to create a new transaction and upload a PDF file.

```
use Illuminate\Support\Facades\Storage;
use Noardcode\LaravelSignhost\Enums\Language;
use Noardcode\LaravelSignhost\Facades\Signhost;
use Noardcode\LaravelSignhost\ValueObjects\Transaction as TransactionVO;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\FileUpload;
use Noardcode\LaravelSignhost\Collections\TransactionSignersCollection;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\Signer;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\Verifications\Scribble;

// Define your signer(s)
$signers = new TransactionSignersCollection([
    new Signer(
        email: 'john@example.com',
        verifications: [
            new Scribble(
                requireHandsignature: true,
                scribbleNameFixed: true,
                scribbleName: 'John Doe'
            ),
        ],
        language: Language::Dutch,
        scribbleName: 'John Doe'
    ),
]);

// Create a new transaction object
$transaction = new TransactionVO(
    language: Language::Dutch,
    signers: $signers,
    receivers: null,
    reference: 'agreement-2025-001',
    sendEmailNotifications: false,
);

// Select and upload your unsigned PDF
$localPath = Storage::disk('local')->path('unsigned.pdf');
$file = new FileUpload($localPath, 'unsigned.pdf');

// 1) Create the transaction in Signhost
$storedTransaction = Signhost::signing()->create($transaction, $file);

// 2) Upload file(s) to Signhost
$storedTransaction = Signhost::signing()->createFiles($storedTransaction);

// 3) Start the transaction – this triggers sending of the signing link
Signhost::signing()->startTransaction($storedTransaction);
```

---

### Using FormSets to create a more advanced transaction

[](#using-formsets-to-create-a-more-advanced-transaction)

This example shows how you can use FormSets to create a more advanced transaction. This will allow you to create a transaction where you can specify where the user should interact with the documents while signing.

```
use Illuminate\Support\Facades\Storage;
use Noardcode\LaravelSignhost\Enums\Language;
use Noardcode\LaravelSignhost\Facades\Signhost;
use Noardcode\LaravelSignhost\ValueObjects\Transaction as TransactionVO;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\FileUpload;
use Noardcode\LaravelSignhost\Collections\TransactionSignersCollection;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\Signer;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\Verifications\Scribble;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\FileEntries\FileMetaData;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\FileEntries\FileMetaData\FormSet;

// Define your signer(s)
$signers = new TransactionSignersCollection([
    new Signer(
        email: 'john@example.com',
        verifications: [
            new Scribble(
                requireHandsignature: true,
                scribbleNameFixed: true,
                scribbleName: 'John Doe'
            ),
        ],
        // Wish to verify the signer's phone number?
        authentications: [
            new \Noardcode\LaravelSignhost\ValueObjects\Transactions\Authentications\Phonenumber('+31600000000')
        ],
        language: Language::Dutch,
        scribbleName: 'John Doe'
    ),
]);

// Create a new transaction object
$transaction = new TransactionVO(
    language: Language::Dutch,
    signers: $signers,
    receivers: null,
    reference: 'agreement-2025-001',
    sendEmailNotifications: false,
);

// Select and upload your unsigned PDF
$localPath = Storage::disk('local')->path('unsigned.pdf');
$file = new FileUpload($localPath, 'unsigned.pdf');

// Specify the formSet you want to use
$formSet = new FormSet(
    name: 'MyCustomFormSet',
    fieldTypes: [
        new FormSet\FieldType(
            name: 'FirstNameInput',
            formSetType: FormSetType::Signature,
            location: new FormSet\Location(
                search: 'FirstName: ',
                occurence: 1,
            )
        ),
        new FormSet\FieldType(
            name: 'Signature',
            formSetType: FormSetType::Check,
            location: new FormSet\Location(
                search: 'Signature here: ',
                occurence: 1,
            )
        )
    ]
);

// Set the formSet to use on the fileUploadVO
$fileUploadVO->setFormSet($formset);

// Specify which signer(s) should use which formSet
$signerFormSets = array_map(
    fn($signer) => new FileMetaData\Signer(
        id: $signer->getId(),
        formSets: ['DummyFormSet']
    ),
    $signers
);

// Set the fileMetaData to use the specified formSet
$fileUploadVO->setFileMetaData(
    new FileMetaData(
        displayOrder: 0,
        displayName: 'My Contract',
        setParaph: false,
        signers: new TransactionFileMetaDataSignersCollection($signerFormSets)
    )
);

// After this we can create the transaction as normal
```

---

### Storing document and receipt from a finished transaction

[](#storing-document-and-receipt-from-a-finished-transaction)

You can store the signed document(s) and the signing receipt for verification. This is not done automatically, but you can do it manually or use the provided helper methods.

See the [Events](#events) section below to learn how you can use package events to trigger actions when transaction data becomes available.

```
use Illuminate\Support\Facades\Storage;
use Noardcode\LaravelSignhost\Enums\Language;
use Noardcode\LaravelSignhost\Facades\Signhost;
use Noardcode\LaravelSignhost\ValueObjects\Transaction as TransactionVO;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\FileUpload;
use Noardcode\LaravelSignhost\Collections\TransactionSignersCollection;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\Signer;

// 1) After the signer completes, download the signed document(s)
Signhost::signing()->getSignedFiles($storedTransaction);

// 2) Download the signing receipt for verification
Signhost::signing()->getReceipt($storedTransaction);
```

---

Example Usage: IdProof Workflows
--------------------------------

[](#example-usage-idproof-workflows)

### Digital Identification (IdProof)

[](#digital-identification-idproof)

Given that you have enabled IdProof in your Signhost account and created a valid form to validate the identity of the signer, you can now start the IdProof process.

```
use Noardcode\LaravelSignhost\Facades\Signhost;
use Noardcode\LaravelSignhost\Enums\Language;
use Noardcode\LaravelSignhost\ValueObjects\IdProof as IdProofVO;
use Noardcode\LaravelSignhost\ValueObjects\Transactions\Signer;

// 1) Create your own identifier for the signer
$identifier = 'your-own-identifier';

// 2) Redirect the user to the Signhost verification page
return Signhost::idproof()->redirectToSignhost($identifier);
```

> **Please Note:**
> Create your own identifier for the signer/entity and store it in your application. We do not store this identifier in our database, this is up to you.

---

### Handling the Postback

[](#handling-the-postback)

Depending on the actions the user takes in the Signhost verification page, Signhost will send a postback to your application.

This package uses a default URL to handle postbacks and store them in the database, it is unnecessary to handle the postbacks yourself. The default URL is:

```
[your-url]/signhost/postback/transaction

```

Here we store the incoming data in the database and fire the `SignhostIdProofCreated` event once we stored the data. You can subscribe to this event to trigger your own actions, like retrieving the receipt.

### Retrieving the Dossier documents

[](#retrieving-the-dossier-documents)

This package does not automatically retrieve the dossier and receipt from Signhost. By subscribing to the `SignhostIdProofCreated` event, you know when the dossier can be retrieved.

```
use Noardcode\LaravelSignhost\Facades\Signhost;
use Noardcode\LaravelSignhost\Events\SignhostIdProofCreated;
use Noardcode\LaravelSignhost\Models\Transaction;
use Illuminate\Support\Facades\Event;

// Subscribe to the event and retrieve the dossier
Event::listen(SignhostIdProofCreated::class, function (Transaction $transaction) {
    // Do your custom logic here to retrieve the dossier
    YourCustomJob::dispatch($transaction);
});
```

Next, you can use the getDossier method to retrieve the dossier.

```
use Noardcode\LaravelSignhost\Facades\Signhost;

// Retrieve dossier
Signhost::idproof()->getDossier($transactionId, $fileId);
```

To retrieve the receipt, use the getReceipt method.

```
use Noardcode\LaravelSignhost\Facades\Signhost;

// Retrieve dossier
Signhost::idproof()->getReceipt($transactionId);
```

---

Using simulation mode
---------------------

[](#using-simulation-mode)

This package comes with a build in simulation mode that can be used to test your application without making actual API calls. This works using the `SIGNHOST_MODE=simulation` environment variable, which can be set in your `.env` file.

This makes it so all interactions happen locally, no external API requests are made. This makes it ideal for initial development, local demos, or automated test pipelines.

> **Please Note:**
> Because the API logic depends on the data you provide, simulation mode can only generate a limited set of fake data. As a result, not all edge cases are covered, and you may need to write your own tests for comprehensive coverage.

### Simulating a Signing Activity Webhook

[](#simulating-a-signing-activity-webhook)

This Artisan command allows you to simulate a **Signhost signing activity webhook** locally or in tests. It generates a complete fake payload (based on a real Signhost structure) and posts it to your app’s configured webhook endpoint. It is important to note that this command only works when the application is in **simulation mode**.

The following command will generate a fake payload for the order with the given identifier and post it to the configured webhook endpoint:

```
php signhost:fake-webhook 8bbcb7df-dc34-4bac-9637-631b447cf610
```

After calling this command with the correct uuid of the transaction, the command will prompt you to choose the activity you want to simulate. These are based on the official documentation of Signhost.

### Simulating a Signhost ID Proof Webhook

[](#simulating-a-signhost-id-proof-webhook)

This Artisan command allows you to simulate a **Signhost ID Proof webhook** locally or in tests. It generates a complete fake payload (based on a real Signhost structure) and posts it to your app’s configured webhook endpoint. It is important to note that this command only works when the application is in **simulation mode**.

> **Please Note:**
> It is also important to note that it is not possible to fake a failed check, due to the way the Signhost API works.

The following command will generate a fake payload for the order with the given identifier and post it to the configured webhook endpoint:

```
php artisan signhost:fake-id-proof-webhook my-custom-identifier
```

You can also provide a custom transaction ID and postback URL:

```
php artisan signhost:fake-id-proof-webhook order-12345 --transaction-id=123e4567-e89b-12d3-a456-426614174000
php artisan signhost:fake-id-proof-webhook order-12345 --postback-url="https://example.test/webhooks/signhost"
```

---

Events
------

[](#events)

To help you integrate Signhost into your application, this package fires a number of events. This means you can subscribe to events and react to them in your application and use them to trigger additional actions. For example, when a transaction is completed, you can start a job to download the files or send a notification to your users .

For example, use SignhostTransactionFinalized to trigger post-signing document storage.

EventTrigger**SignhostIdProofCreated**After creating an IdProof transaction**SignhostIdProofReceived**When IdProof postback is received**SignhostTransactionActivity**On any transaction activity update**SignhostTransactionCreated**After creating a transaction**SignhostTransactionDeleted**After deleting a transaction**SignhostTransactionFinalized**When Signhost webhook reports completion**SignhostTransactionStarted**After starting a transaction---

Storage Structure
-----------------

[](#storage-structure)

Files are stored in 'storage/app/' using the following structure:

```
transactions/{transaction_id}/original/{md5(transaction_uuid+file_id)}.pdf
transactions/{transaction_id}/signed/{md5(transaction_uuid+file_id)}.pdf
transactions/{transaction_id}/receipt/{md5(transaction_uuid)}.pdf
transactions/{transaction_id}/idproof/{file_id}.pdf

```

---

Contributing
------------

[](#contributing)

Thank you for considering contributing to this package! You can read the contribution guide [here](CONTRIBUTING.md).

---

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

If you discover a security vulnerability within this package, please contact us privately via .

Please do not disclose security vulnerabilities publicly or via GitHub Issues.

All security vulnerabilities will be promptly reviewed and addressed, and you will receive a response as soon as possible.

---

License
-------

[](#license)

This package is open-sourced software licensed under the [MIT license](LICENSE).

---

Support
-------

[](#support)

For Signhost services:

For technical support on this package:

Official API documentation:

For bugs or feature requests, please open an issue at:

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance70

Regular maintenance activity

Popularity15

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity52

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 ~175 days

Total

2

Last Release

0d ago

PHP version history (2 changes)v1.0.0PHP ^8.2|^8.3|^8.4

v1.1.0PHP ^8.2|^8.3|^8.4|^8.5

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/67730841?v=4)[NoardCode](/maintainers/noardcode)[@noardcode](https://github.com/noardcode)

---

Top Contributors

[![Damiaen](https://avatars.githubusercontent.com/u/9413561?v=4)](https://github.com/Damiaen "Damiaen (2 commits)")

---

Tags

laravelsignhostnoardcodeEvidos

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

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

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

###  Alternatives

[unopim/unopim

UnoPim Laravel PIM

10.5k2.4k](/packages/unopim-unopim)[jeremy379/laravel-openid-connect

OpenID Connect support to the PHP League's OAuth2 Server. Compatible with Laravel Passport.

59437.0k9](/packages/jeremy379-laravel-openid-connect)[ecotone/laravel

Ecotone for Laravel — CQRS, Event Sourcing, Sagas, Durable Workflows, and Outbox on top of Laravel Queue, via PHP attributes.

21318.6k3](/packages/ecotone-laravel)[aurorawebsoftware/aauth

Laravel Aauth

412.1k1](/packages/aurorawebsoftware-aauth)

PHPackages © 2026

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