# Why Fragments?

There are many situations where fragments of content need to be displayed in multiple pages, but they are ad-hoc content parts or data that may not be part of your entry types.

For example, your Services pages may need a call-to-action button or lead form specific to the service. While you may model a custom field in the Services entry type to allow content editors to indicate the call-to-action to display, this piece of information becomes coupled to the entry type. If these buttons and lead forms also need to appear on other pages, each of the other entry types also need to have this field added to them.

Without Fragments, you may use features in Craft CMS to cobble together a solution around this, but they bring along some challenges:

  • Sections and entry types
    Entry types are good for mapping domain models to content models, but for content parts that have no direct relations to these domain models, it may become awkward to represent them as part of the content models, or an overkill to create whole sections just to represent them.

  • Globals
    Globals are usually used for content that do not belong as entries or are needed across different pages. However, in multi-site setups, using globals becomes difficult for managing different content on different sites, since all global sets are visible in the control panel for all the sites. This can create confusion for your content editors.

  • Content Blocks/Content Builder (Matrix/Neo)
    Content block builder fields can become cluttered with too many block types. Fragments can be used as a subsystem with its own types and zones (think of them as groups or collections) that makes your content block builder fields more scalable.

With Fragments, your content editors can create call-to-action fragments that can be included in template zones outside of the entry types.