Skip to content

Plugin manifest and ZIP package reference

A package has one top-level directory matching its plugin ID and one netseller-plugin.json. A src/ directory is required even if a plugin has no providers.

Manifest field Type Required Meaning
id string Yes Stable package identity; starts with a lowercase letter or digit, followed by lowercase letters, digits, dots, underscores or hyphens.
version string Yes Non-empty release identifier; use a consistent version scheme such as 1.0.0.
name string No Display name; defaults to the directory name.
description string No Package description.
providers string[] No Component paths relative to src/, without .cfc. For example providers.plugin_provider.

These are the manifest fields consumed by the current package loader. There is no dependency installer or NetSeller-version constraint in this manifest contract.

NetSeller converts runs of non-alphanumeric characters in the ID to underscores and trims leading/trailing underscores. For example.hello:

  • Component prefix: netseller_plugin_example_hello.
  • View prefix: /netseller_plugin_example_hello/.
  • Database prefix: plg_example_hello_.
  • Route and permission prefix: plugin.example.hello..

IDs such as example.hello and example-hello produce the same component prefix and cannot coexist. Choose a stable vendor-prefixed ID.

A provider is a CFC instantiated by NetSeller. If it has an init() method, NetSeller calls it without arguments. Provider methods are optional. Definition/contributor methods return arrays; return [] when there is no contribution.

Keep registration methods free of database writes and external requests. They can be called while registries are built. Use a controller action for user-triggered behaviour or the activation hook for idempotent provisioning.

Include only the plugin folder, with its manifest, src/, migrations and any required runtime assets:

example.hello.zip
example.hello/
netseller-plugin.json
src/
db/migrations/

Do not put the manifest directly at the archive root or wrap the plugin in an additional project directory. Exclude credentials, local configuration, source-control metadata and unrelated build tools.

The package must contain its runtime dependencies. A plugin view is a server-side CFML mapping, not a promise that its files are directly accessible as browser assets. Serve plugin-specific assets through a protected or appropriately scoped plugin route when required; do not assume /plugins/.../assets/ is a static directory.

Follow Installation and updates to deploy the ZIP.