PHPackages                             refineder/filament-crm - 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. [Admin Panels](/categories/admin)
4. /
5. refineder/filament-crm

ActiveLibrary[Admin Panels](/categories/admin)

refineder/filament-crm
======================

A real-time CRM plugin for Filament v5 powered by WhatsApp via WasenderAPI. Manage contacts, deals, conversations and multiple WhatsApp sessions.

1.0.1(3mo ago)010MITPHPPHP ^8.2

Since Feb 11Pushed 3mo agoCompare

[ Source](https://github.com/Abodysoma2021/refineder-filament-crm)[ Packagist](https://packagist.org/packages/refineder/filament-crm)[ Docs](https://github.com/refineder/filament-crm)[ RSS](/packages/refineder-filament-crm/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (15)Versions (2)Used By (0)

 [![Refineder Filament CRM](https://raw.githubusercontent.com/Abodysoma2021/refineder-filament-crm/main/.github/banner.png)](https://raw.githubusercontent.com/Abodysoma2021/refineder-filament-crm/main/.github/banner.png)

Refineder Filament CRM
======================

[](#refineder-filament-crm)

 A real-time CRM plugin for **Filament v5** powered by WhatsApp messaging via **WasenderAPI**.

 [![Latest Version on Packagist](https://camo.githubusercontent.com/6572ad88dc6a3b04ac0b779d31bcabfeffe9089270161b56d77d8d60c445eb25/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f726566696e656465722f66696c616d656e742d63726d2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/refineder/filament-crm) [![Total Downloads](https://camo.githubusercontent.com/a2d85bfe0893e696d1b5cbc306bef90a558d3093bbcb1f3bfc9e862984cc05b4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f726566696e656465722f66696c616d656e742d63726d2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/refineder/filament-crm) [![License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](https://github.com/Abodysoma2021/refineder-filament-crm/blob/main/LICENSE.md) [![PHP 8.2+](https://camo.githubusercontent.com/06cdb5caf06537639da8f8ac75da4176a140b8852667dd99286cb721c5117a9e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e322532422d3737374242342e7376673f7374796c653d666c61742d737175617265266c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://php.net) [![Laravel 11.28+](https://camo.githubusercontent.com/caa41bc197a60fb60596f9edb00fe07a3a3f9a97299cb67c2c5d2a7a0421e4fb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d31312e32382532422d4646324432302e7376673f7374796c653d666c61742d737175617265266c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](https://laravel.com) [![Filament 5.x](https://camo.githubusercontent.com/2ae9d91862b49c93a163049f7bd296c5c4f9478961666f1f9adfa2dd7f7176f5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f66696c616d656e742d352e782d4642424632342e7376673f7374796c653d666c61742d737175617265)](https://filamentphp.com)

 [Features](#features) • [Requirements](#requirements) • [Installation](#installation) • [Configuration](#configuration) • [Usage](#usage) • [Webhook Setup](#webhook-setup) • [Customization](#customization) • [Events](#events) • [Translations](#translations) • [Roadmap](#roadmap) • [License](#license)

---

Overview
--------

[](#overview)

**Refineder Filament CRM** transforms your Filament admin panel into a full-featured customer relationship management system with real-time WhatsApp messaging. Connect one or more WhatsApp accounts via [WasenderAPI](https://wasenderapi.com), receive customer messages instantly, reply directly from your dashboard, and manage deals through a visual pipeline -- all without leaving Filament.

---

Features
--------

[](#features)

### WhatsApp Integration

[](#whatsapp-integration)

- **Multi-Session Support** -- connect and manage multiple WhatsApp accounts simultaneously
- **Real-Time Chat** -- WhatsApp-style chat interface with Livewire polling
- **All Message Types** -- text, images, video, audio, documents, locations, contacts, stickers
- **Delivery Receipts** -- sent, delivered, and read status indicators
- **Media Preview** -- inline image previews and media type badges
- **Webhook-Driven** -- automatic message ingestion from WasenderAPI webhooks

### Contact Management

[](#contact-management)

- **Auto-Creation** -- contacts are created automatically from incoming messages
- **Rich Profiles** -- name, phone, email, company, notes, custom metadata
- **Conversation History** -- full message history per contact
- **Search &amp; Filter** -- find contacts by name, phone, email, or company

### Deal Pipeline

[](#deal-pipeline)

- **Customizable Stages** -- Lead, Qualified, Proposal, Negotiation, Won, Lost (configurable)
- **Priority Levels** -- Low, Medium, High, Urgent with color-coded badges
- **Value Tracking** -- monetary values with multi-currency support (USD, EUR, GBP, SAR, AED, EGP)
- **Overdue Detection** -- visual indicators for deals past their expected close date
- **Contact Linking** -- associate deals with contacts and conversations

### Dashboard Widgets

[](#dashboard-widgets)

- **CRM Stats** -- contacts, unread conversations, open deals, revenue, today's messages
- **Recent Conversations** -- live-updating table of latest conversations with unread badges

### Developer Experience

[](#developer-experience)

- **Filament v5 Native** -- follows the latest resource architecture (Schemas/, Tables/, Pages/)
- **Fully Translatable** -- ships with English and Arabic; add any language
- **Configurable** -- toggle features on/off, override models, adjust polling intervals
- **Event-Driven** -- Laravel events dispatched for messages and session changes
- **Encrypted Storage** -- all API keys and secrets stored with Laravel's encryption

---

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

[](#requirements)

DependencyVersionPHP8.2+Laravel11.28+Filament5.xLivewire4.0+WasenderAPI Account[Sign up](https://wasenderapi.com/register)---

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

[](#installation)

### 1. Install the package

[](#1-install-the-package)

```
composer require refineder/filament-crm
```

### 2. Publish and run migrations

[](#2-publish-and-run-migrations)

```
php artisan vendor:publish --tag="refineder-crm-migrations"
php artisan migrate
```

### 3. Register the plugin in your Panel Provider

[](#3-register-the-plugin-in-your-panel-provider)

```
use Refineder\FilamentCrm\RefinederCrmPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugin(RefinederCrmPlugin::make());
}
```

### 4. (Optional) Publish the configuration file

[](#4-optional-publish-the-configuration-file)

```
php artisan vendor:publish --tag="refineder-crm-config"
```

---

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

[](#configuration)

After publishing, the configuration file is located at `config/refineder-crm.php`.

### Feature Toggles

[](#feature-toggles)

Enable or disable individual CRM modules:

```
'features' => [
    'contacts'          => true,
    'conversations'     => true,
    'deals'             => true,
    'whatsapp_sessions' => true,
    'widgets'           => true,
],
```

### Plugin Fluent API

[](#plugin-fluent-api)

You can also configure features directly on the plugin instance:

```
RefinederCrmPlugin::make()
    ->contacts(true)
    ->conversations(true)
    ->deals(true)
    ->whatsappSessions(true)
    ->widgets(true)
    ->navigationGroup('CRM')
    ->navigationSort(1)
```

### Chat Polling Interval

[](#chat-polling-interval)

Control how frequently the chat checks for new messages (in seconds):

```
'chat_poll_interval' => 5,
```

### Currency

[](#currency)

Set the default currency for deal values:

```
'currency' => 'USD',
```

### Overriding Models

[](#overriding-models)

Replace any model with your own implementation:

```
'models' => [
    'contact'          => \App\Models\MyContact::class,
    'conversation'     => \App\Models\MyConversation::class,
    'message'          => \App\Models\MyMessage::class,
    'deal'             => \App\Models\MyDeal::class,
    'deal_stage'       => \App\Models\MyDealStage::class,
    'whatsapp_session' => \App\Models\MyWhatsappSession::class,
],
```

---

Usage
-----

[](#usage)

### Setting Up a WhatsApp Session

[](#setting-up-a-whatsapp-session)

1. Navigate to **CRM &gt; WhatsApp Sessions** in your Filament panel
2. Click **Create** and fill in your session details:
    - **Session Name** -- a friendly label (e.g. "Sales Team")
    - **WasenderAPI Session ID** -- from your [WasenderAPI dashboard](https://wasenderapi.com)
    - **API Key** -- the unique key for this session
    - **Webhook Secret** -- for verifying incoming webhooks
3. Save the session -- a **Webhook URL** will be generated automatically
4. Copy the Webhook URL into your WasenderAPI session settings
5. Use the **Connect** button to establish the WhatsApp connection

### Sending Messages

[](#sending-messages)

Once a session is connected, navigate to any conversation and type your reply in the chat box. Press **Enter** or click the send button. The message is sent via WasenderAPI and stored in your database.

### Managing Deals

[](#managing-deals)

Navigate to **CRM &gt; Deals** to create and track deals. Each deal can be linked to a contact and moves through configurable pipeline stages.

---

Webhook Setup
-------------

[](#webhook-setup)

The plugin registers a webhook endpoint at:

```
POST {your-domain}/refineder-crm/webhook/{session_id}

```

### WasenderAPI Configuration

[](#wasenderapi-configuration)

1. Open your session in the [WasenderAPI dashboard](https://wasenderapi.com)
2. Set the **Webhook URL** to the URL shown in your session's edit page
3. Set the **Webhook Secret** to match the secret stored in the plugin
4. Enable the following events:
    - `messages.received`
    - `messages.upsert`
    - `message.sent`
    - `messages.update`
    - `messages.delete`
    - `session.status`

### Webhook Verification

[](#webhook-verification)

Every incoming request is verified by comparing the `X-Webhook-Signature` header against the stored webhook secret. If no secret is configured, all requests are accepted.

### Supported Events

[](#supported-events)

EventDescription`messages.received`Incoming message -- creates contact, conversation, stores message`messages.upsert`All messages (incoming + outgoing)`message.sent`Outgoing message confirmation`messages.update`Delivery / read status updates`messages.delete`Message deletion`session.status`Session connection status change---

Customization
-------------

[](#customization)

### Extending Resources

[](#extending-resources)

All Filament resources follow the v5 pattern with separate `Schemas/`, `Tables/`, and `Pages/` directories. You can extend any resource by publishing and modifying the files.

### Custom Navigation Group

[](#custom-navigation-group)

```
RefinederCrmPlugin::make()
    ->navigationGroup('My Custom CRM')
```

### Disabling Specific Features

[](#disabling-specific-features)

```
RefinederCrmPlugin::make()
    ->deals(false)         // hide the Deals resource
    ->widgets(false)       // remove dashboard widgets
```

---

Events
------

[](#events)

The plugin dispatches Laravel events that you can listen for in your application:

EventPayloadWhen`Refineder\FilamentCrm\Events\MessageReceived``CrmMessage $message`, `array $rawPayload`New incoming message processed`Refineder\FilamentCrm\Events\MessageSent``CrmMessage $message`Outgoing message sent successfully`Refineder\FilamentCrm\Events\SessionStatusChanged``WhatsappSession $session`, `SessionStatus $previous`, `SessionStatus $new`Session connection status changed### Example Listener

[](#example-listener)

```
use Refineder\FilamentCrm\Events\MessageReceived;

class NotifyTeamOnNewMessage
{
    public function handle(MessageReceived $event): void
    {
        $message = $event->message;
        $contact = $message->conversation->contact;

        // Send a notification to your team
        Notification::route('slack', config('services.slack.webhook'))
            ->notify(new NewWhatsAppMessage($contact, $message));
    }
}
```

---

Translations
------------

[](#translations)

The plugin ships with full **English** and **Arabic** translations. To add a new language, publish the translations and create a new directory:

```
php artisan vendor:publish --tag="refineder-crm-translations"
```

Translation files are located in `resources/lang/vendor/refineder-crm/`:

```
lang/vendor/refineder-crm/
├── en/
│   ├── chat.php
│   ├── contacts.php
│   ├── conversations.php
│   ├── deals.php
│   ├── messages.php
│   ├── sessions.php
│   └── widgets.php
└── ar/
    └── ...

```

---

Database Schema
---------------

[](#database-schema)

The plugin creates the following tables (all prefixed with `crm_`):

TablePurpose`crm_whatsapp_sessions`WhatsApp session credentials and status`crm_contacts`Customer contact profiles`crm_conversations`Chat threads with contacts`crm_messages`Individual messages with type and status`crm_deals`Sales deals with pipeline stages`crm_deal_stages`Customizable pipeline stage definitions---

Security
--------

[](#security)

- **Encrypted at Rest** -- API keys, personal access tokens, and webhook secrets are stored using Laravel's `encrypted` cast
- **Webhook Signature Verification** -- every webhook request is validated via `X-Webhook-Signature`
- **CSRF Protection** -- webhook routes are exempt from CSRF (required for external POSTs) but protected by signature verification
- **Tenant Isolation** -- all queries are scoped by `user_id` to prevent cross-user data access

---

Roadmap
-------

[](#roadmap)

Planned features for future releases:

- **Broadcasting** -- real-time updates via Laravel Reverb / Echo
- **AI Auto-Replies** -- GPT-powered automatic responses
- **Chatbot Builder** -- visual flow-based conversation automation
- **Message Templates** -- WhatsApp business template management
- **Bulk Messaging** -- campaign broadcasting to contact lists
- **Kanban Board** -- drag-and-drop deal pipeline view
- **Team Assignment** -- assign conversations to team members
- **SLA Tracking** -- response time monitoring and alerts
- **Advanced Analytics** -- charts, reports, and conversion metrics
- **Custom Fields** -- dynamic fields for contacts and deals
- **REST API** -- headless API for external integrations

---

Testing
-------

[](#testing)

```
composer test
```

---

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

---

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

[](#contributing)

Contributions are welcome! Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.

---

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

---

 Built with care by [Refineder](https://github.com/Abodysoma2021) • Powered by [Filament](https://filamentphp.com) • WhatsApp via [WasenderAPI](https://wasenderapi.com)

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance82

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

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

Unknown

Total

1

Last Release

96d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4c401e2ec6ec035b716d4f1d4e15784453bfe2036616ba3d28c72431fd1cefe2?d=identicon)[Abodysoma2021](/maintainers/Abodysoma2021)

---

Top Contributors

[![Abodysoma2021](https://avatars.githubusercontent.com/u/79199392?v=4)](https://github.com/Abodysoma2021 "Abodysoma2021 (15 commits)")

---

Tags

laravelreal-timelivewirecrmchatwhatsappfilamentrefinederwasenderapi

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/refineder-filament-crm/health.svg)

```
[![Health](https://phpackages.com/badges/refineder-filament-crm/health.svg)](https://phpackages.com/packages/refineder-filament-crm)
```

###  Alternatives

[awcodes/filament-quick-create

Plugin for Filament Admin that adds a dropdown menu to the header to quickly create new items.

246177.6k7](/packages/awcodes-filament-quick-create)[redberry/page-builder-plugin

Page builder plugin for filamentphp admin panel to build pages using blocks.

242.8k](/packages/redberry-page-builder-plugin)[a2insights/filament-saas

Filament Saas for A2Insights

161.1k](/packages/a2insights-filament-saas)[inerba/filament-db-config

A Filament plugin for database-backed application settings and editable content, with caching and easy page generation.

329.1k](/packages/inerba-filament-db-config)[openplain/filament-tree-view

Tree view for Filament resources - drop-in replacement for Table with drag-and-drop hierarchical data management

318.5k](/packages/openplain-filament-tree-view)[caresome/filament-neobrutalism-theme

A neobrutalism theme for FilamentPHP admin panels

303.2k](/packages/caresome-filament-neobrutalism-theme)

PHPackages © 2026

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