---
schema_version: "1"
id: 1e1cf58e471008dc6b95f82b74d9f9a129caf45271691d907c9098e9de4dcfb7
title: Edit template-info.json
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/analytics/bi_dev_guide_wave_templates/guides/concept/bi-templatesdev-edit-template-info-json.md
canonical_url: https://developer.salesforce.com/docs/analytics/bi-dev-guide-wave-templates/guide/bi-templatesdev-edit-template-info-json.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 03f2c7686fd1d48b9e253eca9227879a75ed73a6df8c431cb0764f68534c3aaf
products:
  - Analytics Templates Developer Guide
  - analytics
---

# Edit template-info.json

`template-info.json` describes the template. It references all the information required to create an app from the template.

`template-info.json` can also contain conditions. For example, a source app can have a dashboard with charts. You can include conditions in the `template-info.json` file to remove specific charts when the user creates the app. Conditions can include overrides that enable the addition or exclusion of assets and data from the app. The override is defined in `variables.json`. See [Complex `variables.json` Variable Types](https://developer.salesforce.com/docs/analytics/bi-dev-guide-wave-templates/reference/bi-templatesdev-complex-var-types-variables-json.md).

The `template-info.json` file has multiple parts.

## Template Metadata

Metadata information for the template includes the name, description, icons, tags, and custom attributes.

```nolang

{
  "label": "Analytics Training Materials",
  "name": "analyticsEducation",
  "description": "An example template to generate datasets, dashboards and lenses for the Analytics introduction course.",
  "assetVersion": 49,
  "templateType": "app",
  "icons": {
     "templateBadge" : {
         "name" : "learn"
     },
     "appBadge" : {
          "name" : "16.png"
     },
     "templatePreviews" : [
          {
             "name": "preview_education",
             "label": "Analytics Training",
             "description": "Learn about templates to generate Analytics assets."
          }
     ]
  },
  "tags": [
     "Learn",
     "Templates",
     "Apps"
  ],
  "customAttributes": [
     {
          "label" : "Features",
          "values" : [
              "Prebuilt Apps",
              "Mobile Ready"
           ]
     }
  ]
},

```

**label**

Contains the user’s name for the app. Analytics Studio displays this text in the app creation wizard, such as in the template picker and template details page.

![The Analytics Studio template picker showing display of text from icons, description, and label template-info.JSON file](https://developer.salesforce.com/media/bi_dev_guide_wave_templates/bi_templatesdev_templatepicker_example.png)

**name**

The unique developer ID for the template ID. Changing it generates a new template.

**description**

Specifies the description of the template. The template picker displays the contents of `description`, as shown in the previous image.

**assetVersion**

Specifies the version for the template assets. The version is set at the time of creation, generating a snapshot of the asset JSON files. The version doesn't update unless indicated when updating a template. For more information, see [Update an Existing Template](https://developer.salesforce.com/docs/analytics/bi-dev-guide-wave-templates/guide/bi-templatesdev-update-template.md).

**templateType**

Specifies the type of template:

- `app`: a standard app
- `embeddedapp`: an embedded app
- `data`: a collection of data assets
- `dashboard`: a single dashboard

**icons**

Contains three possible options.

**templateBadge**

Defines the small icon that appears in the app picker (shown in the previous image) and at the top of the template details window (shown in the next image). Don't use a file extension with the `name` attribute, for example `"learn"`, not `"learn.png"`.

**appBadge**

Defines the icon shown by Analytics Studio for the app after creation. Must be `"1.png"` through `"21.png"`. Use a file extension with the `name` attribute, for example `"16.png"`, not `"16"`.

**templatePreviews**

Defines preview images displayed on the template details window during the app creation process. Supports multiple images. Don't use a file extension with the `name` attribute, for example `"preview_education"`, not `"preview_education.png"`.

**tags**

Specifies tags that are used in template search and that appear on the template details page (shown in the next image).

**customAttributes**

Specifies information describing the template in the app creation wizard, such as Salesforce objects used or notable features (shown in the next image).

![The Analytics Studio template picker showing display of text from icons, description, and label template-info.JSON file](https://developer.salesforce.com/media/bi_dev_guide_wave_templates/bi_templatesdev_template_details.png)

## Template Version Information

The `templateVersion` is a string validated as “`#.#`”. The `notesFile`, when present, must be an HTML file. If `releaseInfo` is present, users can reconfigure or upgrade an app that’s been created from the template from Analytics Studio.

```nolang
"releaseInfo":{
    "templateVersion": "1.0",
    "notesFile": "releaseNotes.html"
},
```

**note:** After creating an app from a template for the first time, users can reconfigure the app based on the existing version of the template. When you update the number in `templateVersion`, CRM Analytics prompts users who created an app from the template to upgrade the app to the new version. For more information about reconfiguring and upgrading apps from templates, see [Reconfigure an Analytics App](https://help.salesforce.com/articleView?id=bi_app_upgrade.htm&type=5) and [Upgrade an Analytics App](https://help.salesforce.com/articleView?id=bi_app_upgrade.htm&type=5).

## Variables File

The file that contains all the variables used in the template is `variables.json`.

```nolang
"variableDefinition": "variables.json",
```

## Configuration Wizard File

The file that defines the wizard the user fills out, answering questions to set variables, is `ui.json`.

```nolang
"uiDefinition": "ui.json",
```

## Org Readiness File

The file that defines the validations to perform when the wizard loads is `org-readiness.json`. These validations verify that the org has the necessary data and setup to support creating an app from the template without failing.

```nolang
"readinessDefinition" : "org-readiness.json"
```

## Rules Files

The file or files defining any rules to be applied to the template assets is `rules.json`.

```nolang
"rules" : [ {
    "type" : "templateToApp",
    "file" : "template-to-app-rules.json"
  }, {
    "type" : "appToTemplate",
    "file" : "app-to-template-rules.json"
  }
],
```

The `templateToApp` rules file defines rules that run when a downstream app is created or updated from a template. These rules are the rules you’re most likely to edit.

The `appToTemplate` rules file defines rules that run when a template is created or updated from a source app. These rules are created by the framework code. You aren’t likely to edit them.

## Dashboards and Lenses

A dashboard or lens entry can contain a condition statement to determine whether the asset is added at app creation time based on a given variable. This condition statement can be an empty list (`"[]"`).

```nolang
"dashboards": [
  {
    "file": "dashboards/Elections_2012_Dashboard.json",
    "label": "elections_dashboard",
    "name": "Elections Dashboard",
    "condition" : "${Variables.StringValueInclude == 'Yes'}"
  }
],
"lenses":[
  {
    "file": "lenses/Election_Breakdown_By_State.json",
    "name": "Election Breakdown By State"
  }
],

```

## External Datasets

List of files that define external datasets (CSVs) to create. The list can include XMD. Each dataset entry can contain an entry for a conditional statement, allowing for decisions to be made by variables on whether a dataset asset is added at app creation time. This condition statement can be an empty list (`"[]"`).

```nolang
"externalFiles":[
  {
    "type" : "CSV",
    "name" : "State_Codes",
    "file" : "external_files/StateCode.csv",
    "schema" : "external_files/StateCode_schema.json"
  },
  {
    "type" : "CSV",
    "name" : "Election_2012",
    "file" : "external_files/Election_2012.csv",
    "schema" : "external_files/Election_2012_schema.json", (optional)
    "userXmd" : "external_files/Election_2012_XMD.json" (optional)
  }
],
```

## Datasets

The SFDC dataset builder creates these datasets. Label is optional.

```nolang
"datasetFiles": [
  {
    name": "Election_1980",
    "label": "Election 1980",
    "userXmd": "dataset_files/Election_1980_XMD.json"
  },
  {
    "name": "Election_2012",
    "label": "Election 2012"
  }
],

```

User XMD is NOT required. If it’s present, there's an XMD JSON file in the `dataset_files` directory. Otherwise, no XMD JSON file is present. If User XMD exists, it must be v2.0.

Each dataflow or recipe file must contain a reference to the corresponding dataset (Extract and Register steps). That enables the dataset to be recreated in the creation process of any downstream app.

Live datasets are supported with the `liveConnection` parameter. For more information, see [Use Live Datasets in a CRM Analytics Template](https://developer.salesforce.com/docs/analytics/bi-dev-guide-wave-templates/guide/bi-templatesdev-use-live-dataset.md).

## Dataflow Files

List of files that define dataflows. This reference can be an empty list (`"[]"`). If your app includes multiple dataflows, reference each dataflow file. When a user creates an app from the template, dataflows are created in the order they’re entered here.

```nolang
"eltDataflows" : [
  {
    "label" : "One DF",
    "name" : "One_DF",
    "file" : "dataflow/One_DF.json"
  },
  {
    "label" : "Two DF",
    "name" : "Two_DF",
    "file" : "dataflow/Two_DF.json"
  }
],
```

## Recipe Files

List of files that define recipes. This reference can be an empty list (`"[]"`). If your app includes multiple recipes, reference each recipe file. When a user creates an app from the template, recipes are created in the order they’re entered here. Edit the order as needed. If dataflows exist in the app, they execute before the recipes. For more information, see [Add a Recipe to a CRM Analytics Template](https://developer.salesforce.com/docs/analytics/bi-dev-guide-wave-templates/guide/bi-templatesdev-add-recipe.md). You can also specify whether a recipe should sync and execute during app creation with the `executeCondition` attribute. For more information, see [Configure Recipe Execution](https://developer.salesforce.com/docs/analytics/bi-dev-guide-wave-templates/guide/bi-templatesdev-execute-recipe.md).

```nolang
"recipes" : [
  {
    "label" : "Filter States Recipe",
    "name" : "Filter_States_Recipes",
    "file" : "recipes/filterRecipe.json"
  },
  {
    "label" : "Append Cities Recipe",
    "name" : "Append_Cities_Recipe",
    "file" : "recipes/appendRecipe.json",
    "executeCondition" : "CreateOnly"
  }
],
```

## Dashboard Components

List of files that define components in dashboards. This reference can be an empty list (`"[]"`). Each dashboard component in the app’s dashboards gets a unique entry in this list. Each component entry can contain an entry for a conditional statement, allowing for decisions to be made by variables on whether a component asset is added at app creation time. This condition statement can be an empty list (`"[]"`).

```nolang
"components" : [
  {
    "label" : "ImageComponent",
    "name" : "ImageComponent_tp",
    "file" : "components/ImageComponent.json"
  }
],
```

## Template Dependencies

For templates with dependencies, add a line to `template-info.json` that refers to templates to include in the dependency. See [Create Dependent Templates](https://developer.salesforce.com/docs/analytics/bi-dev-guide-wave-templates/guide/bi-templatesdev-create-dependency.md).

## Images

These images are associated with the app and used in dashboard files. Each image can contain an entry for a condition statement. Specifying a condition enables decisions to be made with variables on whether an image is added at app creation time. Images must be stored as static resources. References to each image must specify a `namespace` attribute if the org uses namespace.

```nolang
"imageFiles" : [
  {
    "name" : "image1",
    "condition" : "${Variables.ShowImage1}",
    "file" : "images/image1.png"
    "namespace" : "${Org.Namespace}"
  },
  {
    "name" : "image2",
    "file" : "images/image2.png"
    "namespace" : "${Org.Namespace}"
  }
],
```

## Folder File

The file that contains the folder information including `featuredAssets` and `shares` is `folder.json`.

```nolang
"folderDefinition": "folder.json",
```

## Auto-Install File

The file that contains the auto-install hook configuration and the installed app configuration is `auto-install.json`. This file must exist if your template is installed with a managed package and the app is created with an auto-install request.

```nolang
"autoInstallDefinition": "auto-install.json",
```

## Smart Wizard Apex Callback

You can also call a smart wizard from `template-info.json` to perform computations or detection on the user's data. The call to the smart wizard must be backed up with an Apex callback class. The Apex callback class can run the smart wizard before or after the configuration wizard runs and when the creation of the app is kicked off. You call the Apex class from `template-info.json` with something like this:

```nolang
"apexCallback": {
  "namespace": "${Org.Namespace}",
  "name": "GenericConfigurationModifier"
},
```

For more about the smart wizard, refer to the Best Practices section.

**See Also**

- [template-info.json Attributes](https://developer.salesforce.com/docs/analytics/bi-dev-guide-wave-templates/reference/bi-templatesdev-template-info-json-attributes.md)
