> For the complete documentation index, see [llms.txt](https://docs.navigaglobal.com/writer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.navigaglobal.com/writer/admin-guide/configurations-guide.md).

# Configurations Guide

## General JSON structure

Naviga Writer uses JSON to store configuration, and for this guide it is assumed that the reader has at least introductory knowledge of JSON.

**Suggested Reading:**

* [An Introduction to JSON](https://www.digitalocean.com/community/tutorials/an-introduction-to-json)

### First sections in the config file

```javascript
{
    "language": "en_EN",
    "labelLanguage": "en",
    "conceptServiceConfig": {
        //...
    },
    "contentHost": {
        //...
    },
    "plugins": [
        //...
    ]
}
```

#### "language"

The `"language"` and "`labellanguage"` sets the Writer language for the plugins, not the language to be used when you write the content.

See [Language Configuration](/writer/admin-guide/language-configuration.md) for more information.

#### "contentHost"

Configuration block for OpenContent search integration.

#### "conceptServiceConfig"

`"conceptServiceConfig"` is the service for the Concept plugin that sets the configuration for Open Content. The searches in Open Content are run through the `"PropertyMap"`-key sets the Writer property to map Open Contents properties.

{% hint style="info" %}
`conceptServiceConfig` is no longer mandatory since Writer version `6.2`
{% endhint %}

### Plugins section in the config file

The plugins section contains a list of all the plugins that are included in the Writer setup. To be able to find if a certain plugin/function is included in the configuration, a search in the browser is recommended.

#### Plugin Configuration Block

It's worth taking a closer look at the "plugins"-section and the plugin objects inside it, since this is where most changes will be made, and when browsing the [Writer Plugin List](https://plugins.writer.infomaker.io/) a plugin configuration block will always be listed for that specific plugin.

As seen in the example above, the `"plugins"`-property is a list which can contain many objects. These objects are each a configuration definition for a plugin.

```javascript
{
    "id": "io.infomaker.myplugin",
    "name": "im-myplugin",
    "url": "https://plugins.writer.infomaker.io/v1/infomaker/im-myplugin/1.0.0/index.js",
    "style": "https://plugins.writer.infomaker.io/v1/infomaker/im-myplugin/1.0.0/style.css",
    "enabled": true,
    "data": {
        "apiKey": "abcd1234"
    }
}
```

| Property    | Description                                                                                                                                                                                                                                                                                                                                  |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `"id"`      | This is the **unique** id given to a plugin which the plugin, depending on the plugin, uses to fetch its configuration defined in the `"data"`-property. Some plugins are able to appear multiple times in the plugins list, but they should always have a unique id. (This becomes more complex when overriding plugins by unit, see below) |
| `"name"`    | The name of the plugin, can be found in the plugin config block on the plugin's readme page                                                                                                                                                                                                                                                  |
| `"url"`     | Full path to the plugin's main javascript file, can be found in the plugin config block on the plugin's readme page                                                                                                                                                                                                                          |
| `"style"`   | Full path to the plugin's CSS stylesheet. This will in some cases not be defined, when the plugin does not define its own style. Can be found in the plugin config block on the plugin's readme page                                                                                                                                         |
| `"enabled"` | `true` or `false`, tells the Writer if the plugin should be loaded or not. Could be useful when needing to disable a plugin for a specific unit. More information on unit override further down.                                                                                                                                             |
| `"data"`    | The main configuration that the plugin has access to when running. What `"data"` contains is dependent on the plugin and more information about a plugin's configuration can be found on the plugin's readme page.                                                                                                                           |

{% hint style="info" %}
Be sure to read the plugin's readme page when changing configuration
{% endhint %}

### Importance of Plugin order

The plugins are listed after each other, in an unspecified order. It is important to notice that the config is read from top to bottom. As they are read from top to bottom the plugin that is read first will be the one that executes a task. If two plugins can do the same operation, the first will do the task. An example is the configuration of the Iframely plugin and the social embed plugin, where Iframely then will manage the Instagram etc, video etc, instead of the social media embed plugin if that is placed below.

```javascript
{
    "id": "se.infomaker.ximconcept.story",
    "name": "ximconcept",
    "url": "https://plugins.writer.infomaker.io/releases/7.8.5/im-ximconcept.js?concept=story",
    "style": "https://plugins.writer.infomaker.io/releases/7.8.5/im-ximconcept.css?concept=story",
    "enabled": true,
    "mandatory": false,
    "data": {
        "label": "Story",
        "name": "x-im/story",
        "enableHierarchy": true,
        "editable": true,
        "placeholderText": "Search stories"
    }
},
{
    "id": "se.infomaker.ximconcept.contentprofile",
    "name": "ximconcept",
    "url": "https://plugins.writer.infomaker.io/releases/7.8.5/im-ximconcept.js?concept=contentprofile",
    "style": "https://plugins.writer.infomaker.io/releases/7.8.5/im-ximconcept.css?concept=contentprofile",
    "enabled": true,
    "mandatory": false,
    "data": {
        "label": "Functiontags",
        "name": "x-im/content-profile",
        "enableHierarchy": true,
        "editable": true,
        "placeholderText": "Search functiontags"
    }
},
```

{% hint style="info" %}
This is a general configuration guide and each configuration must be tested in a test environment before it is implemented in any production environment.
{% endhint %}

### Configuration details

When you want to learn more about config, the [user guide](/writer/user-guide/user-guide.md) is a start. The functions are described for a normal set up of Writer. In most cases, the configuration documentation is found in the documentation of each plugin and the Writer User Guide provides you with links to each plugin documentation.

### Version dependencies

The Writer version has dependencies to the plugin versions (or vice versa). This dependency is stated in the so-called dependency-part of the plugin documentation of each plugin. This must be checked carefully 🌟.

{% hint style="info" %}
🌟 New configuration tool available: [Writer configuration tool](http://writer-config-tool.s3-website-eu-west-1.amazonaws.com/). Use it together with the Writer plugin documentation. This helpful tool is still under development and we gladly receive [feedback](mailto:writerteam@infomaker.se).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.navigaglobal.com/writer/admin-guide/configurations-guide.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
