WHBMP

Developer guide

Oct 25, 2026

WHBMP is built to be extended. Everything a third party supplies is a plugin in its own folder, and core provides the shared work so a plugin contains only what is its own.

What do you want to build?

I want to… Read
Add a feature, a page or a menu Building a plugin
Take payments with a gateway Building a payment gateway plugin
Connect a server, VPS, registrar, AI, fraud or captcha service Other plugin types
Know every place a plugin can add to WHBMP Plugin development
Test and release a plugin Testing and releasing a plugin
Read data from WHBMP in another system REST API
Be told when something happens Webhooks
Change how the client area looks Building a client area theme

Two commands to know

php artisan whbmp:make-plugin my-addon --name="My Addon"     # a working plugin folder
php artisan whbmp:plugin-check my-addon                      # check it before a release

How a plugin fits in

  1. A folder plugins/<slug>/ with a plugin.json that names the plugin, its version, what it needs and the classes it provides.
  2. A main class. An addon extends AbstractAddon and returns its slug; a payment gateway with a hosted payment page extends AbstractCheckoutGateway.
  3. Optional extras registered from a service provider: menus, tabs, dashboard tiles, email templates and more.
  4. Its own tables in database/migrations/, texts in lang/*.json, and tests in tests/.

Core keeps the rules that must be right once for everyone, such as booking a payment exactly once (GatewayPayments), amounts in each currency's smallest unit (MinorUnits), saved credentials and settings, the webhook route, and the System Logs. A plugin calls them instead of copying them.

A worked example

The Stripe plugin (plugins/stripe) is a complete, small gateway: a connection test, Stripe Checkout, a signed webhook and refunds in about 340 lines. Read it next to Building a payment gateway plugin.

Powered by WHBMP