After creating an application in Salesforce, when you want to deploy it from one Salesforce org to another, you first need to create and upload the application package.
Then, you can share the generated link with the different orgs where you want to deploy the package.
In this Salesforce tutorial, we will learn about unmanaged packages in Salesforce. In that, I will explain an unmanaged package and how to create and deploy unmanaged package in Salesforce.
What is An Unmanaged Package in Salesforce?
Unmanaged packages in Salesforce are simpler containers that are often used to bind and distribute open-source or internal projects such as custom apps, custom objects, fields, Apex classes, Visualforce pages, and more.
They are often used to share a solution or application that the receiver, a Salesforce org user, can customize.
Below are some properties of unmanaged packages in Salesforce.
- All components that we upload to an unmanaged package are editable after installation to another org. It allows organizations to customize them as per their requirements.
- Once installed, unmanaged packages in the other org cannot be upgraded. If new changes are needed, the updated package must be installed separately, and the user must make any necessary changes or adjustments.
- Components from unmanaged packages do not have a namespace prefix, which makes them appear as if they were natively created in the target org.
Create and Deploy an Unmanaged Package in Salesforce
In the steps below, I have explained how to create and deploy an unmanaged package in Salesforce. So that we can make a package, upload it, and install it on a different Salesforce org.
Let’s take an example: when we developed a Salesforce flow that automates the process of sending an email to managers and other CC recipients when a user or employee requests leave.
You might be thinking we can add hardcoded CC recipient email addresses to the email action in the flow.
The problem with that is that after deploying the flow to the other Salesforce org, if the end user wants to change the CC email addresses, it is very difficult if they don’t know how to use flows.
For that, I have developed a flow to Dynamically Add the CC recipient’s address list to the Salesforce Flow. In this article, I have explained how dynamic CC addresses are beneficial to the end user.
Create and Upload an Unmanaged Package in Salesforce
In the steps below, we will guide you through creating and uploading a flow to Salesforce for unmanaged packages.
- Click on the Setup. -> Home Page. -> In Quick Find Box, Search for Package. You will see Package Manager. -> Click on It.
- Here, I have created different packages. To create a new package, you can click the New button.

- In the Package Name, provide the name of your package. Select your preferred language. In Salesforce, we have Managed and Unmanaged Packages. Here, we are creating an unmanaged package, so we need to check the Manage option.
- The Description is optional; you can provide a short introduction about your package.
- Then click the Save button to create a package.

- You can see the unmanaged package has been successfully created. Now, we need two components that we want to deploy to different Salesforce org.
- In Salesforce packages, components include Custom Apps, Objects, Flows, Apex Classes, Triggers, VF Pages, and more. To include components in this package, click on the Add button.

- In Component Type, we can select different components from the Salesforce org. Here, I selected App, and then you will see all the custom apps that you created.
- When we add any app to the package, all associated tabs, fields, list views, record types, and so on are added to the package with the app component.
- We selected the Leave Approval custom app because it utilizes some custom objects associated with this object in the workflow. For that, we also need to install those objects in the other org.

- To add the flow to the component type, we need to select ‘Flow Definition’. After that, you will see all the flows that you created. Then, click the flow you want to add to the package, and click the “Add to Package” button.

- As you click the “Add to Package” button, you will see all the components that came with the selected app, along with the associated flows. To add more components, click the Add button. To check component dependencies, click the View Dependencies button.
- Suppose you added all the components that you want to send to other Salesforce orgs. Then click the Upload button.

- Provide the Version Name and version number for your unmanaged package. Here, you can provide anything. This is used to identify the package in a different organization.
- In unmanaged packages, there is no need to add a URL. In the Release Note, you can provide a URL so that when other org users click on it, they will see the release note of a particular package.
- Same for the Pre-Install Instructions. Additionally, if you select the URL option, you can provide instructions on how to install the package.

- The password is optional. If you don’t provide a password for this package, anyone can install it if they have a Salesforce account.
- If you provided a password for this package, then to install it in a different Salesforce org, the user needs to enter the password you provided to verify their identity.
- After that, you don’t need to do anything directly. Click the Upload button.

- As you click on ‘Upload’, you can see that the components are uploading, and we also display the Version Details that we provided.
- The Password Protected checkbox is unchecked because we didn’t provide a password to this package.

- After uploading is completed, you will see the Upload Complete alert. To deploy this unmanaged package to other Salesforce orgs, we need to copy the Installation URL and send it through Salesforce Chatter, social media, or messaging apps.

In this way, we can create and upload a flow or other Salesforce components to unmanaged packages.
Deploy or Install Unmanaged Package to Different Org in Salesforce
In the steps below, I explain how to deploy or install an unmanaged package in our Salesforce org to retrieve components from another Salesforce org.
- Before starting the package installation process, let me confirm that I don’t have a custom app named ‘Leave Approval’.
- The package we are going to install contains the Leave Approval app, some objects, and a flow.

- You need to copy the link that you get from other Salesforce org users. Then paste that link to the browser where you have logged in with your Salesforce credentials.

- After entering the link, you will be redirected to the Salesforce developer org login page, where you will need to log in to your Salesforce org again.
- As you click the Log In button, you will see the below UI.
- First, you need to select the component you are going to install from this unmanaged package. If they are already available in your organization, you can either restrict their installation or rename them in the package before installing them.
- Then, you need to select the usability of the component, which means determining who can use this component within your organization.
- Install for Admins Only: This package’s component can only be used by admins on your system.
- Install for All Users.
- Install for Specific Profiles: When you select this option, you must select the profiles for which you want to restrict access to components.
Now, you are ready to install this unmanaged package in your Salesforce org. For that, click the Install button. You can also check which components have been sent by the other org user by clicking on the View Component option.

- When the installation begins, you will see the UI below.

- Once the package is successfully installed, you will see the ‘Installation Completed‘ message. Then click the Done button.

- After installation, to see the installed packages in your Salesforce org, in the Quick Find Box, search for those Packages, then click the Installed Packages.
- Here, you can see the Email Flow Package Name that we provided while creating the package in a different org, and it has been successfully installed.

- Now, let’s check whether the components we receive in the unmanaged package are installed or not.
- Here, I’m again searching for the Leave Approval, and you can see the app has been successfully installed in our Salesforce org.

- Now, go to the flow, and you will see the Flow that we added in the package when creating it. It has also been deployed with Package State as Unmanaged.

In this way, we can install or deploy components such as custom apps, objects, Apex classes, triggers, etc., from another Salesforce org to our org using unmanaged packages in Salesforce.
Conclusion
I hope you have got an idea about unmanaged packages in Salesforce. In that, I have explained an unmanaged package and how to create and deploy an unmanaged package in Salesforce.
You may like to read:
- Create Downloadable Salesforce Packages with VS Code & CLI
- Automate Birthday or Anniversary Email Using Salesforce Flow
- Salesforce Managed and Unmanaged Packages
- Create and Export Unmanaged Package For Flows as Zip File in Salesforce
I am Bijay Kumar, the founder of SalesforceFAQs.com. Having over 10 years of experience working in salesforce technologies for clients across the world (Canada, Australia, United States, United Kingdom, New Zealand, etc.). I am a certified salesforce administrator and expert with experience in developing salesforce applications and projects. My goal is to make it easy for people to learn and use salesforce technologies by providing simple and easy-to-understand solutions. Check out the complete profile on About us.