📦 How to Create and Upload an Unmanaged Package in Salesforce
If you’re looking to share components like custom objects, Apex classes, Lightning components, or flows across Salesforce orgs, unmanaged packages offer a simple way to bundle and distribute your metadata.
Whether you’re building a demo, sharing a solution with a colleague, or deploying to a sandbox, unmanaged packages are a great place to start.
🔍 What is an Unmanaged Package?
An unmanaged package is a set of metadata components that you can create and share from one Salesforce org to another. Unlike managed packages, unmanaged ones are:
- Fully editable after installation
- Best for open-source or internal sharing
- Not upgradeable post-installation
🛠 Step-by-Step: Create & Upload an Unmanaged Package
✅ Step 1: Prepare Your Components
Make sure all the components (objects, fields, Apex classes, etc.) are saved and working in your org. You can include:
- Custom Objects
- Apex Classes & Triggers
- Lightning Components (Aura or LWC)
- Flows, Reports, Page Layouts, and more
✅ Step 2: Navigate to Package Manager
- Go to Setup
- Search for Packages in Quick Find
- Click Packages
- Click New
✅ Step 3: Create the Package
- Package Name: Give a meaningful name (e.g., “LeadAutoAssign”)
- Package Type: Choose Unmanaged
- Description (optional): Brief explanation of what this package does
- Click Save
✅ Step 4: Add Components to the Package
- After saving, click Add
- Search and select all components you want to include
- Click Add to Package
You can add multiple types of components—fields, classes, layouts, etc.
✅ Step 5: Upload the Package
- Click Upload
- Fill in version details (Version Name & Version Number)
- Select Release Status as Beta
- Agree to the terms and click Upload
⚠️ Note: Uploading might take a minute or two depending on size.
✅ Step 6: Share the Install Link
Once uploaded, Salesforce gives you an installation URL that you can share with others or use to install the package in another org.
Example:
https://login.salesforce.com/packaging/installPackage.apexp?p0=XXXXXXXXXX
Use the sandbox URL if installing in a sandbox:
https://test.salesforce.com/packaging/installPackage.apexp?p0=XXXXXXXXXX
🧠 Best Practices
- Use naming conventions for your components to avoid clashes.
- Test the package by installing it in a sandbox or dev org.
- Document what’s included in the package before sharing.
🚫 Limitations of Unmanaged Packages
- You cannot upgrade them after install.
- There’s no namespace protection.
- They are not suitable for commercial app distribution.
For ISV development or AppExchange, use managed packages.
✅ Conclusion
Unmanaged packages are ideal for quick sharing and internal deployment of Salesforce metadata. Whether you’re a developer testing components or a consultant deploying a demo, this method helps you move fast without extra overhead.
Have you tried creating one? Let me know your use case or drop a comment if you’d like help packaging something! 🚀