Salesforce Dictionary - Free Salesforce GlossarySalesforce Dictionary
Full Unmanaged Package entry
How-to guide

Creating and sharing an Unmanaged Package

Creating an unmanaged package is a Setup-driven workflow. Pick the components, declare them as a package, upload, and share the install URL. No CLI, no security review, no marketplace listing.

By Dipojjal Chakrabarti · Founder & Editor, Salesforce DictionaryLast updated May 16, 2026

Creating an unmanaged package is a Setup-driven workflow. Pick the components, declare them as a package, upload, and share the install URL. No CLI, no security review, no marketplace listing.

  1. Open Packages in Setup

    Setup, Packages, search for Package Manager. If your org is on a recent edition, this is in the Apps section of Setup. The Packages page lists the unmanaged and managed packages your org has authored.

  2. Click New and pick Unmanaged

    Click New. Give the package a name (visible to subscribers), a description, and a language. Leave Managed unchecked. The choice between unmanaged and managed is permanent for the package.

  3. Add components to the package

    Click Add Components, then select the metadata: custom objects, Apex classes, Flow definitions, Visualforce pages, custom fields. The Add Components UI lists every metadata type. Pick deliberately. Each added component pulls in its dependencies.

  4. Validate dependencies and security

    Click Save. The platform validates that all referenced components are included. Missing dependencies (a Flow that references a field not in the package) cause validation errors. Fix and re-save.

  5. Upload and generate the install URL

    From the package detail page, click Upload. Give the version a name (1.0, 1.1, 2.0) and a description. The platform generates an install URL. The URL is permanent until you delete the package version.

  6. Share the URL and walk the subscriber through install

    Send the install URL to the subscriber. They click through the standard package install flow: pick org, accept terms, select profile mode (Admins Only, All Users, Specific Profiles), and install.

Key options
Package nameremember

Subscriber-visible name. Permanent once components have been added. Pick deliberately, especially if you plan to distribute beyond a small audience.

Componentsremember

The metadata included in the package. Custom objects, Apex, Flow, Visualforce, custom fields, validation rules, page layouts, permission sets are all packageable.

Version name and numberremember

Free-text version name and the platform-tracked version number. Versions accumulate; each upload creates a new install URL.

Install profile moderemember

Set by the subscriber at install time: Admins Only, All Users, Specific Profiles. Same as managed packages.

License Managerremember

Unmanaged packages do not support License Manager. No per-user licensing, no seat counts, no usage tracking. Use managed packages for licensed distribution.

Gotchas
  • Unmanaged packages do not have namespaces. Component names collide with components of the same name from other unmanaged packages. Only use for single-source internal distribution.
  • There is no upgrade path. Shipping a v2 means asking the subscriber to uninstall v1 (losing data) and install v2 fresh. Plan around one-shot installs only.
  • Apex code is fully readable and editable by subscribers. Do not ship proprietary algorithms in unmanaged packages. Use managed packages with private/public visibility for that.
  • Unlocked packages from Salesforce DX are the modern alternative for internal distribution. For new use cases, evaluate unlocked packages before defaulting to unmanaged.
  • Some components cannot be added to unmanaged packages (certain platform features, deeply org-coupled metadata). The validation step on save catches most of these. Plan a workaround in advance.

See the full Unmanaged Package entry

Unmanaged Package includes the definition, worked example, deep dive, related terms, and a quiz.