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 and install thisCreates a brand-new site and deploys the plugin onto it.
@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.
@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.

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 siteCreates a fresh site (also make a site / spin up a sandbox). Add name: my-demo to choose the name. Replies with the URL and a magic login link once ready.
@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.

Not sure what to type? Mention the bot with anything it doesn't recognize and it replies with the full usage help.

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