# Component Templates

Use a *Component Template* to create one or more components from a template.

*Templating* extends the [Smart Copy](https://boomi.markusschmidt.pro/boomi-console/commands/comp-components/smart-copy-explained) functionality by supporting placeholder variables in your components which will be replaced during Smart Copy

A *Component Template* is a set of components.&#x20;

A **Template Component** may contain placeholders, like `${ProcessName}` or `${API.Service}`.   &#x20;

<div align="left"><figure><img src="https://856602315-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJ5pAMZk3evA8VCVuQL%2Fuploads%2FQNLQcbPaVOTipdMpq3wj%2Fimage.png?alt=media&#x26;token=93951ba6-4b22-4e18-9dd3-3a3d1cb11037" alt="" width="305"><figcaption><p>A JSON Profile with placeholders</p></figcaption></figure></div>

Placeholders are replaced in the newly create component instance - after the original component was copied - by looking up a JSON file of any type. Applying the following JSON on the `j.${EndpointName}.REQ` will name the copied profile: `j.GetStaffCodeInfo.REQ`.

```json
{
    "EndpointNumber" : 141,
    "EndpointMethod" : "Post",
    "EndpointName"   : "GetStaffCodeInfo",
    "API" : {
        "EndpointMethod"    : "Get",
        "Service"           : "contact",
        "EndpointName"      : "get-staff-code-info-v1"
    }
}
```

In addition, references in component templates are *smart-replaced* to avoid copying shared components and to redirect dependencies to the newly created component set.

[component-template-example](https://boomi.markusschmidt.pro/boomi-console/command-collection/component-templates/component-template-example "mention")
