# Global Configuration

Global configuration allows you to set parameters once to be used multiple times. For example, if you have two [click listeners](https://docs.whisk.com/shopping-list-sdk/event-listeners#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.                                                                                    |
