Start now with wp-content.io and get the same smooth experience as the official WordPress repository, but for your private plugins and themes.
No manual uploads, no repetitive code. Just a clean way to register external sources, deliver updates, and manage custom extensions and themes at scale.This guide will walk you through everything you need to get started, whether you’re building for a single site or maintaining dozens.
Learn more
Get an overview of the service.
See pricing
Check available plans.
WPC CLI
Use the command-line tool.
API Documentation
Explore the API reference.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"wp-content.io","colors":{"primary":"#4433db","light":"#c4c0ff","dark":"#4433db"},"logo":{"light":"https://mintcdn.com/wp-contentio/yBfxUAV1M05eet5h/logo/light.svg?fit=max\u0026auto=format\u0026n=yBfxUAV1M05eet5h\u0026q=85\u0026s=57bd5641b7fbfc2962601a95d4a9e058","dark":"https://mintcdn.com/wp-contentio/yBfxUAV1M05eet5h/logo/dark.svg?fit=max\u0026auto=format\u0026n=yBfxUAV1M05eet5h\u0026q=85\u0026s=4d9ce153979588ac251ba55da2aebf31"},"favicon":"https://mintcdn.com/wp-contentio/yBfxUAV1M05eet5h/favicon.svg?fit=max\u0026auto=format\u0026n=yBfxUAV1M05eet5h\u0026q=85\u0026s=a655ce8643bf8718e18a2e0252d757ef","navbar":{"links":[{"href":"https://wp-content.canny.io/feature-requests","label":"Feedback"},{"href":"mailto:support@wp-content.io","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.wp-content.io"}},"footer":{"socials":{"x":"https://x.com/wpc_io","bluesky":"https://bsky.app/profile/wp-content.io","linkedin":"https://www.linkedin.com/showcase/wp-content-io"}},"integrations":{"posthog":{"apiKey":"phc_BWl9lEP8jeMP9HuMbP3L2yIiFSphTpqNIZLTWZgfPzQ","apiHost":"https://eu.i.posthog.com","sessionRecording":true}},"styling":{"latex":false},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"wp-contentio","hasAudioNarration":false,"actualSubdomain":"wp-contentio","customDomains":["docs.wp-content.io"],"gitSource":{"type":"gitlab","owner":"mkey-dev/wp/wp-content.io","repo":"wp-content-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"projectId":84559237,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6abfcee966c8be5df5441e14","collectionId":"d652b803-e3a9-4f01-a621-50405c7f93d9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6abfcee966c8be5df5441e14"},"entitlements":{},"buildId":"6abfcee966c8be5df5441e14","clientVersion":"0.0.3869","searchFilterCounts":[{"language":"default","tag":"API Reference","count":21},{"language":"default","tag":"Endpoints","count":20},{"language":"default","tag":"WPC CLI","count":15},{"language":"default","tag":"Guides","count":9},{"language":"default","tag":"Get Started","count":6},{"language":"default","tag":"Manage plugins","count":5},{"language":"default","tag":"Manage themes","count":5},{"language":"default","tag":"Plugins","count":5},{"language":"default","tag":"Themes","count":5},{"language":"default","tag":"Account management","count":4}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img.bordered{border:3px solid #150d57}img.bordered.gray{border-color:#edecee}img.bordered.wp{border-color:#1e2327}img.bordered,img.rounded{border-radius:8px}"}],"page":{"pagePath":"index","slug":"/","pageMetadata":{"title":"Introduction","description":"Welcome to the official documentation","href":"/index"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Welcome to the official documentation\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,..._provideComponents(),...props.components},{Card,CardGroup}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Start now with `,_jsx(_components.a,{href:`https://wp-content.io/`,children:`wp-content.io`}),` and get the same smooth experience as the official WordPress repository, but for your private plugins and themes.\nNo manual uploads, no repetitive code. Just a clean way to register external sources, deliver updates, and manage custom extensions and themes at scale.`]}),`\n`,_jsx(_components.p,{children:`This guide will walk you through everything you need to get started, whether you’re building for a single site or maintaining dozens.`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Learn more`,icon:`globe`,href:`https://wp-content.io`,children:_jsx(_components.p,{children:`Get an overview of the service.`})}),_jsx(Card,{title:`See pricing`,icon:`tag`,href:`https://wp-content.io/pricing`,children:_jsx(_components.p,{children:`Check available plans.`})}),_jsx(Card,{title:`WPC CLI`,icon:`square-terminal`,href:`/cli/install`,children:_jsx(_components.p,{children:`Use the command-line tool.`})}),_jsx(Card,{title:`API Documentation`,icon:`webhook`,href:`/api-reference/introduction`,children:_jsx(_components.p,{children:`Explore the API reference.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Introduction","description":"Welcome to the official documentation","href":"/index"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"wp-contentio","siteName":"wp-content.io","title":"Introduction - wp-content.io","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-02T04:33:48.420Z","originalFileLocation":"index.mdx"},"headHtml":"\u003cmeta data-mint-head name=\"description\" content=\"Welcome to the official documentation\">\u003cmeta data-mint-head name=\"application-name\" content=\"wp-content.io\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Introduction - wp-content.io\">\u003cmeta data-mint-head property=\"og:description\" content=\"Welcome to the official documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"wp-content.io\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.wp-content.io\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Introduction - wp-content.io\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Welcome to the official documentation\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/wp-contentio/nBJn2dysaHB02oG2/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"wp-content.io\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4433db\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.wp-content.io\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/index.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.wp-content.io/#organization\",\"name\":\"wp-content.io\",\"url\":\"https://docs.wp-content.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/wp-contentio/yBfxUAV1M05eet5h/logo/light.svg?fit=max\u0026auto=format\u0026n=yBfxUAV1M05eet5h\u0026q=85\u0026s=57bd5641b7fbfc2962601a95d4a9e058\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.wp-content.io#website\",\"name\":\"wp-content.io\",\"url\":\"https://docs.wp-content.io\",\"publisher\":{\"@id\":\"https://docs.wp-content.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.wp-content.io/#webpage\",\"url\":\"https://docs.wp-content.io/\",\"name\":\"Introduction\",\"description\":\"Welcome to the official documentation\",\"dateModified\":\"2026-10-02T04:33:48.420Z\",\"isPartOf\":{\"@id\":\"https://docs.wp-content.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.wp-content.io/#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.wp-content.io/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Get Started\",\"item\":\"https://docs.wp-content.io/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction\",\"item\":\"https://docs.wp-content.io/\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.wp-content.io/#article\",\"headline\":\"Introduction\",\"name\":\"Introduction\",\"description\":\"Welcome to the official documentation\",\"url\":\"https://docs.wp-content.io/\",\"mainEntityOfPage\":{\"@id\":\"https://docs.wp-content.io/#webpage\"},\"dateModified\":\"2026-10-02T04:33:48.420Z\",\"publisher\":{\"@id\":\"https://docs.wp-content.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.wp-content.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"wp-content.io\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"wp-content.io","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Guides","groups":[{"group":"Get Started","pages":[{"title":"Introduction","description":"Welcome to the official documentation","href":""},{"title":"Quickstart","description":"This quickstart guide will help you deploy your plugin or theme in just a few minutes.","href":"/quickstart"}]},{"group":"Developer guides","pages":[{"title":"Plugin Setup Guide","description":"How to prepare your plugin for private updates","href":"/guides/plugins"},{"title":"Theme Setup Guide","description":"How to prepare your theme for private updates","href":"/guides/themes"},{"title":"External Repositories","description":"Manage external sources for your plugins and themes, and bring private updates directly into the WordPress admin.","href":"/guides/external-repositories"}]},{"group":"Account management","pages":[{"title":"Organizations","description":null,"href":"/account/organizations"},{"title":"Manage API Keys","description":null,"href":"/account/api-keys"},{"title":"Users and permissions","description":null,"href":"/account/users"},{"title":"Allowed Domains","description":null,"href":"/account/allowed-domains"}]}]},{"tab":"WPC CLI","icon":"square-terminal","pages":[{"title":"WPC CLI","href":"/cli/install"}]},{"tab":"API Reference","icon":"webhook","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"title":"Introduction - wp-content.io","buildId":"dpl_DMQXxPZd444kjahHSuSB7FkJbKrX","deploymentId":"dpl_DMQXxPZd444kjahHSuSB7FkJbKrX","dynamics":[],"chunks":[]}