Skip to content

Reusable model packages

Cmsify packages (.ctp files) are portable JSON bundles for sharing reusable content models. Publish a package file in a Git repository or release asset; an operator downloads it and imports it in Settings → Packages. Cmsify does not fetch remote repositories directly.

What a package can contain

A package can contain any combination of templates, components, and picklists. Cmsify exports required dependencies automatically:

  • templates bring referenced templates, components, and picklists;
  • components bring nested components and their picklists;
  • picklists can be exported independently.

CTP 1.1 adds components and componentRef fields. CTP 1.0 template/picklist packages remain import-compatible.

{
  "cmsifyPackage": "1.1",
  "namespace": "example.marketing",
  "id": "campaign-blocks",
  "version": "1.0.0",
  "name": "Campaign blocks",
  "templates": [],
  "picklists": [
    { "slug": "button-style", "name": "Button style", "options": [
      { "label": "Primary", "value": "primary", "order": 0 }
    ] }
  ],
  "components": [
    { "slug": "call-to-action", "name": "Call to action", "fields": [
      { "key": "heading", "label": "Heading", "order": 0, "isRequired": true, "minOccurrences": 1, "maxOccurrences": 1, "primitiveType": "Text" },
      { "key": "style", "label": "Style", "order": 1, "isRequired": false, "minOccurrences": 0, "maxOccurrences": 1, "primitiveType": "PickList", "fieldConfig": { "picklistRef": "button-style" } }
    ] }
  ]
}

References use package-local slugs (templateRef, componentRef, and picklistRef), never workspace IDs. Cmsify resolves them during import and rejects missing or circular component references.

Import conflicts and upgrades

Matching template slugs receive a new published template version. For matching picklists and components, review the import preview and choose one of:

  • Use existing — package references bind to the existing reusable model.
  • Replace — picklists receive a new immutable revision; components receive a new published schema version.
  • Import as new — Cmsify suffixes the slug and rewrites package-internal references to the copied model.

Imported templates, components, and picklists retain package namespace, ID, and version provenance. Existing published content snapshots never change when a package later updates a component or picklist.

Official packages

Cmsify bundles official packages with the API. They appear alongside uploaded packages in Settings → Packages and onboarding. The same format, preview, conflict handling, and upgrade rules apply to official and custom packages.

Foundation Pack

The official Foundation Pack supplies small, composable building blocks rather than whole content types: Call to Action, Notice, and Media with Caption components, plus the choice sets they need. Its yes-no choice set uses the stable values yes and no for integrations and string-backed fields. For ordinary true/false data, use Cmsify's native Boolean primitive instead.

Foundation Pack uses CTP 1.1, so it can include components and componentRef fields. The following starter packs use CTP 1.0 and contain templates and picklists:

Pack Package ID Included templates
Blog Starter Pack blog Author Bio, Blog Category, Blog Post
Docs Starter Pack docs Doc Section, Doc Page, Changelog
Portfolio Starter Pack portfolio Testimonial, Project, Case Study
Product Starter Pack product Review, Product Variant, Product