01
Faster than a custom plugin.
A DSGo app is a static bundle and a manifest. No PHP boilerplate. No plugin scaffold. No update channel to write yourself.
DSGo Apps gives you a smaller unit than a full plugin: ship a single bundle to N clients with one CLI command, update them all the same way. Multi-site deploys and white-label are on the Studio plan.
The agency loop
It's the same init, login, deploy loop developers use, just repeated per client. Build the app once, then run designsetgo apps login --site and designsetgo apps deploy --site against each client's hostname. Each install reads that client's own WordPress data.
See the developer page for the full CLI walkthrough. The init, login, deploy loop →
Ship to many sites
No bespoke fleet manager. The CLI takes a single --site per call; agencies stitch that into whatever orchestration they already have, a shell loop, a CI matrix, an Ansible task.
# Build once. npm run build # Ship the same dist/ to every client. for site in client-1.com client-2.com client-3.com; do designsetgo apps deploy --site "$site" --no-build done
In CI, the same loop becomes a matrix step in GitHub Actions, with secrets per site. There is a starter deploy-action that wraps the CLI.
Why agencies adopt this
01
A DSGo app is a static bundle and a manifest. No PHP boilerplate. No plugin scaffold. No update channel to write yourself.
02
A bug in a snippet plugin breaks the site. A bug in a DSGo app breaks the app. The sandbox makes "ship to all clients on Friday" an okay idea.
03
"The booking suite" or "the client portal" is now a SKU. One bundle, N clients, monthly fee. You maintain it once, not N times.
White-label
The wp-admin DSGo Apps page, the install screen, the empty states, all of it can carry your agency name and logo instead of ours. Clients see your brand running their site tools, not a third-party plugin you resell.
01
Set plugin_name and logo_url in the white-label settings. Every admin surface picks them up: menu item, install screen, app cards.
02
Replace our docs and support links with yours. Clients ask you when something needs a question answered, not the open-source forum.
03
Ship a single zip that installs the plugin, applies your branding, and pre-installs your portal or booking pack. New client onboarding goes from a setup checklist to one upload.
White-label is included on the Studio plan. Pro can run multi-site CLI deploy but ships under the DesignSetGo Apps name. See pricing →
Private template registry
Host your own bundles at any HTTPS URL you control. Your team scaffolds new client projects from your library, not the public starter.
01
Run designsetgo apps registry add acme https://acme.example/registry.json --token xxx once. After that, every apps init can pull from your library by alias.
02
Pin a specific template version (--template booking-widget@1.4.0) or take the latest. SHA-256 integrity check on every download, so a tampered tarball refuses to install.
03
Once configured on a site, the in-admin Riff builder lists your private templates alongside the public ones, with a one-click "Copy CLI command" affordance for your devs.
designsetgo apps registry add acme https://acme.example/registry.json --token xxx designsetgo apps init clients/new-site --template booking-widget --registry acme
You bring the bytes (GitHub Pages, S3, your own WP site, internal CDN); DSGo provides the spec and the CLI plumbing. Available on the Studio plan. See pricing →
Trust model
Most agency apps are reviewed in-house. Inline mode is the right default: real WP pages, native SEO, root-mount-able. Iframe mode is the right call for client-supplied bundles you did not write yourself.
App renders as a real WordPress page. Crawlable, indexable, theme-wrappable, SEO-clean. CSP and HTML sanitization run on every request. The bundle is your own code, so the trust model is "trusted plugin you ship."
"isolation": "inline" Browser-enforced sandbox with an opaque origin. Use it when a client hands you an HTML bundle from their freelancer or a saved Claude artifact. The bridge still works; the page does not share origin with the rest of the site.
"isolation": "iframe" CLI reference
Including --site, --sites, --from-artifact, and the deploy-action for CI.
$ designsetgo apps init booking-pack --astro $ designsetgo apps login --site client-1.com $ designsetgo apps login --site client-2.com $ for s in client-1.com client-2.com; do > designsetgo apps deploy --site "$s" > done ✓ deployed to 2 sites └ same app id, atomic per site