Developers
Page Builder Sandwich abilities reference
Page Builder Sandwich registers its actions with the WordPress Abilities API. The same abilities are MCP tools on the site’s own server and REST routes under /wp-json/wp-abilities/v1. This page is generated from the plugin’s own registry.
Endpoints
| Ability | REST |
|---|---|
| MCP over HTTP (streamable) | /wp-json/pbs/v1/mcp |
| MCP over WP-CLI (standard input and output) | wp mcp-adapter serve --server=page-builder-sandwich --user=<login> |
| REST: list the abilities | /wp-json/wp-abilities/v1/abilities?category=page-builder-sandwich |
| REST: run an ability | /wp-json/wp-abilities/v1/abilities/<name>/run (GET with ?input= for read-only abilities, POST {"input": {...}} otherwise) |
Authentication and permissions
HTTP requests authenticate with a WordPress application password (HTTP Basic). Connecting to the MCP server needs the capability shown below; every ability then checks its own permission, per object. Read-only abilities run with GET and their input in the query string; the others with POST and a JSON body ‘{“input”: {…}}’.
a WordPress application password (HTTP) or --user (WP-CLI); the user needs the capability each ability names · Settings: Allow AI agents (MCP), on by default
All abilities
| Ability | Edition | REST | Permission | Parameters |
|---|---|---|---|---|
pbs/activate-custom-fontMakes an uploaded custom font (a font file in the media library, by id) available in the font pickers. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/activate-custom-font/run | edit_theme_options (the REST route’s own check) | id integer (required) |
pbs/add-local-fontDownloads a Google font family (family, weights, italic) and serves it from this site. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/add-local-font/run | manage_options (the REST route’s own check) | family string (required)weights arrayitalic boolean |
pbs/add-sectionAdds a ready-made section to a page: at the start, at the end, or after the section at a given position. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/add-section/run | edit_post on that page | id integer (required)section string (required)position string: start, end, afterafter integer |
pbs/add-shop-blockAdds a WooCommerce block at the end of a post: a product element (part: title, gallery, image, price, rating, excerpt, description, add_to_cart, meta, tabs, related, upsells, sale_badge, stock; productId, or 0 for the product being viewed) or a mini cart (label). | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/add-shop-block/run | edit_post (the REST route’s own check) | post integer (required)block string (required): product-element, mini-cartpart string: title, gallery, image, price, rating, excerpt, add_to_cart, meta, tabs, related, upsells, sale_badge, stock, descriptionproductId integerlabel string |
pbs/ai-check-accessibilityLists a page’s accessibility problems: images without alt text, headings that skip a level, links whose text says nothing on its own, and links with no text. Each says whether it can be fixed automatically. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/ai-check-accessibility/run | edit_post on the page | post_id integer (required) |
pbs/ai-create-blockDesigns a reusable component from a description (a pricing card, a team card, a banner) and saves it as a synced pattern in the editor’s “My patterns”, with each text overridable per placement. Returns its id and the block that places it. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/ai-create-block/run | edit_posts and publish_posts; the AI settings’ role and spending rules | description string (required)title string |
pbs/ai-css-helpExplains, writes or fixes the custom CSS of one element, where `selector` stands for the element. Returns the CSS and an explanation; nothing is saved. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/ai-css-help/run | edit_posts and the builder’s code permission | action string (required): explain, write, fixcss stringinstruction stringblock string |
pbs/ai-design-fromRecreates the layout of a screenshot (an image in the media library) or of a public web page (its address) as editable blocks in a new draft page: the same sections, columns, headings, text, lists and buttons. Logos and images are not copied. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/ai-design-from/run | edit_pages (edit_post on the screenshot); the AI settings’ role and spending rules | attachment_id integerurl stringtitle stringinstruction string |
pbs/ai-edit-pageChanges a page as asked in plain words (“make the hero text shorter”, “add an FAQ about delivery after the pricing”, “translate the page into German”). AI answers with edit operations that are checked against the page’s blocks and their settings before anything is applied; refused operations are listed with the reason. A revision is saved first and its id returned as undo_revision. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/ai-edit-page/run | edit_post on the page; the AI settings’ role and spending rules | post_id integer (required)instruction string (required) |
pbs/ai-fix-accessibilityFixes the accessibility problems that can be fixed (all, or the listed issue ids): alt text written by looking at each image, heading levels corrected, vague link texts rewritten. A revision is saved first and its id returned as undo_revision. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/ai-fix-accessibility/run | edit_post on the page; the AI settings’ role and spending rules | post_id integer (required)issues array |
pbs/ai-generate-imageCreates an image from a description with the site’s image model (OpenAI or Google) and saves it to the media library with alt text. Returns its id and address. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/ai-generate-image/run | upload_files; the AI settings’ role and spending rules | prompt string (required)size string: square, landscape, portraitalt stringtitle stringpost_id integer |
pbs/ai-generate-sectionTurns a one-sentence description into a ready-designed section (real, editable blocks in the site’s brand style) with text written for it. Returns the block markup, and adds it to the start or end of a page when a post_id is given (a revision keeps what was there before). | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/ai-generate-section/run | edit_posts; edit_post to add it to a page; the AI settings’ role and spending rules | description string (required)section stringpost_id integerposition string: start, end |
pbs/ai-plan-siteFrom a description of the business, lists the pages a website needs (home first, contact last), each with a title and a brief for that page. Nothing is created; each page can then be built from its brief. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/ai-plan-site/run | edit_pages; the AI settings’ role and spending rules | brief string (required) |
pbs/ai-save-seo-metaSaves a meta title and description into the SEO plugin the site uses (Yoast SEO, Rank Math, SEOPress or All in One SEO) and says which ones were written. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/ai-save-seo-meta/run | edit_post on the page | post_id integer (required)title string (required)description string (required) |
pbs/ai-suggest-seo-metaReads a page and suggests a meta title (up to 60 characters) and meta description (up to 155), optionally around a focus keyword. Nothing is saved. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/ai-suggest-seo-meta/run | edit_post on the page; the AI settings’ role and spending rules | post_id integer (required)keyword string |
pbs/ai-undoPuts a page back the way it was before an AI change, from the undo_revision that change returned. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/ai-undo/run | edit_post on the page | post_id integer (required)revision integer (required) |
pbs/ai-write-alt-textLooks at images and saves alt text for them: one image (attachment_id), or every image on a page that has none (post_id). At most 20 images per call; the answer says how many remain. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/ai-write-alt-text/run | upload_files and edit_post on the image or page; the AI settings’ role and spending rules | attachment_id integerpost_id integeronly_missing booleanlanguage string |
pbs/ai-write-textWrites new text, or improves, shortens, expands, changes the tone of or fixes the grammar of a piece of text, with the site’s own AI provider. Returns the new text; nothing on the site is changed. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/ai-write-text/run | edit_posts (edit_post when post_id is given); the AI settings’ role and spending rules | action string (required): write, improve, shorten, expand, tone, fix, customtext stringtone string: professional, friendly, confident, playful, formal, simpleinstruction stringcontext string |
pbs/apply-brand-kitApplies the saved brand kit’s colours and fonts to the site design. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/apply-brand-kit/run | edit_theme_options (the REST route’s own check) | none |
pbs/apply-kitImports a website kit’s pages (all of them, or the ones named), optionally publishing them, setting the home page and adding them to a menu. Importing again updates the same pages. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/apply-kit/run | edit_pages and publish_pages; manage_options to set the home page; edit_theme_options to create a menu | slug string (required)pages arraypublish booleanfront booleanmenu boolean |
pbs/apply-replaceApplies a previewed job. Every changed post keeps a backup, so the job can be undone. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/apply-replace/run | manage_options (the REST route’s own check) | id string (required) |
pbs/build-landing-pageA guided workflow: the agent picks sections that fit your business, builds the page as a draft and writes its text. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/build-landing-page/run | edit_pages | business string (required) |
pbs/build-pagesCreates up to 50 pages in one call, each from sections and/or block content. Each page is checked and created on its own; the answer lists every page made and every one refused, with the reason. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/build-pages/run | edit_pages; each page is checked on its own (publish_pages to publish) | pages array (required) |
pbs/check-performanceReports what a page’s content adds to its weight: its images (bytes, oversized ones and the smaller size that would do), the stylesheets of the blocks it uses and its third-party embeds, each problem with its fix. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/check-performance/run | edit_post on the page | post_id integer (required) |
pbs/connect-adobe-fontsConnects an Adobe Fonts (Typekit) web project by its kit id, so its fonts appear in the font pickers. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/connect-adobe-fonts/run | edit_theme_options (the REST route’s own check) | kit string (required) |
pbs/connect-marketing-serviceConnects a mailing-list service with its API key (service, key; account where the service needs one), or disconnects it with an empty key. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/connect-marketing-service/run | manage_options (the REST route’s own check) | service string (required)key stringaccount string |
pbs/connect-supportConnects this site to Zinn Digital® support (name, email, consent). | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/connect-support/run | manage_options (the REST route’s own check) | email string (required)name stringconsent boolean (required) |
pbs/convert-builder-exportConverts an export (builder: elementor, divi, beaver or wpbakery; content: the exported text) into a new draft page made of blocks, optionally copying its images into the media library (media). Answers with the draft and a conversion report. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/convert-builder-export/run | edit_pages (the REST route’s own check) | builder string (required): elementor, divi, beaver, wpbakerycontent string (required)title stringmedia booleandryRun booleanstatus string: draft, pending, private, publish |
pbs/convert-builder-pageConverts one page built with Elementor, Divi, Beaver Builder or WPBakery (id) into a new draft made of blocks, keeping its layout, typography, colours and images; the original page is not changed. Answers with the draft and a report of what was converted, approximated or not converted. dryRun converts without saving. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/convert-builder-page/run | edit_pages and edit_post (the REST route’s own check) | id integer (required)dryRun booleanstatus string: draft, pending, private, publish |
pbs/convert-postConverts one 5.x page to blocks (backed up first). | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/convert-post/run | the REST route’s own per-item permission check | id string (required) |
pbs/create-ab-testAdds a test of two versions of a section to the end of a post (post, name, a, b; split and goal optional). | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/create-ab-test/run | edit_post (the REST route’s own check) | post integer (required)name stringa string (required)b string (required)split integergoal string |
pbs/create-classCreates a reusable global style class: label, slug and its styles (s). | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/create-class/run | edit_theme_options (the REST route’s own check) | label string (required)slug strings objectcat string |
pbs/create-cookie-bannerCreates a ready-made consent banner design to start from. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/create-cookie-banner/run | manage_options (the REST route’s own check) | none |
pbs/create-formCreates a form (contact, quote, signup or multi-step: fields, steps, settings and actions such as email, save, webhook or a mailing list), on a new page or at the end of an existing post (post). | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/create-form/run | edit_pages (the REST route’s own check) | title stringfields array (required)steps arrayactions objectsubmitText stringsuccessMessage stringredirectUrl stringtrackEvent stringpost integerpageTitle stringstatus string: draft, publish, private |
pbs/create-pageCreates a page from library sections and/or block content. A new page is a draft unless another status is asked for. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/create-page/run | edit_pages; publish_pages to publish or make private | title string (required)status string: draft, pending, publish, privatesections arraycontent string |
pbs/create-popupCreates a popup, slide-in or bar: its content, trigger (exit intent, scroll, time, click), frequency and the pages it shows on. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/create-popup/run | edit_pages (the REST route’s own check) | title string (required)content string (required)status string: draft, publishsettings object |
pbs/create-query-loopAdds a query loop with a ready-made card, on a new page (pageTitle, status) or at the end of a post (post): source posts|users|terms|field, postType (product for a shop grid), perPage, columns, orderBy, order, pagination, and live filters [{type: search|taxonomy|meta|sort|price|onsale|instock, taxonomy, key, label, ui}]. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/create-query-loop/run | edit_post and edit_posts (the REST route’s own check) | post integerpageTitle stringstatus string: draft, publish, privatesource string: posts, users, terms, fieldpostType stringperPage integercolumns integerorderBy stringorder string: ASC, DESCpagination string: none, numbers, prevnexttaxonomy stringfieldKey stringfilters array |
pbs/create-teamCreates a team library (name) that other sites can join with an invite code. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/create-team/run | manage_options (the REST route’s own check) | name string (required) |
pbs/create-theme-templateCreates a template (title, type) that replaces that part of every matching page, on classic and block themes. Without content it starts from a ready-made design for its type. include/exclude are display-condition rules ({kind, values, key, value, from, to, days}, the kinds this site’s theme builder offers); priority breaks ties; status publish (live) or draft. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/create-theme-template/run | the REST route’s own per-item permission check | title string (required)type string (required)content stringinclude arrayexclude arraypriority integerstatus string: publish, draft |
pbs/deactivate-custom-fontRemoves a custom font (by slug) from the font pickers. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/deactivate-custom-font/run | edit_theme_options (the REST route’s own check) | slug string (required) |
pbs/delete-classDeletes a global class. Elements that used it keep their content and lose its styles. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/delete-class/run | edit_theme_options (the REST route’s own check) | id string (required) |
pbs/delete-iconRemoves an uploaded icon; blocks that used it keep their own copy. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/delete-icon/run | delete_post (the REST route’s own check) | id string (required) |
pbs/delete-library-itemDeletes a design from the cloud library. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/delete-library-item/run | edit_posts (the REST route’s own check) | item string (required)team string |
pbs/delete-pageMoves a page to the trash. It can be restored from Pages, Trash for 30 days. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/delete-page/run | delete_post on that page | id integer (required) |
pbs/delete-teamDeletes a team and every design in its library. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/delete-team/run | manage_options (the REST route’s own check) | team string (required) |
pbs/delete-theme-templateMoves one template (id) to the trash; the theme’s own design shows again where it applied. Restorable from the trash. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/delete-theme-template/run | the REST route’s own per-item permission check | id string (required) |
pbs/disconnect-supportDisconnects this site from support. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/disconnect-support/run | manage_options (the REST route’s own check) | none |
pbs/duplicate-classCopies a global class under a new id. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/duplicate-class/run | edit_theme_options (the REST route’s own check) | id string (required) |
pbs/duplicate-pageCopies a page (its title, content and template) into a new draft. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/duplicate-page/run | edit_post on the page and edit_pages | id integer (required)title string |
pbs/export-designReturns the Site design file: categories, global classes, variables, spacing, radius and shadow scales and custom colours (format page-builder-sandwich-design, version 1). | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/export-design/run | edit_theme_options (the REST route’s own check) | none |
pbs/export-designsExports the chosen templates and patterns (ids) and, optionally, settings as one package for another site. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/export-designs/run | manage_options (the REST route’s own check) | ids arraysettings boolean |
pbs/find-builder-pagesLists the pages and posts built with Elementor, Divi, Beaver Builder or WPBakery (page, per_page), each with its builder and, when it was converted before, the converted draft. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/find-builder-pages/run | edit_pages (the REST route’s own check) | page integerper_page integer |
pbs/generate-pageBuilds a page from sections (given, or chosen by AI from the section library) and has AI rewrite all of its text for your brief, keeping the design. Uses the AI provider set up in the plugin’s AI settings. The page is a draft unless another status is asked for. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/generate-page/run | edit_pages; publish_pages to publish; the AI settings’ role and spending rules | brief string (required)title stringsections arraystatus string: draft, pending, publish, private |
pbs/get-blockReturns one block’s settings (attributes with their types, choices and defaults), what it supports, which blocks it may contain, and a ready-to-use example in block markup. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/get-block/run | edit_posts | name string (required) |
pbs/get-breakpointsReturns the tablet and mobile widths (and custom breakpoints in Pro) the responsive controls use. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/get-breakpoints/run | edit_theme_options (the REST route’s own check) | none |
pbs/get-conversion-trackingReturns the Google Analytics 4, Google Tag Manager and Meta Pixel settings and which clicks and form submissions are sent. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-conversion-tracking/run | manage_options (the REST route’s own check) | none |
pbs/get-cookie-bannerReturns the consent banner: whether it is on, its text and design, the categories, and where it applies. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-cookie-banner/run | manage_options (the REST route’s own check) | none |
pbs/get-design-globalsReturns the site-wide colours and fonts (heading and body) every block uses, as the Site design screen shows them. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/get-design-globals/run | edit_theme_options (the REST route’s own check) | none |
pbs/get-design-systemReturns the Pro design system: global classes, variables, design tokens, dark mode, brand kit and custom fonts. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-design-system/run | edit_theme_options (the REST route’s own check) | none |
pbs/get-diagnosticsReturns the diagnostics a support ticket would carry: versions, active plugins, limits and recent errors. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/get-diagnostics/run | manage_options (the REST route’s own check) | none |
pbs/get-figma-connectionReturns whether the site has a Figma personal access token, the Figma account it belongs to and its last four characters. The token itself is never returned. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-figma-connection/run | manage_options (the REST route’s own check) | none |
pbs/get-library-accountReturns the cloud library’s storage use, plan quota and team facts. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-library-account/run | edit_posts (the REST route’s own check) | none |
pbs/get-library-itemReturns one saved design, ready to insert on this site (its images brought into the media library). | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-library-item/run | edit_posts (the REST route’s own check) | item string (required)team string |
pbs/get-library-storageReturns the bring-your-own R2/S3 storage settings (the secret is never returned). | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-library-storage/run | manage_options (the REST route’s own check) | none |
pbs/get-licenceReturns this site’s Page Builder Sandwich plan, licence state, renewal date and what the plan includes. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/get-licence/run | manage_options (the REST route’s own check) | none |
pbs/get-maintenanceReturns maintenance / coming-soon mode: mode, page, retry-after and which roles still see the site. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-maintenance/run | manage_options (the REST route’s own check) | none |
pbs/get-migrationReturns the 5.x content conversion’s progress and report. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/get-migration/run | the REST route’s own per-item permission check | none |
pbs/get-motion-optionsReturns every motion setting (entrance animation, its length and delay, scroll effect, hover effect, stay in view, parallax, follow the pointer) with its choices or range, and the site’s breakpoints. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-motion-options/run | edit_posts (the REST route’s own check) | none |
pbs/get-newsletter-keysSays whether a Mailchimp key is saved (the key itself is never returned). | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-newsletter-keys/run | edit_posts (the REST route’s own check) | none |
pbs/get-pageReturns a page’s title, status, links and block content, and the sections (top-level blocks) it is made of. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/get-page/run | edit_post on that page | id integer (required) |
pbs/get-replace-jobReturns a job’s matches, page by page, to review before applying. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-replace-job/run | manage_options (the REST route’s own check) | id string (required) |
pbs/get-reviews-sourcesReturns the Google and Trustpilot sources the Reviews block shows. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-reviews-sources/run | manage_options (the REST route’s own check) | none |
pbs/get-rolesReturns which roles may use the builder, design, code and templates (client mode). | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-roles/run | manage_options (the REST route’s own check) | none |
pbs/get-settingsReturns the front-end class prefix, the beta-updates state and whether AI agents (MCP) are allowed. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/get-settings/run | manage_options (the REST route’s own check) | none |
pbs/get-structured-dataLists the schema.org structured data a page’s blocks print (FAQ, How-To, Product, Review, Breadcrumb) and which types are left to the site’s SEO plugin so nothing is printed twice. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-structured-data/run | edit_post on the page | post_id integer (required) |
pbs/get-support-connectionSays whether this site is connected to Zinn Digital® support, and as whom. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/get-support-connection/run | manage_options (the REST route’s own check) | refresh boolean |
pbs/get-theme-builder-optionsReturns the template types, the display-condition kinds (page, post type, term, archive, search, 404, logged in, role, device, date, time, URL parameter, referrer, language, cart) with their choices on this site (roles, languages, post types, taxonomies), and the block attribute (pbswConditions: {match, rules}) that shows or hides any block. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-theme-builder-options/run | edit_posts (the REST route’s own check) | none |
pbs/get-white-labelReturns the white-label settings: on or off, the name shown and which users still see the original. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/get-white-label/run | manage_options (the REST route’s own check) | none |
pbs/import-designValidates a Site design file (file) and, with apply false, returns what merge or replace (mode) would add, change and remove; with apply true, writes it. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/import-design/run | edit_theme_options (the REST route’s own check) | file object (required)mode string: merge, replaceapply boolean |
pbs/import-designsImports a Page Builder Sandwich design package (dryRun first to see what would change; mode: skip or replace; media; settings). | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/import-designs/run | manage_options (the REST route’s own check) | package object (required)mode string: skip, replace, duplicatesettings booleanmedia booleandryRun boolean |
pbs/import-figma-frameImports one Figma frame (url: the frame’s link, with its node-id) into a new draft page made of blocks: auto layout becomes flex and grid containers, text keeps its fonts and sizes, images are copied into the media library. Uses the site’s own Figma token. Answers with the draft and a conversion report. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/import-figma-frame/run | edit_pages and upload_files (the REST route’s own check) | url string (required)title stringdryRun booleanstatus string: draft, pending, private, publish |
pbs/invite-team-memberCreates a single-use invite code (role: read or write; label; days valid). The code is shown once. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/invite-team-member/run | manage_options (the REST route’s own check) | team string (required)role string: read, writedays integerlabel string |
pbs/join-teamJoins a team library with an invite code. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/join-team/run | manage_options (the REST route’s own check) | code string (required) |
pbs/leave-teamLeaves the team library this site joined. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/leave-team/run | manage_options (the REST route’s own check) | none |
pbs/list-ab-testsLists the A/B tests with each version’s visitors and conversions, and which one is winning. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-ab-tests/run | edit_pages (the REST route’s own check) | none |
pbs/list-blocksLists every Page Builder Sandwich block this site can use (Pro blocks too when Pro is active): name, title, category and description. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/list-blocks/run | edit_posts | search string |
pbs/list-dynamic-sourcesReturns what a block can be filled from (post, author, site, archive, custom field, product) with each source’s fields, the field plugins on this site (ACF, Meta Box, Pods, JetEngine, Toolset, post meta) and a post type’s fields (postType). A block is bound to a source through its attributes.metadata.bindings, one {source, args} per attribute. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-dynamic-sources/run | edit_posts (the REST route’s own check) | postType string |
pbs/list-extensionsLists what other plugins have added to Page Builder Sandwich through its developer API: blocks, dynamic data sources, display conditions and form actions, each with its name, label and plugin. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/list-extensions/run | edit_posts | none |
pbs/list-form-submissionsLists what visitors sent through the forms that save submissions (form narrows it), a page at a time. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-form-submissions/run | the REST route’s own per-item permission check | form stringper_page integerpage integer |
pbs/list-formsLists the forms built with the Form block and the form plugins it can embed. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/list-forms/run | edit_posts (the REST route’s own check) | none |
pbs/list-kitsLists the website kits (a set of ready-made pages for one kind of business) this site can import. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/list-kits/run | edit_pages and publish_pages | refresh boolean |
pbs/list-library-itemsLists the designs saved to the cloud library (kind: section, page or pattern; team: a team’s library). | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-library-items/run | edit_posts (the REST route’s own check) | team stringkind string: , section, page, style |
pbs/list-local-fontsLists the Google fonts this site hosts itself (downloaded once, served from the site, no request to Google). | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/list-local-fonts/run | manage_options (the REST route’s own check) | none |
pbs/list-lottieLists the uploaded Lottie animations. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-lottie/run | edit_posts (the REST route’s own check) | none |
pbs/list-marketing-connectionsLists the mailing-list services (Mailchimp, Brevo, MailerLite, Kit, ActiveCampaign) and which are connected. Keys are never returned. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-marketing-connections/run | manage_options (the REST route’s own check) | none |
pbs/list-marketing-formsLists every form made with the form builder: the page it is on, its fields and what happens when it is sent. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-marketing-forms/run | edit_pages (the REST route’s own check) | none |
pbs/list-marketing-listsLists the audiences or lists of a connected mailing-list service, for a form’s subscribe action. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-marketing-lists/run | edit_posts (the REST route’s own check) | service string (required) |
pbs/list-pagesLists the pages you can edit, newest first, with an optional search. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/list-pages/run | edit_pages; only pages the user can edit are listed | search stringstatus string: any, draft, pending, publish, privatepage integerper_page integer |
pbs/list-popupsLists the popups, slide-ins and bars with their triggers, frequency rules and where they show. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-popups/run | edit_pages (the REST route’s own check) | none |
pbs/list-replace-jobsLists the site-wide find-and-replace jobs and their state. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-replace-jobs/run | manage_options (the REST route’s own check) | none |
pbs/list-sectionsLists the ready-made sections (hero, features, FAQ, testimonials, call to action and more) that can be added to a page. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/list-sections/run | edit_pages | search string |
pbs/list-team-membersLists the sites in a team and their access. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-team-members/run | manage_options (the REST route’s own check) | team string (required) |
pbs/list-teamsLists the teams this site belongs to or owns. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-teams/run | manage_options (the REST route’s own check) | none |
pbs/list-theme-templatesLists the theme builder’s templates (header, footer, single, archive, search, 404 and, with WooCommerce, product, shop, cart, checkout, thank-you and My Account): each one’s type, where it shows (include/exclude rules), priority, status and blocks. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/list-theme-templates/run | the REST route’s own per-item permission check | none |
pbs/list-transferableLists the templates, patterns and settings that can be exported to another site. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/list-transferable/run | manage_options (the REST route’s own check) | none |
pbs/list-uploaded-iconsLists the SVG icons uploaded to the icon library, newest first. | Free | GET /wp-json/wp-abilities/v1/abilities/pbs/list-uploaded-icons/run | edit_posts (the REST route’s own check) | page integerper_page integer |
pbs/move-sectionMoves a section of a page from one position to another (0-based, in the order the page lists them). | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/move-section/run | edit_post on that page | id integer (required)from integer (required)to integer (required) |
pbs/open-support-ticketFiles a support ticket (subject, message, kind, email), with this site’s diagnostics when the administrator agreed. It never creates a login or sends one. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/open-support-ticket/run | manage_options (the REST route’s own check) | subject string (required)message string (required)kind string: help, bug, feedback, feature_requestemail stringname stringdiagnostics boolean |
pbs/preview-dynamic-valueReturns what a binding shows on one post (post, source, and field or provider + key, as text|url), to check a binding before or after adding it. | Pro | GET /wp-json/wp-abilities/v1/abilities/pbs/preview-dynamic-value/run | edit_post (the REST route’s own check) | post integer (required)source string (required)field stringprovider stringkey stringas string: text, url |
pbs/record-support-consentRecords the administrator’s consent to send diagnostics with support tickets. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/record-support-consent/run | manage_options (the REST route’s own check) | consent boolean (required) |
pbs/refresh-reviewsFetches the latest Trustpilot reviews now instead of waiting for the daily refresh. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/refresh-reviews/run | manage_options (the REST route’s own check) | none |
pbs/remove-blockRemoves one block (a whole section, or a block inside one) from a page, found by its path. The page’s previous version stays in its revisions. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/remove-block/run | edit_post on that page | id integer (required)path array (required) |
pbs/remove-library-storageRemoves the bring-your-own storage settings; the plan storage is used again. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/remove-library-storage/run | manage_options (the REST route’s own check) | none |
pbs/remove-local-fontDeletes a self-hosted font family’s files. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/remove-local-font/run | manage_options (the REST route’s own check) | family string (required) |
pbs/remove-team-memberRemoves a site from a team. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/remove-team-member/run | manage_options (the REST route’s own check) | team string (required)member string (required) |
pbs/reset-ab-testClears a test’s counts and starts it again (test). | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/reset-ab-test/run | edit_pages (the REST route’s own check) | test string (required) |
pbs/save-library-itemSaves block markup (title, kind, markup, styles, tags) to your cloud library or a team’s; images are packed with it. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/save-library-item/run | edit_posts (the REST route’s own check) | team stringkind string (required): section, page, styletitle string (required)tags arraymarkup stringstyles object |
pbs/set-block-motionSets or removes (null) motion settings on one block of a page, found by its path, at a breakpoint (base by default). Works on any block, including core blocks whose HTML is saved in the page. Visitors who ask for reduced motion never see the movement. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/set-block-motion/run | edit_post (the REST route’s own check) | post string (required)path array (required)breakpoint stringmotion object (required) |
pbs/set-library-storageSaves bring-your-own storage: provider (r2 or s3), bucket, region, endpoint, prefix, key_id, secret, enabled. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/set-library-storage/run | manage_options (the REST route’s own check) | enabled booleanprovider string: r2, s3, otherendpoint stringregion stringbucket stringprefix stringkeyId stringsecret stringpathStyle boolean |
pbs/set-maintenanceTurns maintenance (503) or coming-soon mode on or off (mode), with the page to show (page_id), retry_after and the roles that bypass it. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/set-maintenance/run | manage_options (the REST route’s own check) | mode string: off, maintenance, coming_soonpage_id integerroles arrayretry_after integer |
pbs/set-newsletter-keysSaves (or, with an empty value, removes) the Mailchimp API key the newsletter block uses. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/set-newsletter-keys/run | manage_options (the REST route’s own check) | mailchimp string (required) |
pbs/set-reviews-sourcesSets the Google place and Trustpilot business the Reviews block reads. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/set-reviews-sources/run | manage_options (the REST route’s own check) | google objecttrustpilot object |
pbs/set-rolesSets per role what the builder allows (roles), e.g. a content-only client role. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/set-roles/run | manage_options (the REST route’s own check) | roles object (required) |
pbs/set-white-labelTurns white label on or off and sets the name clients see (enabled, name, agency_users). | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/set-white-label/run | manage_options (the REST route’s own check) | enabled booleanname stringstudio_name stringauthor stringauthor_url stringdescription stringmenu_icon stringhide_plugin booleanagency_users array |
pbs/site-health-cleanCleans one kind of finding: revisions (keeps each post’s newest 5, deletes older ones), patterns (moves unused synced patterns to the trash), images (a scaled copy WordPress uses; the original is kept), classes (removes unused design classes, kept for restoring). Each run cleans one batch; “more” is true while findings remain. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/site-health-clean/run | manage_options | what string (required): revisions, patterns, images, classes |
pbs/site-health-reportFinds old revisions, synced patterns nothing uses, heavy original images and design classes no page uses. Works in short steps: each run continues where the last one stopped while the status is “scanning”; restart starts over. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/site-health-report/run | manage_options | restart boolean |
pbs/start-migrationStarts (or restarts) converting every 5.x page to blocks; each post is backed up first. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/start-migration/run | the REST route’s own per-item permission check | none |
pbs/start-replaceStarts a block-safe find-and-replace (find, replace, kind: text, link or colour; match_case; types). Nothing changes until the previewed job is applied. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/start-replace/run | manage_options (the REST route’s own check) | find string (required)replace stringkind string: text, link, colourtypes arraymatch_case boolean |
pbs/start-trialStarts the 14-day Page Builder Sandwich Pro trial for this site (no payment needed). | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/start-trial/run | manage_options (the REST route’s own check) | none |
pbs/test-library-storageWrites, reads and deletes a test object in your own storage and reports each step. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/test-library-storage/run | manage_options (the REST route’s own check) | none |
pbs/undo-convert-postRestores one converted page from its backup. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/undo-convert-post/run | the REST route’s own per-item permission check | id string (required) |
pbs/undo-migrationRestores every converted post from its backup. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/undo-migration/run | the REST route’s own per-item permission check | none |
pbs/undo-replaceRestores the posts a job changed (a post edited since keeps its edit). | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/undo-replace/run | manage_options (the REST route’s own check) | id string (required) |
pbs/update-blockChanges the settings (attributes) of one block inside a page, found by its path; attributes you send are merged over the current ones. Works on blocks the site renders from their settings; a block whose HTML is saved in the page is changed by replacing the page’s markup. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/update-block/run | edit_post on that page | id integer (required)path array (required)attributes object (required) |
pbs/update-brand-kitSaves the brand kit: name, logo, colours, heading and body fonts, and the brand voice AI writing uses. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-brand-kit/run | edit_theme_options (the REST route’s own check) | name stringlogo integercolors arrayheadingFont stringbodyFont stringvoice string |
pbs/update-breakpointsChanges the tablet and mobile widths in pixels; with Pro, custom extra breakpoints. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/update-breakpoints/run | edit_theme_options (the REST route’s own check) | tablet integermobile integercustom array |
pbs/update-classChanges a global class’s label, slug or styles; every element using it updates. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-class/run | edit_theme_options (the REST route’s own check) | id string (required)label stringslug strings objectcat string |
pbs/update-conversion-trackingChanges the Google Analytics 4, Google Tag Manager and Meta Pixel settings and which events are sent. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-conversion-tracking/run | manage_options (the REST route’s own check) | ga4 stringgtm stringpixel stringloadTags booleanformEvent string |
pbs/update-cookie-bannerChanges the consent banner. While it is on, tracking scripts wait for the visitor’s consent. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-cookie-banner/run | manage_options (the REST route’s own check) | enabled booleanpopup integerhandles arraycookieDays integeroptOutOutsideEu boolean |
pbs/update-dark-modeSets dark mode (mode: off, auto or toggle) and its colours. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-dark-mode/run | edit_theme_options (the REST route’s own check) | mode string (required): device, light, darkcolors object |
pbs/update-design-categoriesReplaces one category list (group: classes or tokens; items: a list of slug and name). Entries filed under a removed category become uncategorised. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-design-categories/run | edit_theme_options (the REST route’s own check) | group string (required): classes, tokensitems array (required) |
pbs/update-design-globalsChanges the site-wide colours (colors), fonts (fonts, headingFont, bodyFont). Every page picks the change up; the theme’s theme.json is kept in sync. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/update-design-globals/run | edit_theme_options (the REST route’s own check) | colors objectfonts objectbodyFont stringheadingFont string |
pbs/update-formChanges one form (post, form): settings and actions merge with what is there; fields (and steps) replace the fields. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-form/run | edit_post (the REST route’s own check) | post string (required)form string (required)title stringfields arraysteps arrayactions objectsubmitText stringsuccessMessage stringredirectUrl stringtrackEvent string |
pbs/update-pageChanges a page’s title, status or block content. Content you send replaces the page’s content. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/update-page/run | edit_post on that page; publish_pages to publish or make private | id integer (required)title stringstatus string: draft, pending, publish, privatesections arraycontent string |
pbs/update-popupChanges a popup, slide-in or bar (id): content, trigger, frequency or where it shows. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-popup/run | edit_post (the REST route’s own check) | id string (required)title stringcontent stringstatus string: draft, publishsettings object |
pbs/update-settingsChanges the front-end class prefix (1 to 8 lowercase letters or digits, starting with a letter) and/or turns AI agents (MCP) on or off (mcp: false removes every ability and the MCP endpoint). | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/update-settings/run | manage_options (the REST route’s own check) | prefix stringmcp boolean |
pbs/update-theme-templateChanges one template (id): any of title, type, content (block markup), include, exclude, priority, status. Only what you send changes. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-theme-template/run | the REST route’s own per-item permission check | id string (required)title stringtype stringcontent stringinclude arrayexclude arraypriority integerstatus string: publish, draft |
pbs/update-tokensChanges the spacing, radius and shadow scales (space, radius, shadow), or resets them (reset). | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-tokens/run | edit_theme_options (the REST route’s own check) | space arrayradius arrayshadow arrayreset boolean |
pbs/update-variablesReplaces the site’s design variables (variables: a list of name and value). | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/update-variables/run | edit_theme_options (the REST route’s own check) | variables array (required) |
pbs/upload-iconAdds an SVG icon (name, svg markup) to the icon library; the SVG is sanitised first. | Free | POST /wp-json/wp-abilities/v1/abilities/pbs/upload-icon/run | upload_files (the REST route’s own check) | name string (required)svg string (required) |
pbs/upload-lottieValidates a Lottie JSON document (json, name) and publishes it as a static file for the Lottie block. | Pro | POST /wp-json/wp-abilities/v1/abilities/pbs/upload-lottie/run | upload_files (the REST route’s own check) | name string (required)json string (required) |
Generated from the plugin’s abilities.json, which is itself generated from a running site; a test fails when the two disagree.
WP-CLI commands
Run these on the server with WP-CLI. Each command checks the same permissions as the plugin’s screens; the examples are taken from the plugin’s own help text.
| Command | What it does | Edition |
|---|---|---|
wp pbs export [--types=<types>] [--no-settings] [--file=<name>] | Export templates, patterns and settings to a file. | Free |
wp pbs import <file> [--mode=<mode>] [--no-settings] [--media] [--dry-run] | Import an export file. | Free |
wp pbs importers run | Convert legacy content: every post, or one. | Free |
wp pbs importers status | Show the migration state. | Free |
wp pbs importers undo | Undo conversions from their backups: every post, or one. | Free |
wp pbs migrate run | Convert legacy content: every post, or one. | Free |
wp pbs migrate status | Show the migration state. | Free |
wp pbs migrate undo | Undo conversions from their backups: every post, or one. | Free |
wp pbs replace <find> <replace> [--kind=<kind>] [--types=<types>] [--ignore-case] [--dry-run] [--undo=<job>] | Find and replace across the whole site. | Pro |
wp pbsw fonts download <family> [--weights=<weights>] [--italic] | Download a Google Fonts family to this site. | Free |
wp pbsw fonts list | List the stored families. | Free |
wp pbsw fonts remove <family> | Remove a stored family and its files. | Free |
Actions and filters
Every hook the plugin offers, with the description from its source code. Filters change a value; actions let you run code at a moment; entry points are actions you fire to ask the plugin to do something.
| Hook | Kind | What it does | Parameters | Edition |
|---|---|---|---|---|
pbs_assets_changed | Action | Fires when PBS’s published front-end files changed and the page caches it can reach were emptied: hook it to purge what PBS cannot reach (a CDN, a proxy, a host’s cache). | none | Free |
pbs_enqueue_scripts | Action | Legacy action: enqueue scripts that call window.pbsAddInspector(). | none | Free |
pbs_shortcodes | Filter | Legacy filter: shortcode tag => {label, desc, options[]} (Shortcode-API.md). | array $shortcodes | Free |
pbsw_admin_data | Filter | Filters the data the admin app boots with. The premium layer uses it to report its edition; nothing sensitive belongs here, because it is printed into the page. | none | Free |
pbsw_admin_enqueue | Action | Fires after the admin screen’s script is enqueued, so a module can enqueue a script that adds a panel through the `pbs.admin.panels` JavaScript filter (it must depend on this handle; the screen renders on DOM ready, after every footer script has run). | string $handle | Free |
pbsw_ai_enqueue | Action | Fires after the AI editor bundle is enqueued, so an add-on (and the Pro layer) can enqueue its own AI panels after it. | string $handle | Free |
pbsw_ai_messages | Filter | Filters the messages of every AI request the plugin sends, with its context (task, purpose, provider, model, user); the Pro brand kit adds your brand here. | array $messagesarray $context | Free |
pbsw_ai_pro_features | Filter | Filters the Pro AI features the editor offers (the premium layer adds its names: agent, site, block, design, image, css, a11y). | none | Free |
pbsw_ai_seo_plugins | Filter | Filters which SEO plugins the AI SEO helper writes the meta title and description into. | none | Free |
pbsw_ai_seo_write | Filter | Filters whether another SEO plugin took the meta title and description. A plugin added on `pbsw_ai_seo_plugins` saves them here, in its own way, and answers true. | bool $writtenstring $pluginint $post_idstring $titlestring $description | Free |
pbsw_asset_sources | Filter | Every front-end source: this file’s, the ones the performance layer registers with add_source() (per-block CSS, view modules), and any the premium layer adds for itself through `pbsw_asset_sources` (its files live in its own directory, which only the premium package ships). Only a plain relative `.css`/`.js` path inside the plugin is accepted, under a key of lowercase segments (`legacy.css`, `block/row.css`, `module/tabs.js`). | none | Free |
pbsw_breakpoints_changed | Action | Fires when the breakpoints change (compiled page sheets rebuild on their next view, because the breakpoints are part of their signature). | none | Free |
pbsw_cache_purged | Action | Fires after PBS purged a post from the active cache plugins. | int $post_id | Free |
pbsw_cache_purgers | Filter | Filters the extra purgers run when the published files change: name => callable. A host adds its own (a CDN, a proxy); one that throws is skipped and not reported as purged. | none | Free |
pbsw_code_blocks | Filter | Filters the block names treated as custom code (only roles with the `code` permission may add or change them). | none | Pro |
pbsw_consent_country | Filter | Filters the visitor’s country (ISO 3166-1 alpha-2) for the cookie banner’s regional rule. The plugin never looks a country up; return ” when unknown. | string $country | Pro |
pbsw_content_only | Filter | Filters whether a user may only edit text and images, with the layout locked. | bool $content_onlyint $user_id | Free |
pbsw_design_class_css | Filter | Filters a global class’s compiled CSS before the design engine is asked. Return a string to use it instead. | string|null $cssstring $selector | Pro |
pbsw_design_custom_breakpoints | Filter | Filters whether custom breakpoints are available (pbs-d3, Pro). | bool $allowed | Free |
pbsw_design_element_css | Filter | Filters whether per-element custom CSS is compiled (the premium layer enables it, d8). | bool $enabled | Free |
pbsw_design_layout_suffix | Filter | Filters the layout-element selector suffix for a block (” = the block’s own element). | string $suffixstring $prefix | Free |
pbsw_design_props | Filter | Filters the design props (the premium layer adds its own). | none | Free |
pbsw_dynamic_editor_sources | Filter | More sources in the editor (WooCommerce product fields). | none | Pro |
pbsw_dynamic_fields | Filter | Field catalogue for providers that have no listing API this plugin reads (JetEngine, Toolset): their field keys are typed in the editor, or added here. | string $post_type | Pro |
pbsw_dynamic_sources | Filter | More sources (WooCommerce products): name → label; their values come from `pbsw_dynamic_value`. | none | Pro |
pbsw_dynamic_value | Filter | A value from another source (WooCommerce). | string|null $valuestring $source | Pro |
pbsw_form_submitted | Action | Fires after a form submission passed validation and its actions ran. | none | Pro |
pbsw_frontend_prefix | Filter | Filters the neutral front-end class prefix. | string $prefix | Free |
pbsw_fs_loaded | Action | Fires once the licensing SDK has loaded (in the main file, before any Page Builder Sandwich code). Hook here to talk to `pbsw_fs()`. | none | Free |
pbsw_is_agency | Filter | Filters whether the Agency plan’s features are available on this site. | bool $agency | Free |
pbsw_is_pro | Filter | Filters whether the premium layer is running. Only the premium layer answers it. | bool $pro | Free |
pbsw_kit_api_base | Filter | Filters the Zinn Digital® API base the support screens call. | string $base | Free |
pbsw_kit_diagnostics | Filter | Filters the diagnostics before the site owner sees them. A plugin adds its own facts under `extra`. ⛔ This runs BEFORE the preview, never between the preview and the send. | none | Free |
pbsw_kit_footprint_free | Filter | Filters whether this site is footprint-free, so Zinn® Ads is never promoted on it. | bool $footprint_free | Free |
pbsw_kit_imported | Action | Fires after a kit was imported. | int $front | Free |
pbsw_kit_promotions | Filter | Filters the promotion registry before it is resolved. Add a row to promote another product: `id`, `kind` (hosting|marketplace|platform|plugin|bundle|membership|ads), `slot` (promo|cross-sell), and `url` or (for a plugin) `name`, `site`, `main_files`. | none | Free |
pbsw_kit_tier | Filter | Filters the plan tier the kit reports for this plugin (tests and staging; the licence decides in production). | string $tier | Free |
pbsw_lcp_fold | Filter | How far down the content counts as the first screen, in CSS pixels from its top. Blocks starting above it are treated as above the fold: their images load eagerly and the likeliest LCP image gets `fetchpriority=”high”`; blocks below it lazy-load. Raise it for a tall hero, lower it for a compact header. | int $fold | Free |
pbsw_legacy_body_classes | Filter | Filters the legacy body classes. The premium layer adds legacy premium’s responsive classes here (guideline 5: that behaviour is not in the free plugin). | none | Free |
pbsw_legacy_script_enqueued | Action | A legacy post was examined for its front-end behaviour (the premium layer adds its own). | int $post_idstring $contentstring|null $handle | Free |
pbsw_library_token | Filter | Filters the bearer token sent with kit requests (the premium cloud library supplies it). | string $token | Free |
pbsw_link_base | Filter | Filters the path short links live under (`/go/<slug>/`). | string $base | Pro |
pbsw_list_services | Filter | Filters the mailing-list services forms can subscribe to. | none | Pro |
pbsw_loop_query_args | Filter | The loop’s query (WooCommerce: price range, on sale, in stock, price/popularity/rating sorts). | none | Pro |
pbsw_loop_sorts | Filter | Sort choices (WooCommerce adds price, popularity and rating). | none | Pro |
pbsw_mcp_abilities | Action | Fires after the free abilities are registered: Page Builder Sandwich Pro registers its own here (its boot hooks this only when the licence allows the premium code). | none | Free |
pbsw_migration_batch_size | Filter | How many legacy (5.x) posts one background migration step converts. Each step is one Action Scheduler action; a smaller batch suits a slow or memory-tight host, a larger one a fast host with many posts. Values below 1 are treated as 1. | int $size | Free |
pbsw_migration_post_types | Filter | Filters the post types the legacy migration converts. | list<string> $types | Free |
pbsw_nav_menu_item_classes | Filter | Filters an item’s classes (the Pro item options add `nav-menu__item–hide-mobile` and `–hide-desktop`). Only `nav-menu__item–<name>` classes are kept. | int $depth | Free |
pbsw_nav_menu_item_label | Filter | Filters an item’s label, which is escaped HTML (the Pro item options add an icon, a badge and the description). A callback must return escaped HTML. | string $labelint $depthstring $prefix | Free |
pbsw_nav_menu_toggle | Filter | Filters the Menu button’s HTML: the Pro toggle bar designer puts it in a bar with a logo, a search box, links… (shown only while the menu is folded). A result that does not contain the button unchanged is ignored, so the menu can never lose it. | string $togglestring $prefix | Free |
pbsw_newsletter_form_settings | Filter | The settings of a form that is not a 5.x one (data-* ⇒ value), or an empty array. | int $post_idstring $form | Free |
pbsw_newsletter_providers | Filter | The newsletter services this site can subscribe with: service ⇒ callable( string $email, array $settings ): array{ok: bool, message: string}. The premium layer adds 5.x’s three. | none | Free |
pbsw_page_css_changed | Action | Fires when a post’s compiled stylesheet changed (cache plugins purge on it). | int $post_id | Free |
pbsw_page_css_enqueued | Action | Fires after a page’s compiled stylesheet is enqueued (the premium critical-CSS layer hooks here). | string $handleint $post_id | Free |
pbsw_page_css_extra | Filter | Filters the CSS appended to a page’s compiled sheet after the blocks’ own stylesheets (pbs-p4: the design system’s `.<prefix>-s-<id>` rules). Compiled, not minified here: a listener returns its CSS ready to serve. | string $extrastring $prefixint $post_id | Free |
pbsw_page_css_signature | Filter | Filters what else makes a compiled state current (pbs-p4: the breakpoints). | string $extra\WP_Post $post | Free |
pbsw_page_css_state | Filter | Filters a post’s compiled state before it is stored (pbs-p4 records which design rules the sheet carries, so the render filter does not print them again). | int $post_id | Free |
pbsw_permission | Filter | Filters whether a user may use a builder capability. The free plugin allows every one; the Pro role manager answers per role. Administrators should always be allowed. | bool $allowedstring $whatint $user_id | Free |
pbsw_popup_force | Filter | Popups printed on every page whatever their targeting (the cookie banner). | none | Pro |
pbsw_replace_post_types | Filter | Filters the post types find and replace searches by default. | none | Pro |
pbsw_schema_skip | Filter | Filters the structured-data types Page Builder Sandwich leaves out because the site’s SEO plugin already prints them for this page. | string $content | Pro |
pbsw_site_design_data | Filter | Filters the Site design boot data. The premium layer reports its edition and adds the data its sections need. | none | Free |
pbsw_site_design_deps | Filter | Filters the dependencies of the Site design bundles. The premium layer adds its own script here, so its sections are registered before the panel first renders. | string $handle | Free |
pbsw_site_health_keep_revisions | Filter | Filters how many of each post’s newest revisions the clean-up keeps (default 5). | int $keep | Pro |
pbsw_style_at_rules | Filter | Filters the at-rule presets the style builder offers under Style › Condition: a list of `array( ‘id’ => ‘narrow-card’, ‘label’ => ‘Narrow card’, ‘type’ => ‘container’, ‘query’ => ‘card (max-width:400px)’ )`, where `type` is `media`, `container` or `supports`. Values set under a condition print as `@<type> <query>{…}` after the screen-size rules. The built-in presets are print, dark colour scheme, reduced motion and mouse or trackpad; an invalid preset is dropped and named in the `pbsw_style_at_rules_invalid` action. | none | Free |
pbsw_style_at_rules_invalid | Action | Fires when presets from `pbsw_style_at_rules` were dropped as invalid. | none | Free |
pbsw_template_content_location | Filter | A more specific content location (WooCommerce: single_product, product_archive, cart…). | string $location | Pro |
pbsw_template_resolved | Filter | The templates chosen for a location. | string $type | Pro |
pbsw_template_types | Filter | More template types (WooCommerce pages). | none | Pro |
pbsw_theme_builder_editor_data | Filter | More editor data (dynamic data sources and field plugins, the WooCommerce pieces). | none | Pro |
pbsw_theme_globals_saved | Action | This action is documented below. | none | Free |
pbsw_transfer_imported | Action | Fires after a package was imported, so caches built from templates and settings (the per-page styles, the site style sheet) can be rebuilt. | none | Free |
pbsw_transfer_meta_keys | Filter | Filters the post meta keys import and export carry with each item. | none | Free |
pbsw_transfer_options | Filter | Filters the options import and export can move between sites. Only `pbsw_` options are accepted; anything else is dropped so a package can never write a core or third-party option. | none | Free |
pbsw_transfer_post_types | Filter | Filters the post types that import and export can move between sites. | none | Free |
pbsw_visitor_country | Filter | Filters the visitor’s country for the age gate and responsible gambling notices, for a site that knows it another way (a geolocation plugin, a membership profile). | string $country | Pro |
pbsw_white_label_map | Filter | Filters the white-label replacements (source text => shown text). | none | Pro |