Skip to main content

Overview

Site Store Pro supports two registration paths for custom plugins: Drop-in plugins are the recommended approach for third-party and custom integrations — no framework files need to be modified.

Drop-in Plugin Structure

Both files must be present. The directory name can be anything, but it must be unique within /plugins/.

plugin.json Manifest

The manifest defines the plugin’s identity and its configurable settings:

Manifest Fields

Options Array Fields

Each entry in options creates a row in plugin_options and generates a form field in the Admin Settings panel:

Display Plugin PHP Class

Implement DisplayPlugin and return an HTML string from render():
  • slug() — must match the shortcode field in plugin.json
  • render() — receives the parsed shortcode parameters as $params and the plugin’s DB model as $plugin
  • Use $plugin->getSetting('key', 'default') to read settings saved by the merchant in Admin

Shipping Plugin PHP Class

Shipping plugins implement ShippingPlugin and return a flat array of rate options:
Each rate entry must include: The ShippingContext object passed to your getRates(ShippingContext $context) method contains origin/destination ZIP codes, country, package weight, and declared value.

Discovery Flow

When Site Store Pro boots, PluginManager::discoverExternalPlugins() runs automatically:
1

Scan /plugins/ directory

Every subdirectory of /plugins/ is checked for a plugin.json file.
2

Load the PHP class

The matching PHP class file is loaded via require_once.
3

Sync the database

syncExternalPlugin() upserts the plugins DB record and all plugin_options rows based on the manifest. Existing merchant-saved settings are preserved.
4

Register with PluginManager

A class instance is registered with the PluginManager singleton, making it available for rendering and rate queries.
The plugin appears in the Admin Panel immediately on the next page load — no Artisan commands or server restarts are needed.

Built-in Plugin Registration

Drop-in plugins in /plugins/ are recommended for all custom work. If you are building a plugin that ships as part of your own platform fork (placed in app/Plugins/), use the following steps:

Step 1 — Create the PHP class

The class must implement DisplayPlugin (or ShippingPlugin) as shown above.

Step 2 — Register the plugin class

Step 3 — Seed the database record

Add to PluginSeeder.php:
Then run:
Re-running the seeder is safe — all records use updateOrCreate. Existing merchant-saved settings are not affected.

Search Index Rebuild

If your plugin contributes content that should be searchable via the Live Search plugin, rebuild the search index after installation:

Plugin System

Plugin discovery, Admin Panel, shortcode syntax, and PluginManager API.

Display Plugins

Reference for built-in display plugins and their shortcode parameters.

Shipping Plugins

Built-in FedEx, UPS, and USPS shipping plugins for comparison.