First, you create a custom metadata type, which defines the form of the application metadata. Then you build reusable functionality that determines the behavior based on metadata of that type. You can use Setup to create, update, and delete custom metadata types and records declaratively.