---
editLink: false
lastUpdated: false
---

[@salesforce/b2c-tooling-sdk](../../../modules.md) / [operations/sites](../index.md) / addCartridge

# Function: addCartridge()

> **addCartridge**(`instance`, `siteId`, `options`, `updateOptions?`): `Promise`\<[`CartridgePathResult`](../interfaces/CartridgePathResult.md)\>

Defined in: [packages/b2c-tooling-sdk/src/operations/sites/cartridges.ts:129](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/operations/sites/cartridges.ts#L129)

Adds a cartridge to a site's cartridge path.

For regular sites, tries OCAPI `POST /sites/{site_id}/cartridges` first,
falling back to site archive import if OCAPI permissions are unavailable.
For Business Manager (Sites-Site), always uses site archive import.

## Parameters

### instance

[`B2CInstance`](../../../instance/classes/B2CInstance.md)

B2C instance

### siteId

`string`

Site ID

### options

[`AddCartridgeOptions`](../interfaces/AddCartridgeOptions.md)

Cartridge name, position, and optional target

### updateOptions?

[`CartridgeUpdateOptions`](../interfaces/CartridgeUpdateOptions.md)

## Returns

`Promise`\<[`CartridgePathResult`](../interfaces/CartridgePathResult.md)\>

Updated cartridge path

## Example

```typescript
// Add to beginning (default)
await addCartridge(instance, 'RefArch', { name: 'my_cartridge', position: 'first' });

// Add before a specific cartridge
await addCartridge(instance, 'RefArch', {
  name: 'my_cartridge', position: 'before', target: 'app_storefront_base'
});

// Business Manager
await addCartridge(instance, 'Sites-Site', { name: 'bm_ext', position: 'first' });
```
