Blueprints
A Blueprint is a reviewable JSON build plan for WordPress. Save it once, then use it whenever you create a sandbox or bake it into a reusable Template.
Create a Blueprint
- Open Blueprints from the SandyWP app navigation.
- Click New Blueprint.
- Choose Upload ZIP, From URL, or JSON.
- Add an optional name and description, then click Save Blueprint.
SandyWP validates the document and adapts compatible WordPress Playground instructions automatically. The list shows whether the saved Blueprint is ready or needs attention.
Import from a URL
Use the original blueprint.json URL whenever possible. If the document references
sibling files such as ./theme.zip, ./content.xml, or ./data.sql, SandyWP resolves them relative to that URL. Paths written from the
bundle root — /theme.zip — resolve against the blueprint.json folder
too, matching WordPress Playground.
https://raw.githubusercontent.com/example/project/main/blueprint.json The same field also accepts a URL that serves a ZIP bundle. SandyWP downloads the archive and imports it exactly as an uploaded bundle.
https://example.com/kits/brewcommerce.zip Upload a ZIP bundle
Upload a bundle when the Blueprint and its assets belong together. Put blueprint.json at the ZIP root or inside one top-level folder; bundled resources are resolved from that manifest folder, whether they are written
as ./theme.zip or /theme.zip.
Paste or write JSON
Paste any self-contained Blueprint document, or type one directly in the editor. A minimal Blueprint looks like this:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": [
{
"step": "setSiteOptions",
"options": {
"blogname": "My SandyWP Site"
}
}
]
} ./theme.zip therefore
cannot be located. Import those Blueprints from their original URL instead.Start a sandbox from a Blueprint
- Open My sites and click New sandbox.
- Open the starting-point picker and choose a saved Blueprint.
- Review the stack and site name, then create the sandbox.
SandyWP provisions a normal container first and runs the compatible Blueprint steps inside it. Progress and errors appear in the same creation dialog.
Manage saved Blueprints
Click a Blueprint row to edit it. Open the … menu—or right-click the row—to access
the other actions:
- Edit Blueprint updates the Blueprint document and display details.
- Save as Template runs the Blueprint and stores the finished site as a snapshot.
- Delete Blueprint removes the Blueprint without deleting Templates already baked from it.
Starter Blueprints
Copy one of these examples into the JSON tab, then adjust it for your project. These are intentionally small so every instruction remains easy to review.
Blank WordPress Starter · Clean install · Latest WordPress · No dependencies View JSON
A clean WordPress site with a useful title and no extra plugins or themes.
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": [
{
"step": "setSiteOptions",
"options": {
"blogname": "My SandyWP Site",
"blogdescription": "A clean WordPress sandbox"
}
}
]
}Plugin Lab Development · Query Monitor · WP Crontrol · Debug-friendly View JSON
A practical debugging workspace with Query Monitor and WP Crontrol activated.
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": [
{
"step": "installPlugin",
"pluginData": {
"resource": "wordpress.org/plugins",
"slug": "query-monitor"
},
"options": {
"activate": true
}
},
{
"step": "installPlugin",
"pluginData": {
"resource": "wordpress.org/plugins",
"slug": "wp-crontrol"
},
"options": {
"activate": true
}
},
{
"step": "setSiteOptions",
"options": {
"blogname": "Plugin Lab",
"blogdescription": "A SandyWP plugin testing workspace"
}
}
]
}WooCommerce Store Commerce · WooCommerce · Store foundation · Ready to configure View JSON
A fresh storefront foundation with WooCommerce installed and activated.
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": [
{
"step": "installPlugin",
"pluginData": {
"resource": "wordpress.org/plugins",
"slug": "woocommerce"
},
"options": {
"activate": true
}
},
{
"step": "setSiteOptions",
"options": {
"blogname": "My Store",
"blogdescription": "A WooCommerce store built on SandyWP"
}
}
]
}Theme Preview Design · Twenty Twenty-Five · Theme activated · Design sandbox View JSON
A minimal site running the Twenty Twenty-Five theme for visual exploration.
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "twentytwentyfive"
},
"options": {
"activate": true
}
},
{
"step": "setSiteOptions",
"options": {
"blogname": "Theme Preview",
"blogdescription": "Explore a WordPress theme in SandyWP"
}
}
]
}Classic Blog Publishing · Classic Editor · Posts homepage · Writer-friendly View JSON
A straightforward publishing setup with the familiar Classic Editor.
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": [
{
"step": "installPlugin",
"pluginData": {
"resource": "wordpress.org/plugins",
"slug": "classic-editor"
},
"options": {
"activate": true
}
},
{
"step": "setSiteOptions",
"options": {
"blogname": "My Blog",
"blogdescription": "Stories, notes, and ideas",
"show_on_front": "posts"
}
}
]
}Compatibility matrix
SandyWP validates the original recipe and reports every compatibility change before execution. An information or warning finding does not block a run; an error does.
| Category | What SandyWP does | Examples |
|---|---|---|
| Natively provided | Removes the Playground flag and records an information finding. | features.networking and features.intl are removed regardless
of their JSON boolean value. SandyWP containers always provide real outbound networking
and PHP intl, so networking: false does not disable egress. |
| Automatically adapted | Rewrites the instruction or resource into a SandyWP-compatible equivalent. | Legacy Playground GitHub proxy URLs become direct GitHub resources; importWxr becomes a temporary-file and WP-CLI import; supported
Playground-only step metadata is removed. |
| Ignored and reported | Removes the field or step and shows an information or warning finding. | landingPage, Blueprint login, phpExtensionBundles, progress captions, and collision policy metadata.
Unsupported steps such as request and resetData are dropped,
never silently executed. |
| Prohibited or blocking | Keeps the Blueprint from running until the error is corrected. | Unknown features keys, other schema errors, absolute local filesystem paths,
and unresolved bundled resources in pasted JSON. Unsafe ZIP paths and
archives outside the bundle limits are rejected during upload. |
features keys, so an unknown key remains a blocking schema error.Blueprint execution can run PHP, SQL, and WP-CLI, so running or baking a Blueprint requires a paid plan.
Next steps
- Explore the Blueprints feature.
- Create a sandbox from a saved Blueprint.
- Templates turn a finished Blueprint run into a fast reusable snapshot.
- Automate it: the API covers the same
create/validate/bake/run operations, and
sandywp blueprint …in the CLI wraps them for scripts and CI (--waitpolls a bake to completion).