Limited-time launch offer 20% off Pro — first payment and every renewal — with code See pricing

Free vs Pro

The licence buys reach. It never buys permission.

Of 166 operations, 115 are free. Every control that decides whether a write is safe — the preview, the capability check, the snapshot, the verification, the rollback — is in the free plugin and will stay there.

Pro is a second plugin that registers more operations into the same dispatchers. It changes what an agent can reach, not what it is allowed to do without asking.

The line

Where the line is drawn, and why it is there.

A plugin that puts a safety control behind a paid tier is selling you the risk and then charging you to remove it. SiteHelm does not have a tier like that and will not add one.

The split is by scope, not by safety. A free operation acts on one thing you named. A Pro operation acts across a site or a shop — every product, every post’s metadata, a settings surface rather than a single value. Both go through the same five gates.

An unlicensed site that calls a Pro operation is refused with IntegrationUnavailable and told what is missing. It is never silently ignored and it never half-writes.

Free, permanently

Free
Preview

A dry run that returns the exact diff before anything is written.

Free
Capability check

The write is refused unless the WordPress user could have made it by hand.

Free
Snapshot

The prior state is recorded before anything is overwritten.

Free
Verification

The write is read back and compared against what the preview promised.

Free
Rollback

Any recorded change can be put back from the admin.

Free
Activity log

Every call, its arguments, its outcome and its snapshot.

Free
Write pause

One switch stops every write on the site, immediately.

Free
Per-operation switches

Any operation or whole module can be turned off independently.

Free
Revoke

A connected application can be disconnected without touching the others.

Area by area

115 free and 51 Pro operations, by what they touch.

Open an area to see the operations by name. The lists come straight from the plugin’s own catalogue, so they are never out of date with the release you can download.

Code (Pro) 0 free · 18 pro

Snippets, site-wide CSS and JS, and widget, block and theme-template scaffolds — with the recovery path built before the feature.

Requires: SiteHelm Pro on a licensed site. The module ships switched off, and storing code and running code are two separate switches.

The 18 operations by name

Free

None — this whole area is Pro.

Pro

  • code-host-list Lists the places a snippet can live — SiteHelm's own runner, always present, and any snippet plugin that is installed — and which safety guarantees each can keep
  • code-snippet-list Lists the stored snippets with language, hook, whether each is live and whether it is quarantined; bodies are not returned
  • code-snippet-get Reads one snippet in full, including its body
  • code-quarantine-list Lists the snippets taken out of circulation because a request died while they were running, with the error that did it
  • code-health-check Fetches the home page and the login screen and reports whether each renders, breaks, or could not be reached — the same check activation runs, callable on its own
  • code-safe-mode-token Issues the one-off URL that loads the site with every snippet skipped, so the admin stays reachable while a snippet is breaking the front end
  • code-scaffold-widget Generates the source for an Elementor widget class from a description of its controls and returns it as text; nothing is stored and nothing runs
  • code-scaffold-block Generates the source for a WordPress block — registration, attributes, render callback — as text; nothing is stored and nothing runs
  • code-scaffold-theme-template Generates the source for a theme template file for a post type or archive, as text; nothing is stored and nothing runs
  • code-snippet-write Stores one PHP snippet — always stored switched off, no argument makes it live, and refused outright if it does not lex; name WPCode or Code Snippets as the host and it is stored there instead, where only that plugin can switch it on
  • code-snippet-activate Switches one stored snippet on under the guard: health-checked immediately, auto-reverted and quarantined if the site stops rendering, and self-deactivating unless confirmed inside the window
  • code-snippet-confirm Confirms that a snippet activated a moment ago should stay live — staying on is not the default, switching back off is
  • code-snippet-deactivate Switches one snippet off; only ever reduces what runs
  • code-snippet-delete Deletes one snippet, snapshotted first so it can be put back
  • code-css-write Stores custom CSS printed on the front end — it cannot run anything, but it can make a site unusable to look at, so it is previewed and reversible like any other change; WPCode and Code Snippets can hold it instead
  • code-js-write Stores custom JavaScript printed on the front end — it runs in every visitor's browser, a wider reach than PHP, and goes through the same storage discipline; WPCode and Code Snippets can hold it instead
  • code-safe-mode-set Turns every snippet off at once, or back on, without knowing which one broke; the switch is read before any snippet is considered, so a broken snippet cannot defeat it
  • code-quarantine-clear Puts a quarantined snippet back into circulation — through the whole activation guard again, not on trust

WooCommerce (Pro) 0 free · 8 pro

Products read and edited; orders and customers read only, and always will be.

Requires: SiteHelm Pro on a licensed site, and WooCommerce 8.0 or newer.

The 8 operations by name

Free

None — this whole area is Pro.

Pro

  • product-list Pages products newest first with name, SKU, status, type, price, sale price, stock status and quantity, and categories; filtered by search term, status, category or stock state
  • product-get Reads one product in full — name, description, short description, SKU, regular and sale price, stock, categories, tags, images, type — and says when the price lives on the product's variations rather than on the product
  • product-category-list Lists the product categories with parent, slug and product count
  • order-list Pages orders newest first with status, total, currency, item count and date, filtered by status, customer or date range
  • order-get Reads one order — line items, totals, tax, shipping, payment method and status history
  • customer-list Pages shop customers with order count, lifetime spend and last order date
  • product-create Creates one simple product from name, description, SKU, prices, stock and categories
  • product-update Changes one product's name, description, SKU, regular price, sale price, stock status, stock quantity or categories

Plugins & themes (Pro) 0 free · 7 pro

Activate, deactivate, switch theme, update and install — acting on the site’s own extensions, behind the same gates as everything else.

Requires: SiteHelm Pro on a licensed site.

The 7 operations by name

Free

None — this whole area is Pro.

Pro

  • plugin-activate Switches one installed plugin on, snapshotting the state it replaces; refuses a plugin the network activated, because a single site does not own that decision
  • plugin-deactivate Switches one plugin off, snapshotted and reversible, and refuses a network-activated plugin for the same reason
  • theme-switch Makes a different installed theme the live one, recording the theme it replaced; the theme already live is refused rather than previewed as a change that moves nothing
  • plugin-update Updates one plugin to the version WordPress says is waiting, reporting the version it came from
  • theme-update Updates one theme to the version WordPress says is waiting
  • plugin-install Installs a plugin from WordPress.org by its slug and stores it **switched off**
  • theme-install Installs a theme from WordPress.org by its slug and does **not** make it live

SEO (Pro) 0 free · 6 pro

Site-wide SEO settings, per-post schema, and the Rank Math 404 log and redirections.

Requires: SiteHelm Pro on a licensed site. The 404 log and the redirections list exist only on Rank Math.

The 6 operations by name

Free

None — this whole area is Pro.

Pro

  • seo-settings-get Reads the SEO plugin's settings at site scope (separator, knowledge-graph name and logo, default social image, breadcrumbs) or for one public post type (`postType`: title and description templates, noindex, sitemap inclusion). Also reports `providerConfigured`: false means the plugin has not finished its own setup, so the settings are stored and nothing is using them
  • seo-settings-set Writes the same allowlisted settings, one scope per change — site scope or `postType`, never both
  • seo-404-log-list Pages Rank Math's 404 monitor newest first (URI, hits, last seen, referer), at most 200 per page
  • seo-redirection-list Pages Rank Math's redirections newest first (sources, destination, status code, hits, status), with SiteHelm's own redirects reported beside them under `others`
  • content-seo-schema-get Reads one post's primary schema type (Schema.org spelling, `null` when the plugin's default applies), the plugin's stored fields for it, and the type names the plugin accepts on write
  • content-seo-schema-set Sets one post's schema `type` and optional `fields` as a previewed, reversible change; `null` clears it back to the plugin's default and drops the stored fields; an unknown type is refused naming `content-seo-schema-get` for the list

Elementor (Pro) 0 free · 6 pro

Popups, dynamic tags and brand kits — the Elementor Pro surfaces, behind one gate.

Requires: SiteHelm Pro on a licensed site, and Elementor Pro.

The 6 operations by name

Free

None — this whole area is Pro.

Pro

  • elementor-dynamic-tag-list Lists the dynamic tags this site registers, sorted, at most 200 with the true count and a `truncated` flag, alongside the Elementor Pro version
  • elementor-brand-kit-list Lists the library's kits oldest first with title, whether the `elementor_active_kit` option names it, and its global colour and typography counts (system and custom added together)
  • elementor-popup-create Creates a published popup with an empty document and **no trigger armed**, so it shows to nobody until `elementor-popup-settings-set` gives it one
  • elementor-dynamic-tag-set Binds one widget setting to one dynamic tag through the ordinary document write path, after checking the tag against the site's own registry and the setting against the widget's declared props
  • elementor-popup-settings-set Writes five allowlisted display settings — page-load delay, exit intent, scroll offset, and the two prevent-close switches — in whole coupled groups, merged into the stored row rather than replacing it
  • elementor-brand-kit-apply Switches the active kit to a validated kit post, snapshots the previous option and invalidates both kits' cached CSS

Content 18 free

Posts, pages, custom post types, blocks, terms and redirects — the operations an editor would otherwise perform by hand.

The 18 operations by name

Free

  • content-get Reads one item with its fields, terms, and metadata
  • content-list Lists items of any content type this account can edit, public or not, with filtering and pagination
  • taxonomy-list Lists registered taxonomies and their terms
  • content-blocks-get Returns the block outline of one item, or one addressed block in full
  • content-links-check Reports the links in one item, resolving this site's own against its posts and redirects
  • content-search Finds every document whose title, content, excerpt or Elementor data mentions a phrase, filtered to what you may edit
  • redirect-list Lists every redirect this site serves, with the table's size and capacity, and the rules another redirect plugin holds
  • content-create Creates a post, page, or custom post type item, optionally at a chosen position in a hand-ordered type
  • content-update Updates title, content, excerpt, slug, or hand-ordered position
  • content-status-set Publishes, drafts, schedules, or privatises
  • content-featured-media-set Sets or clears the featured image
  • content-meta-update Writes the custom fields a site administrator has named on the SiteHelm status screen
  • content-terms-replace Assigns categories, tags, or custom terms
  • content-trash Moves an item to trash — reversible, never a permanent delete
  • content-rollback-apply Restores a previous change from its snapshot
  • content-block-update Changes the attributes or inner markup of one block
  • redirect-set Points one path at a successor URL, or marks it gone
  • redirect-delete Removes the redirect stored for one path

Pro

Nothing here is behind the licence.

Media 9 free

The library: attachment details, uploads, alt text and captions, and import from a URL behind a guarded fetch.

The 9 operations by name

Free

  • media-get Reads one attachment with its metadata and generated sizes
  • media-list Lists the media library with filtering
  • image-size-list Lists registered image sizes and their dimensions
  • media-upload Uploads a file from supplied bytes
  • media-svg-upload Adds one SVG image, rebuilt from a safe subset before it is stored
  • media-import Fetches a file from a URL and adds it to the library
  • media-meta-update Updates alt text, caption, title, description
  • media-attach Attaches an existing item to a post
  • media-resize Brings an oversized image within a width and height you name, keeping the original file

Pro

Nothing here is behind the licence.

Menus 6 free

Navigation menus, their items, their order, and which theme location each one is assigned to.

The 6 operations by name

Free

  • menu-list Lists menus with their theme location assignments
  • menu-get Reads one menu's full item tree
  • menu-item-create Adds an item to a menu
  • menu-item-update Updates an item's label, target, or attributes
  • menu-items-reorder Reorders and re-parents a menu tree
  • menu-location-assign Assigns a menu to a theme location

Pro

Nothing here is behind the licence.

Elementor 37 free

Documents and elements, widget settings, global colour and typography tokens, and theme-builder display conditions.

Requires: Elementor 3.0 or newer.

The 37 operations by name

Free

  • elementor-document-list Lists Elementor-built documents
  • elementor-document-get Reads a document's element tree; a tree too large to send whole comes back shortened by depth and says so, and `rootId` opens one band at full depth
  • elementor-composition-get Summarizes what a document contains, at a size that does not grow with it
  • elementor-element-get Reads one element by its id
  • elementor-element-search Finds elements within a document by type, text, or setting
  • elementor-widget-availability Reports which widget types this site actually has
  • elementor-control-schema Returns a widget's or container's control schema
  • elementor-global-tokens-get Reads the global palette and type styles with their write identifiers
  • elementor-global-class-list Lists the site's reusable global style classes in cascade order, and reports whether the editor holds unpublished class changes
  • elementor-theme-template-list Lists theme-builder templates with the display conditions each one stores
  • elementor-template-list Lists the saved library templates, filterable by kind
  • elementor-template-get Reads one saved template in full — its tree, its page settings and the Elementor version that wrote it
  • elementor-page-settings-get Reads a document's Elementor page settings — the page layout and title visibility SiteHelm can change, and the whole stored settings row alongside them
  • elementor-element-add Inserts an element at a position in the tree; a container can be asked for by preset, and `full-bleed` stores the settings a section needs to run edge to edge
  • elementor-element-update Updates an element's settings
  • elementor-elements-update Updates several elements' settings as one change; one bad entry refuses all of them
  • elementor-widget-settings-update Updates a widget's settings against its control schema
  • elementor-element-move Moves an element within or between containers
  • elementor-element-duplicate Duplicates an element with fresh ids
  • elementor-element-remove Removes an element from the tree
  • elementor-elements-reorder Reorders one element's direct children, as a whole permutation of that list
  • elementor-element-label-set Sets or clears the name an element carries in the Elementor navigator
  • elementor-global-colors-update Updates global colour tokens site-wide
  • elementor-global-typography-update Updates global type styles site-wide
  • elementor-theme-conditions-set Replaces one theme template's display conditions as a whole rule
  • elementor-page-settings-set Changes a document's page layout or title visibility, merging into the stored settings row
  • elementor-document-create Creates a draft page Elementor controls, optionally with a starting layout
  • elementor-document-build Replaces a document's entire content with a layout you supply, validated against the installed widgets first
  • elementor-document-clear Empties a document's content, leaving the page itself in place
  • elementor-theme-template-create Creates an empty header, footer, archive or single template, with no display conditions
  • elementor-template-apply Inserts a saved library template into a document, re-minting every element id and rebinding its styles
  • elementor-template-save Saves a document, or one element's subtree, as a new reusable library template
  • elementor-template-import Creates a library template from a tree this site did not produce, validated against the installed widgets first
  • elementor-global-class-create Adds one reusable global style class
  • elementor-global-class-update Renames one global class, or merges style properties into it
  • elementor-global-class-delete Deletes one global class, reporting how many documents wear it first
  • elementor-global-classes-reorder Sets the cascade order of the global classes

Pro

Nothing here is behind the licence.

Custom fields 8 free

ACF and Meta Box field groups, their fields, and their values — read and written through each plugin’s own API.

Requires: Advanced Custom Fields 5.9 or newer, Meta Box 5.3 or newer. Either, both, or neither.

The 8 operations by name

Free

  • acf-group-list Lists ACF field groups
  • acf-field-list Lists fields in a group
  • acf-field-get Reads a field's value for an object
  • metabox-group-list Lists Meta Box field groups
  • metabox-field-list Lists fields in a group
  • metabox-field-get Reads a field's value for an object
  • acf-field-update Writes an ACF field value
  • metabox-field-update Writes a Meta Box field value

Pro

Nothing here is behind the licence.

SEO 8 free

Titles, descriptions and robots directives, read and written through whichever SEO plugin the site already runs — one post at a time, or fifty under a single preview.

Requires: One of seven providers: Yoast, Rank Math, All in One SEO, SEOPress, The SEO Framework, Slim SEO, or SureRank.

The 8 operations by name

Free

  • content-seo-get Reads one item's search-engine metadata from whichever SEO plugin the site runs
  • content-seo-score-get Reads one item's SEO and readability scores as the SEO plugin stored them, with the findings SiteHelm derives
  • content-seo-audit Audits a page of items: stored scores, missing or over-long descriptions, missing focus keywords, noindexed published items, in-page duplicate titles and descriptions
  • content-term-seo-get Reads one category's or tag's search-engine metadata from whichever SEO plugin the site runs
  • content-seo-set Writes one item's search-engine metadata into whichever SEO plugin the site runs
  • content-term-seo-set Writes one category's or tag's search-engine metadata into whichever SEO plugin the site runs
  • content-seo-bulk-set Sets the per-post fields of `content-seo-set` on up to fifty posts as one previewed change that cannot be undone afterwards; one post the caller may not edit, or one that does not exist, refuses the whole set
  • content-seo-audit-fix Takes the same page `content-seo-audit` would (type, status, limit ≤ 50, offset, minScore) and fixes the chosen findings on every post that carries one as one previewed change that cannot be undone afterwards — `missing-description` from the post's excerpt or text (a post whose text yields fewer than 70 characters is reported under `unfixable`), `description-too-long` and `title-too-long` trimmed at a word boundary, `noindex` set to false

Pro

Nothing here is behind the licence.

Comments 3 free

The moderation queue: list by status, approve, hold, spam or trash, and reply beneath a comment.

The 3 operations by name

Free

  • comment-list Lists comments by status, post, or search term, newest first
  • comment-status-set Approves, holds, spams, or trashes one comment
  • comment-reply Posts an approved reply beneath one comment, authored by the acting user

Pro

Nothing here is behind the licence.

Forms 3 free

Read only: which forms the site holds, each form’s fields and embed shortcode, and its most recent entries.

Requires: Gravity Forms, WPForms, Contact Form 7, Fluent Forms, or Formidable Forms.

The 3 operations by name

Free

  • form-list Lists every form the site's form plugin holds, with each form's embed shortcode
  • form-get Reads one form's title, embed shortcode, and the fields it declares — name, type, required
  • form-entries-list Reads one form's most recent entries, newest first — or says plainly that the plugin stores none

Pro

Nothing here is behind the licence.

Users 2 free

The roster, and one write: replacing a user’s roles with a single role the site has actually registered.

The 2 operations by name

Free

  • user-list Lists user accounts by role or search term, newest registration first, with the role slugs this site has registered
  • user-role-set Replaces one user's roles with a single registered role

Pro

Nothing here is behind the licence.

Site settings 2 free

Thirteen fields, allowlisted: title, tagline, timezone, date and time formats, posts per page, front-page geometry, permalinks, default discussion settings, and search-engine visibility.

The 2 operations by name

Free

  • site-settings-read Reads the whole site-settings allowlist, typed, in one call — the same fifteen fields `site-settings-set` can change, and nothing else
  • site-settings-set Changes site settings from a strict fifteen-field allowlist — title, tagline, site icon, site logo, timezone, date and time formats, posts per page, front page geometry, permalink structure, default comment and ping status, search-engine visibility

Pro

Nothing here is behind the licence.

System 5 free

Connection, environment, integration health, one operation’s schema on demand, and the change ledger.

The 5 operations by name

Free

  • system-connection Confirms the gateway is reachable and reports who is authenticated
  • system-environment WordPress and PHP versions, theme, post types, taxonomies
  • system-integrations Health of every optional integration: `Active`, `Inactive`, `VersionBlocked`, `Unconfigured`
  • system-operation-schema Returns one named operation's full input and output schema, so an agent fetches only the schema it is about to use
  • audit-list Reads the change ledger: what changed, when, by whom, and what can be rolled back

Pro

Nothing here is behind the licence.

Plugins & themes 2 free

What the site runs: every installed plugin and theme, its version, whether it is active, and whether an update is waiting.

The 2 operations by name

Free

  • system-plugin-list Lists every plugin installed on this site with its version, whether it is active, whether the network activated it, whether an update is waiting, and whether the plugin's own setup wizard has ever been finished
  • system-theme-list Lists every theme installed on this site with its version, which one is live, and whether an update is waiting

Pro

Nothing here is behind the licence.

In writing

Three things a licence will never change.

Never
A free operation moved into Pro

Pro adds operations. Anything free in a release you have already installed stays free in every release after it.

Never
A safety control sold as an upgrade

Preview, capability checks, snapshots, verification, rollback, the log and every switch are free on every site, licensed or not.

Never
Unguarded code, SQL or filesystem access

Not at any price. Code exists only behind the Pro Code module's guard; SQL and filesystem passthrough are excluded from the product entirely.

The free plugin is open source, so this is checkable rather than promised: the licence gate is one function call, and you can read every place it is used.

Deciding

Start free. Add Pro when you hit the edge of it.

Pro activates on the install you already have. There is nothing to reconnect, no data to migrate, and no second connection for your agent to learn.

Get the free plugin Buy Pro from $24.99/year

You will know you need Pro when you find yourself reaching for a setting that governs every page, a shop catalogue, or the plugin list itself. Changing fifty posts at once is free. Until then the free plugin is the whole product.

Contributors get Pro without paying for it. The contributor programme sets out exactly what qualifies.