Launch offer
20% off every Pro tier — and every renewal — for a limited time. Use the code at checkout:
Free vs Pro
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.
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.
A dry run that returns the exact diff before anything is written.
The write is refused unless the WordPress user could have made it by hand.
The prior state is recorded before anything is overwritten.
The write is read back and compared against what the preview promised.
Any recorded change can be put back from the admin.
Every call, its arguments, its outcome and its snapshot.
One switch stops every write on the site, immediately.
Any operation or whole module can be turned off independently.
A connected application can be disconnected without touching the others.
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.
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.
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 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.
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 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.
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 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.
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 Popups, dynamic tags and brand kits — the Elementor Pro surfaces, behind one gate.
Requires: SiteHelm Pro on a licensed site, and Elementor Pro.
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 Posts, pages, custom post types, blocks, terms and redirects — the operations an editor would otherwise perform by hand.
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.
The library: attachment details, uploads, alt text and captions, and import from a URL behind a guarded fetch.
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.
Navigation menus, their items, their order, and which theme location each one is assigned to.
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.
Documents and elements, widget settings, global colour and typography tokens, and theme-builder display conditions.
Requires: Elementor 3.0 or newer.
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.
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.
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.
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.
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.
The moderation queue: list by status, approve, hold, spam or trash, and reply beneath a comment.
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.
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.
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.
The roster, and one write: replacing a user’s roles with a single role the site has actually registered.
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.
Thirteen fields, allowlisted: title, tagline, timezone, date and time formats, posts per page, front-page geometry, permalinks, default discussion settings, and search-engine visibility.
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.
Connection, environment, integration health, one operation’s schema on demand, and the change ledger.
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.
What the site runs: every installed plugin and theme, its version, whether it is active, and whether an update is waiting.
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.
Pro adds operations. Anything free in a release you have already installed stays free in every release after it.
Preview, capability checks, snapshots, verification, rollback, the log and every switch are free on every site, licensed or not.
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.
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.
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.