Title: Blueprint data format
Published: July 15, 2026
Last modified: July 16, 2026

---

# Blueprint data format

## In this article

 * [JSON schema](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#json-schema)
 * [Landing page](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#landing-page)
 * [Preferred versions](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#preferred-versions)
 * [Features](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#features)
 * [Extra libraries](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#extra-libraries)
 * [Steps](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#steps)
 * [Common property placement mistakes](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#common-property-placement-mistakes)
    - [Activate a plugin or theme](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#activate-a-plugin-or-theme)
    - [Install plugins with the shorthand](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#install-plugins-with-the-shorthand)
    - [Use one plugin install shape](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#use-one-plugin-install-shape)
    - [Keep preferredVersions limited to versions](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#keep-preferredversions-limited-to-versions)
    - [Use explicit steps when order matters](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#use-explicit-steps-when-order-matters)

[ Back to top](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#wp--skip-link--target)

A Blueprint JSON file can have many different properties that will be used to define
your Playground instance. The most important properties are detailed below.

Here’s an example that uses many of them:

    ```language-json
    {
        "landingPage": "/wp-admin/",
        "preferredVersions": {
            "php": "8.3",
            "wp": "6.5"
        },
        "features": {
            "networking": true
        },
        "steps": [
            {
                "step": "login",
                "username": "admin",
                "password": "password"
            }
        ]
    }
    ```

[Try it out!](https://playground.wordpress.net/?mode=seamless#eyJsYW5kaW5nUGFnZSI6Ii93cC1hZG1pbi8iLCJwcmVmZXJyZWRWZXJzaW9ucyI6eyJwaHAiOiI4LjMiLCJ3cCI6IjYuNSJ9LCJmZWF0dXJlcyI6eyJuZXR3b3JraW5nIjp0cnVlfSwic3RlcHMiOlt7InN0ZXAiOiJsb2dpbiIsInVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6InBhc3N3b3JkIn1dfQ==)

## 󠀁[JSON schema](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#json-schema)󠁿

JSON files can be tedious to write and easy to get wrong. To help with that, Playground
provides a [JSON schema](https://playground.wordpress.net/blueprint-schema.json)
file that you can use to get auto-completion and validation in your editor. Just
set the `$schema` property to the following:

    ```javascript
    {
        "$schema": "https://playground.wordpress.net/blueprint-schema.json",
    }
    ```

## 󠀁[Landing page](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#landing-page)󠁿

The `landingPage` property tells Playground which URL to navigate to after the Blueprint
has been run. This is a great tool, especially when creating theme or plugin demos.
Often, you will want to start Playground in the Site Editor or have a specific post
open in the Post Editor. Make sure you use a relative path.

    ```javascript
    {
        "landingPage": "/wp-admin/site-editor.php",
    }
    ```

## 󠀁[Preferred versions](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#preferred-versions)󠁿

The `preferredVersions` property declares your preferred PHP and WordPress versions.
It can contain the following properties:

 * `php` (string): Loads the specified PHP version. Accepts `7.4`, `8.0`, `8.1`,`
   8.2`, `8.3`, `8.4`, `8.5`, `latest`, or `next`. Minor versions like `7.4.1` are
   not supported. Use `next` to preview the next PHP version from the php-src development
   branch; it is currently supported by the web runtime only.
 * `wp` (string): Loads the specified WordPress version. Accepts the last seven 
   major WordPress versions. As of April 28, 2026, that’s `6.3`, `6.4`, `6.5`, `
   6.6`, `6.7`, `6.8`, or `6.9`. You can also use the generic values `latest`, `
   beta`, or `nightly` (alias `trunk`). `beta` resolves to the most recent Beta 
   or Release Candidate of an active release cycle; `nightly`/`trunk` builds straight
   from the WordPress development branch.

    ```javascript
    {
        "preferredVersions": {
            "php": "8.3",
            "wp": "6.7"
        },
    }
    ```

## 󠀁[Features](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#features)󠁿

You can use the `features` property to turn on or off certain features of the Playground
instance. It can contain the following properties:

 * `networking`: Defaults to `true`. Enables or disables the networking support 
   for Playground. If enabled, [`wp_safe_remote_get`](https://developer.wordpress.org/reference/functions/wp_safe_remote_get/)
   and similar WordPress functions will actually use `fetch()` to make HTTP requests.
   If disabled, they will immediately fail instead. You will need this property 
   enabled if you want the user to be able to install plugins or themes.

    ```javascript
    {
        "features": {
            "networking": false
        },
    }
    ```

## 󠀁[Extra libraries](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#extra-libraries)󠁿

You can preload extra libraries into the Playground instance. The following libraries
are supported:

 * `wp-cli`: Enables WP-CLI support for Playground. If included, WP-CLI will be 
   installed during boot. If not included, you will get an error message when trying
   to run WP-CLI commands using the JS API. WP-CLI will be installed by default 
   if the blueprint contains any `wp-cli` steps.

    ```javascript
    {
        "extraLibraries": [ "wp-cli" ],
    }
    ```

## 󠀁[Steps](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#steps)󠁿

Arguably the most powerful property, `steps` allows you to configure the Playground
instance with preinstalled themes, plugins, demo content, and more. The following
example logs the user in with a dedicated username and password. It then installs
and activates the Gutenberg plugin. [Learn more about steps](https://developer.wordpress.org/playground/blueprints/steps).

    ```javascript
    {
        "steps": [
            {
                "step": "login",
                "username": "admin",
                "password": "password"
            },
            {
                "step": "installPlugin",
                "pluginData": {
                    "resource": "wordpress.org/plugins",
                    "slug": "gutenberg"
                }
            },
        ]
    }
    ```

## 󠀁[Common property placement mistakes](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#common-property-placement-mistakes)󠁿

Blueprint validation errors often come from putting a valid property in the
 wrong
object.

### 󠀁[Activate a plugin or theme](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#activate-a-plugin-or-theme)󠁿

`activate` belongs inside `options`, not inside `pluginData`, `themeData`, or
 directly
on the step.

    ```language-json
    {
        "step": "installPlugin",
        "pluginData": {
            "resource": "wordpress.org/plugins",
            "slug": "gutenberg"
        },
        "options": {
            "activate": true
        }
    }
    ```

### 󠀁[Install plugins with the shorthand](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#install-plugins-with-the-shorthand)󠁿

The `plugins` shorthand is a top-level Blueprint property. Do not put it inside
`
preferredVersions`.

    ```language-json
    {
        "preferredVersions": {
            "php": "8.3",
            "wp": "latest"
        },
        "plugins": ["gutenberg"]
    }
    ```

### 󠀁[Use one plugin install shape](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#use-one-plugin-install-shape)󠁿

For an `installPlugin` step, use `pluginData`. Do not mix `pluginData` with
 older
examples or custom objects such as `pluginZipFile`.

    ```language-json
    {
        "step": "installPlugin",
        "pluginData": {
            "resource": "wordpress.org/plugins",
            "slug": "woocommerce"
        },
        "options": {
            "activate": true
        }
    }
    ```

The `wordpress.org/plugins` resource needs a separate `slug`. Do not write the
 
slug into the `resource` value, such as `"wordpress.org/plugins/woocommerce"`.

### 󠀁[Keep preferredVersions limited to versions](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#keep-preferredversions-limited-to-versions)󠁿

`preferredVersions` only accepts `php` and `wp`. Use `features` for networking,
`
plugins` or `installPlugin` for plugins, and `steps` for ordered setup tasks.

### 󠀁[Use explicit steps when order matters](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#use-explicit-steps-when-order-matters)󠁿

Shorthands such as `plugins`, `login`, `siteOptions`, and `constants` are
 expanded
before the `steps` array. If one action must happen before another, write both actions
as explicit steps in the order you need.

First published

July 15, 2026

Last updated

July 16, 2026

Edit article

[ Improve it on GitHub: Blueprint data format ](https://raw.githubusercontent.com/WordPress/wordpress-playground/trunk/packages/docs/site/docs/blueprints/03-data-format.md)

Changelog

[ See list of changes: Blueprint data format ](https://developer.wordpress.org/playground/blueprints/data-format/?output_format=md#)

[  Previous: Using Blueprints](https://developer.wordpress.org/playground/blueprints/using-blueprints/)

[  Next: Steps](https://developer.wordpress.org/playground/blueprints/steps/)