---
schema_version: "1"
id: 9745fe82e3bbf697720ba2a69596400f1e27573d4181a5e3566459abb36d67ad
title: Create a Beta Package for First-Generation Managed Packages
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/platform-pkg-exchange/managed_packaging/guides/first-generation/packaging-upload-beta.md
canonical_url: https://developer.salesforce.com/docs/platform/pkg1-dev/guide/packaging-upload-beta.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 45b7bc27eb634be21ecd5b2633ef4b1ec0a9a6757af15a5d0e9c5908c51ed498
products:
  - First-Generation Managed Packaging Developer Guide
  - merged-docs
---

# Create a Beta Package for First-Generation Managed Packages

Follow this procedure to create and upload a beta package through the UI. (You can also upload a package using the Tooling API. For sample code and more details, see the PackageUploadRequest object in the _Tooling API Developer Guide_.)

| User Permissions Needed |                             |
| ----------------------- | --------------------------- |
| To create packages:     | Create AppExchange Packages |
| To upload packages:     | Upload AppExchange Packages |

**note:** Building a new app? Have you considered using second-generation managed packages? Flexible versioning and the ability to share a namespace across packages are just two reasons why developers love creating second-generation managed packages. We think you’d love it, too. To learn more, see: [Why Switch to Second-Generation Managed Packages](https://developer.salesforce.com/docs/atlas.en-us.pkg2_dev.meta/pkg2_dev/why_switch_2GP.htm), and [Comparison of First- and Second-Generation Managed Packages](https://developer.salesforce.com/docs/atlas.en-us.pkg2_dev.meta/pkg2_dev/sfdx_dev_dev2gp_comparison.htm).

1.  Create a package:

    1.  From Setup, enter `Package Manager` in the Quick Find box, then select **Package Manager**.
    2.  Click **New**.
    3.  Enter a name for your package. You can use a different name than what appears on AgentExchange.
    4.  From the dropdown menu, select the default language of all component labels in the package.
    5.  Optionally, choose a custom link from the Configure Custom Link field to display configuration information to installers of your app. You can select a predefined custom link to a URL or s-control that you’ve created for your home page layouts; see the [Configure Option](https://developer.salesforce.com/docs/platform/pkg1-dev/guide/develop-documentation.md). The custom link displays as a **Configure** link within Salesforce on AgentExchange Downloads page and app detail page of the installer's organization.
    6.  Optionally, in the Notify on Apex Error field, enter the username of the person to notify if an uncaught exception occurs in the Apex code. If you don’t specify a username, all uncaught exceptions generate an email notification that is sent to Salesforce. This option is only available for managed packages.

        **note:** Apex can only be packaged from Developer, Enterprise, Unlimited, and Performance Edition organizations.

    7.  Optionally, in the Notify on Packaging Error field, enter the email address of the person who receives an email notification if an error occurs when a subscriber’s attempt to install, upgrade, or uninstall a packaged app fails. This field appears only if packaging error notifications are enabled. To enable notifications, contact your Salesforce representative.
    8.  Optionally, enter a description that describes the package. You can change this description before you upload it to AgentExchange.
    9.  Optionally, specify a post install script. You can run an Apex script in the subscriber organization after the package is installed or upgraded. For more information, see [Running Apex on Package Install or Upgrade](https://developer.salesforce.com/docs/platform/pkg1-dev/guide/apex-post-install-script.md).
    10. Optionally, specify an uninstall script. You can run an Apex script in the subscriber organization after the package is uninstalled. For more information, see [Running Apex on Package Uninstall](https://developer.salesforce.com/docs/platform/pkg1-dev/guide/apex-uninstall-script.md).
    11. Click **Save**.

2.  Optionally, change the API access privileges. By default, API access is set to Unrestricted, but you can change this setting to further restrict API access of the components in the package.
3.  Add the necessary components for your app.


    1.  Click **Add Components**.
    2.  From the dropdown list, choose the type of component.
    3.  Select the components you want to add.
    4.  Click **Add To Package**.
    5.  Repeat these steps until you added all the components you want in your package.
    **note:** Some related components are automatically included in the package even though they don’t display in the Package Components list. For example, when you add a custom object to a package, its custom fields, page layouts, and relationships with standard objects are automatically included. For a complete list of components, see [Components Automatically Added to First-Generation Managed Packages](https://developer.salesforce.com/docs/platform/pkg1-dev/guide/packaging-components-auto-added.md).

4.  Optionally, click **View Dependencies** and review a list of components that rely on other components, permissions, or preferences within the package. To return to the Package detail page, click **Done**.
5.  Click **Upload**.
6.  On the Upload Package page, do the following:

    1.  Enter a Version Name, such as Spring ’22. The version name is the marketing name for a specific release of a package and allows you to create a more descriptive title for the version than just a number.
    2.  Enter a Version Number, such as 1.0. For more information on versions, see [Update Your First-Generation Managed Package](https://developer.salesforce.com/docs/platform/pkg1-dev/guide/packaging-upgrading.md).
    3.  Select a Release Type of Managed - Beta.
    4.  (Optional) Enter and confirm a password to share the package privately with anyone who has the password. Don't enter a password if you want to make the package available to anyone on AgentExchange and share your package publicly.
    5.  Salesforce automatically selects the requirements it finds. In addition, select any other required components from the Package Requirements and Object Requirements sections to notify installers of any requirements for this package.
    6.  Click **Upload**.

After your package has uploaded successfully, you receive an email with an installation link.
