This is an archived copy of the SandyWP docs. It is kept online as a fallback and may be out of date. The maintained documentation lives at docs.sandywp.com.

Slack app

Deploy to your SandyWP sandboxes without leaving Slack. Mention @SandyWP with a plugin .zip attached or a deploy <branch> command and the bot creates a site (or deploys to an existing one) and replies in-thread with the URL and a magic login link.

SandyWP for Slack is mention-based: you talk to the bot by @mentioning it in a channel it belongs to. There are no slash commands to remember. See the SandyWP for Slack overview for a tour, or read on for the full walkthrough.

Install to your workspace

A workspace admin installs the app once, then anyone in the workspace can use it.

  1. Open the SandyWP for Slack page and click Add to Slack (this points at /slack/install). If you are signed in to SandyWP, the Slack tab on your account page shows the same button.
  2. Slack asks you to approve the app for your workspace. Approve it.
  3. You land back on a success page. Your workspace's bot token is stored encrypted (AES-256-GCM) there is nothing to configure on your end.

Invite the bot to any channel you want to use it in with /invite @SandyWP. The bot only sees messages in channels it has been added to.

Link your account

Deploys run as you against your SandyWP account and your plan limits so each Slack user links their own identity once.

  1. In Slack, mention @SandyWP login (link / sign in work too).
  2. The bot replies in-thread with a one-time link. Open it in your browser.
  3. Log into SandyWP normally, then click Link my account. A personal API token is created for Slack so deploys act as your account.

The bot posts a confirmation back into the thread once you are linked. To unlink later, mention @SandyWP logout it revokes that API token and removes the mapping.

Login links are single-use and expire after about 10 minutes. If yours expired, just run @SandyWP login again for a fresh one.

Deploy a plugin ZIP

Attach a plugin .zip to a message and mention the bot. SandyWP downloads it, installs and activates the plugin, and replies with the site URL, a magic login link, and the result. Where the plugin lands depends on how you phrase the mention:

You sayWhat happens
@SandyWP create a site wp: 6.9 and install thisCreates a brand-new site on WordPress 6.9 and deploys the plugin onto it. Omit wp: to use the latest stable version.
@SandyWP install this to my-demoDeploys to your existing site my-demo. A slug or a full my-demo.sandywp.dev URL both work. Only ready sites qualify. Keep the to: a bare install my-demo now reads as a wordpress.org plugin name (see below).
@SandyWP name: my-demoCreates a new site named my-demo. name: always means "make a new site", never "target an existing one".
@SandyWP install this (no site named)If you already have ready sites, the bot replies with a picker instead of guessing (see below). With no ready sites yet, it just creates one.

The site picker

When you attach a ZIP but don't say where it should go, the bot posts buttons in the thread: one per recent ready site (up to four, with a dropdown above that) plus ➕ Create new site. Click one and it deploys there, swapping the buttons for "Installing…". Only the person who started the mention can click, and the picker expires after about 15 minutes.

Already uploaded the ZIP earlier in the thread? Reply @SandyWP upload that plugin and the bot grabs the most recent .zip from the thread Slack often omits the file from the mention itself, so it re-scans the thread to find it.

Preinstall plugins from wordpress.org

List wordpress.org plugin slugs after install or with, separated by commas and/or and. They are installed and activated while the sandbox is being built, so it comes up with everything already in place:

  • @SandyWP create a site with query-monitor, woocommerce no ZIP needed.
  • @SandyWP create a site name: plugin-test, install this, and publishpress-authors, post-expirator your attached .zip and two wordpress.org plugins, in one message.

Up to 10 plugins per site. The word this always means the attached ZIP, and the name: and wp: values are never mistaken for plugin names.

Preinstalling a list happens while a new sandbox is built. To add one wordpress.org plugin to a site you already have, use the existing-site command below.

Typos are caught before anything is created

If a slug is not on wordpress.org, the bot stops and asks instead of handing you a sandbox that is quietly missing the plugin you wanted to test:

🔍 I couldn't find publishpress-author on wordpress.org. Did you mean publishpress-authors?

Every bad name is reported in one reply, and nothing is created until you fix it, so just correct the message and mention the bot again. When no close match exists the bot says so rather than guessing.

Install wordpress.org plugins on an existing site

Add and activate up to 10 directory plugins without rebuilding the sandbox or uploading a ZIP:

  • @SandyWP install query-monitor, woocommerce on my-demo installs both directly on the named ready site.
  • @SandyWP install query-monitor, woocommerce installs immediately when you have one ready site, or shows a site picker when you have several.

Separate slugs with commas or and. This picker only lists existing ready sites and has no “Create new site” action. Plugins run sequentially through the same background deployment lifecycle as a ZIP, and the final reply includes the site URL, a fresh magic login link, and any per-plugin failures. Plugin names are checked against wordpress.org first, so a typo gets the same correction prompt as a create-time preinstall.

Deploy a git branch

With no ZIP attached, mention @SandyWP deploy <branch> to deploy a branch from a site's connected git repository. All of these work:

  • @SandyWP deploy development
  • @SandyWP deploy branch development
  • @SandyWP deploy development branch

This requires a repository connected on the site's Git Deployment panel first — see the Git deployment guide to set one up. From there:

  • No site has a repo yet → the bot explains you need to connect a repository first.
  • Exactly one site has a repo → it deploys there immediately.
  • Several do → it shows a repo-only picker to choose which. There is no "Create new site" here, since a git deploy needs an existing repository.

The branch you name overrides the repository's configured branch for that run only the repo's saved branch is never changed. On success the bot replies with the branch, the deployed commit SHA and message, the site URL, and a magic login link; on failure it posts the tail of the deploy log.

Filler words like deploy this or deploy plugin are not treated as branch names, and an invalid ref is rejected with a hint. If a .zip is attached, the plugin deploy always wins over deploy <branch> text.

Site commands

Manage sites without a ZIP, straight from Slack:

CommandWhat it does
@SandyWP create new site, name: future-test, wordpress version 7.1 betaCreates a named site on the requested WordPress prerelease. Friendly shorthand such as 7.1 or 7.1 beta selects the release when exactly one version matches; if several match, the bot lists the exact choices.
@SandyWP install query-monitor, woocommerceInstalls and activates wordpress.org plugins on an existing ready site. Name it with on my-demo, or let the bot show your ready sites to choose from.
@SandyWP list my sitesLists your sites (also show my sites / just my sites).
@SandyWP delete my-demoDeletes a site by slug (also remove site my-demo). The bot asks you to confirm with a button first nothing is deleted until you click it.

Version options accept compact forms such as wp: 6.9, wordpress: 6.9, and wordpress version: 6.9, plus natural create-site wording such as wordpress version 7.1 beta. Unsupported versions are rejected instead of silently using a different release. The reply includes available versions, a valid command, and a link to the Slack feature guide. The option only applies when the command creates a new site; deploying to an existing site does not change that site's WordPress version.

Not sure what to type? Say @SandyWP help for the full command list. An unrecognized mention gives a short pointer to that help and this guide.

Troubleshooting

SymptomFix
The bot doesn't respond to a mention.It probably isn't in that channel. Run /invite @SandyWP in the channel and try again the bot only sees messages where it has been added.
"That request expired" when you click a picker button.Pickers expire after about 15 minutes. Re-send your mention (or ZIP) to get fresh buttons. Only the person who started the mention can click.
"Link your account first."You haven't linked yet, or your link was revoked. Mention @SandyWP login, open the link, and click Link my account.
Your login link says it's invalid or expired.Login links are single-use and last about 10 minutes. Run @SandyWP login again for a new one.
The plugin ZIP is rejected as too large.Plugin uploads are capped at 50 MB. For larger projects, deploy from a git repository instead.
deploy <branch> says to connect a repository first.No ready site has a connected repository. Set one up on the site's Git Deployment panel, then try again.
A deploy failed.The bot posts the tail of the deploy log in-thread. Fix the issue and re-run the command.

Privacy & data

SandyWP stores your workspace's bot token and your personal API token encrypted at rest, plus the Slack team and user IDs needed to route replies. Message text is processed to run your command and isn't retained beyond logs. Uninstalling the app or unlinking your account removes the stored token and mapping. See the Privacy Policy for the full details.

Next steps