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
/plugins/.
plugin.json Manifest
The manifest defines the plugin’s identity and its configurable settings:
Manifest Fields
Options Array Fields
Each entry inoptions creates a row in plugin_options and generates a form field in the Admin Settings panel:
Display Plugin PHP Class
ImplementDisplayPlugin and return an HTML string from render():
slug()— must match theshortcodefield inplugin.jsonrender()— receives the parsed shortcode parameters as$paramsand 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 implementShippingPlugin and return a flat array of rate options:
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
DisplayPlugin (or ShippingPlugin) as shown above.
Step 2 — Register the plugin class
Step 3 — Seed the database record
Add toPluginSeeder.php:
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:Related
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.
