# Global Configuration

Global configuration allows you to set parameters once to be used multiple times. For example, if you have two [click listeners](/master/shopping-list-sdk/basic-setup/event-listeners.md#click-listeners) on a page and you want both of them to work with the same recipe URL. Without using global configuration you code will look like this:

```javascript
whisk.queue.push(function() {
    whisk.listeners.addClickListener(
        'add-to-list',
        'shoppingList.addRecipeToList',
        {
            recipeUrl: 'https://whisk.com/demo/calzone-roasted-peppers'
        }
    );
    whisk.listeners.addClickListener(
        'add-to-basket',
        'shoppingList.addRecipeToBasket',
        {
            recipeUrl: 'https://whisk.com/demo/calzone-roasted-peppers'
        }
    );
});
```

We can simplify it by using global configuration:

```javascript
whisk.queue.push(function() {
    whisk.config.set('shoppingList', {
        recipeUrl: 'https://whisk.com/demo/calzone-roasted-peppers'
    });
    whisk.listeners.addClickListener('add-to-list', 'shoppingList.addRecipeToList');
    whisk.listeners.addClickListener('add-to-basket', 'shoppingList.addRecipeToBasket');
});      
```

Alternatively, you can use dots to set a single option:

```javascript
whisk.queue.push(function() {
  whisk.config.set('shoppingList.styles.size', 'large');
});
```

## Available Options

| ATTRIBUTE                   | TYPE            | DESCRIPTION                                                                                                        |
| --------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------ |
| global.language             | string          | Default language.                                                                                                  |
| global.country              | string          | Default country.                                                                                                   |
| global.whiteLabel           | string          | Default white label.                                                                                               |
| global.utm                  | utm             | Object with tracking params.                                                                                       |
| global.trackingId           | string          | Unique identifier for your business (optional). This is a premium feature for our partners. Contact us to get one. |
| shoppingList.recipeUrl      | string          | Default recipe url for all widgets and click listeners. Default value: The URL of your current page                |
| shoppingList.scale          | number          | All recipe ingredient quantities will be multiplied by this number                                                 |
| shoppingList.products       | array \[string] | Default product list for addProductsToList.                                                                        |
| shoppingList.whiteLabel     | string          | Default white label for widgets.                                                                                   |
| shoppingList.hidden         | string          | Default value for hidden option. Read more about hidden widgets.                                                   |
| shoppingList.onlineCheckout | onlineCheckout  | Object which configures shopping list app online checkout preferences.                                             |
| shoppingList.styles         | styles          | Object which changes shopping list app appearance.                                                                 |

### onlineCheckout object

| ATTRIBUTE        | TYPE          | DESCRIPTION                                                                                                                                                                                        |
| ---------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| enabled          | boolean       | Set it to false if you want to disable online checkout completely. Default value: true.                                                                                                            |
| allowedRetailers | array \[enum] | List of available retailers in the shopping list app. \[] - is equal to enabled: false. Default value: all available retailers.                                                                    |
| defaultRetailer  | enum          | Default retailer for the shopping list app. You can find list of available retailers here. Note: you can pass null to unset a default value for new users. Default value: is defined by Whisk API. |
| autoPick         | string        | Set it to true to go straight to checkout in addRecipeToBasket and addProductsToBasket methods                                                                                                     |

### styles object

| ATTRIBUTE | TYPE         | DESCRIPTION                                                                            |
| --------- | ------------ | -------------------------------------------------------------------------------------- |
| size      | enum         | Widget size. Possible values: compact, large. Default value: compact.                  |
| align     | enum         | Widget content alignment. Possible values: left, center, right. Default value: center. |
| button    | buttonStyles | Style options for widget buttons.                                                      |
| linkColor | string       | Link text colour.                                                                      |

### button styles object

| ATTRIBUTE    | TYPE   | DESCRIPTION                                 |
| ------------ | ------ | ------------------------------------------- |
| color        | string | Button background colour.                   |
| textColor    | string | Button text colour.                         |
| borderRadius | string | Button border radius.                       |
| text         | string | Button text. Only valid for 'compact' size. |

### utm object

| ATTRIBUTE | TYPE   | DESCRIPTION                                                                                                 |
| --------- | ------ | ----------------------------------------------------------------------------------------------------------- |
| campaign  | string | Identifies a specific product promotion or strategic campaign.                                              |
| source    | string | Identifies which site sent the traffic, and is a required parameter.                                        |
| medium    | string | Identifies what type of link was used, such as cost per click or email.                                     |
| content   | string | Identifies what specifically was clicked to bring the user to the site, such as a banner ad or a text link. |
| term      | string | Identifies search terms.                                                                                    |


---

# Agent Instructions: 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:

```
GET https://docs.whisk.com/master/shopping-list-sdk/basic-setup/global-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
