Skip to content

How It Works ​

Private Packages acts as a private Composer repository for your premium WordPress plugins and themes. It handles the authentication, updates, and distribution of packages that aren't available on public repositories.

Architecture Overview ​

1. Package Recipes ​

At the core of Private Packages are recipes - specialized integrations for different plugin vendors and update systems. Each recipe knows how to:

  • Authenticate with the vendor's API
  • Validate license keys
  • Check for new versions
  • Download plugin/theme files

2. Standardized Update Systems ​

Many premium plugins use standardized update systems like Easy Digital Downloads (EDD). Private Packages has reverse-engineered these common systems, which means:

  • Plugins using EDD should work automatically with minimal configuration
  • The same applies to other standardized systems like WooCommerce updaters
  • You only need to provide your license key and basic settings

3. Custom Vendor Integrations ​

For vendors with proprietary update systems, Private Packages includes custom recipes that handle their specific requirements. Examples include:

  • Advanced Custom Fields (ACF)
  • Gravity Forms
  • Elementor Pro
  • WPML
  • ...

Update Cycle ​

Private Packages follows a predictable update cycle:

  1. Every 6 Hours: Checks all packages for new releases
  2. Daily: Validates all license keys to ensure they're still active
  3. On Demand: You can manually trigger update checks from the package edit page

License Management ​

Automatic Validation ​

The app automatically checks license validity daily and updates the package status accordingly. If a license becomes invalid:

  • The package will be marked as invalid
  • You can resolve the issue from the package edit page

License Activation ​

For supported recipes, you can:

  • Check license status manually
  • Activate licenses directly with the plugin vendor
  • View activation details and error messages

Composer Integration ​

Private Packages serves as a Composer repository that requires authentication:

Authentication Tokens ​

  • Generated per-project for security
  • Used for Composer basic authentication
  • Scoped to specific workspaces

composer.json Configuration ​

Add Private Packages as a repository in your composer.json:

json
{
    "repositories": [
        {
            "type": "composer",
            "url": "https://{{workspace-slug}}.private-packages.com"
        }
    ]
}

Note: Replace {{workspace-slug}} with your workspace slug.

Then authenticate using your token (see Tokens for details).

Multi-Tenancy ​

Private Packages supports multiple workspaces within a single account:

  • Use Case: Freelance developers working with multiple agencies
  • Isolation: Each workspace has its own packages and tokens
  • Billing: Workspaces are billed separately
  • Management: Easy switching between workspaces

Security ​

Two-Factor Authentication ​

Supply Chain Security

We have chosen to make 2FA mandatory. 2FA is critical to prevent unauthorized access. If someone would gain access to your account, they could create malicious releases, effectively launching a supply chain attack that compromises all projects using your packages.

Users are required to enable 2FA for enhanced account security, protecting:

  • Login access
  • Sensitive license information
  • Workspace management
  • Package integrity

What's Next? ​