Loading
Prepare for Email to Become the Default Login ExperienceRead More
Salesforce Enforces New Security Requirements in Summer 2026Read More
Enhance Salesforce with Code
Considerations for Custom Metadata Type Packages

Considerations for Custom Metadata Type Packages

Be aware of the behaviors for packages that contain custom metadata types.

Required Editions

Available in: Salesforce Classic and Lightning Experience

Protected custom metadata types in managed packages are available in: Developer Edition and scratch orgs

Package uploads and installs are available in Group, Enterprise, Performance, Unlimited, and Developer Editions

Create, edit, and delete custom metadata type records from installed packages Group and Professional Editions

Note
Note We recommend that you keep sensitive custom metadata types such as secrets, personally identifying information, or any private data in their own managed package and set their Visibility to package protected for security.

Types and Records

After you upload a Managed - Released package that contains a custom metadata type, you can’t change a public custom metadata record or type in the package to protected. But you can change protected records and types to public, or change package protected types to namespace protected.

Fields

After you upload a Managed - Released package that contains a custom metadata type, you can’t:

  • Add required fields to the custom metadata type.
  • Set non-required fields to required.
  • Delete custom fields that are in the uploaded version of the package. If you add a custom field after the upload, you can still delete it until you upload a new Managed - Released version.
  • Change the manageability of any custom field in the package.

Visibility

  • Custom metadata types with Visibility set to protected aren’t visible to flows in a subscriber org.
  • If you increase the visibility of a custom metadata type, you can’t later decrease the visibility. For example, if you change the visibility from Only Apex code in the same managed package can see the type to All Apex code and APIs can use the type, and it’s visible in Setup, you can’t change it later.
 
Loading
Salesforce Help | Article