Publish your plugin or theme

Share your work with every OnePagerCMS website. Submissions are free — every extension is reviewed by our team before it goes live.

Submit your extension

You need a (free) developer account — you will be asked to log in or register.

How it works

  1. 1

    Register & verify your email

    Create a free developer account and confirm your email address.

  2. 2

    Upload your ZIP

    Submit your extension as a ZIP archive together with a short summary and description. Name, slug, type and version are read from the manifest inside the archive. Automated checks run immediately (valid ZIP, manifest rules, PHP syntax check, max. 50 MB).

  3. 3

    Human review

    Our team reviews every submission by hand. You get an email with the decision — and a note explaining what to fix if it is rejected. Updates to listed extensions go through the same review.

  4. 4

    Go live

    Once approved, your extension appears in this catalog and in the Extensions area of every OnePagerCMS installation.

The manifest

Every plugin needs a plugin.json (themes: theme.json) in the root of the archive:

{
  "slug": "my-plugin",
  "type": "plugin",
  "name": "My Plugin",
  "version": "1.0.0",
  "description": "What it does.",
  "author": "Jane Dev",
  "author_url": "https://janedev.example",
  "main": "my-plugin.php",
  "requires_opcms": "1.2.0",
  "requires_php": "7.4",
  "paid": false,
  "update_endpoint": null
}
  • slug: lowercase letters, digits and dashes, 3–50 characters, unique in the marketplace.
  • version: 1.0 or 1.0.0 style; each update must increase it.
  • main (plugins only): the PHP entry file, included while your plugin is active.
  • Plugins hook into the CMS via a WordPress-style API (add_action/add_filter); themes override templates of the default theme. Plugins can even register entirely new section types (portfolio, image gallery, …) that plug into the New Section flow. See the extension documentation shipped with OnePagerCMS (docs/EXTENSIONS.md) for the full hook, template and section type reference.

Guidelines

  • No obfuscated or encrypted code — reviewers must be able to read everything.
  • No tracking, phoning home or remote code execution without clear user consent.
  • Respect the user's site: clean up your own database tables in the uninstall hook.
  • Declare compatible versions honestly (requires_opcms, requires_php).
  • Trademarks: only use "OnePagerCMS" in your name as "... for OnePagerCMS".

Free & paid extensions

Free extensions are hosted here: users download and update them directly from the marketplace.

Paid extensions are listed with a link to your own shop — the marketplace handles no payments. You sell the ZIP plus a license key on your site; customers install it via upload and enter the key in their backend. Updates and license checks run against your server: set "paid": true and an update_endpoint in your manifest that implements two simple actions:

GET {update_endpoint}?opcms_action=check_update&slug=&version=&license=&site=
  → { "slug", "new_version", "package": "<zip url>", "changelog", "requires_opcms" }

GET {update_endpoint}?opcms_action=activate_license&slug=&license=&site=
  → { "success": true } | { "success": false, "error": "invalid|expired|site_limit" }

A ready-to-adapt reference implementation is available in the marketplace repository under docs/license-server-example.php. For review purposes you still submit your full ZIP — it is never distributed by the marketplace.

Ready?

Submitting takes about five minutes.

Submit your extension