> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ollie.shop/llms.txt
> Use this file to discover all available pages before exploring further.

# Easy Cart

> A floating dev tool for managing carts during development and QA

## Overview

**Easy Cart** is a built-in developer tool that provides a floating menu in the checkout UI for quickly creating and manipulating carts. It's intended for development, QA, and internal testing — not for end users.

***

## How to enable

Add `?easycart=on` to any checkout URL:

```
/new?easycart=on
/cart?easycart=on
/details?step=shipping&easycart=on
```

Once enabled, a cookie (`ollie_shop_ec`) is set for 1 year so you don't need the query parameter on subsequent visits. A floating **EC** button will appear in the bottom-right corner of the page.

<Note>
  Easy Cart only appears on stores using the **default** template — the `grocery` and `sales` templates do not mount it.
</Note>

### Accepted values

The parameter name is matched **case-insensitively**, so `?easycart=on`, `?easyCart=on` and `?EASYCART=on` are equivalent. The value is also case-insensitive:

| To do this | Use any of |
| - | - |
| Enable | `on`, `true`, `1`, `yes` |
| Disable | `off`, `false`, `0`, `no` |

Anything else (a typo like `?easycart=onn`) is ignored and leaves the current state alone, so it won't switch off a tool you had already enabled. A bare `?easycart` with no value does **not** enable it.

## How to disable

Either add `?easycart=off` to the URL, or open the Easy Cart menu and click **Disable EasyCart**. Both clear the `ollie_shop_ec` cookie.

***

## Actions

| Action | What it does |
| - | - |
| **New Cart** | Creates a fresh checkout session and adds a random product to it. |
| **Add Random Item** | Fetches the store's product catalog and adds a random item to the current cart. The arrow at the end of the row opens [advanced settings](#random-item-advanced-settings) instead of adding anything. |
| **Add by SKU IDs** | Opens a form to add specific items by SKU ID, with optional quantity and seller ID. Blank quantity defaults to 1, blank seller to `1`. |
| **Load Session** | Restores a previous cart by entering its Session ID. |
| **Empty Cart** | Removes all items from the current cart. |

***

## Random item advanced settings

Clicking the **Add Random Item** row still adds one random item straight away. The **arrow at the end of that row** opens a small form instead, where every field is optional:

| Field | Blank means | What it does |
| - | - | - |
| **How many products** | 1 | Adds this many items. Distinct SKUs are used first; once the matches run out, the quantity of an already-picked SKU goes up instead of the same line being sent twice. |
| **Seller ID** | any seller | Keeps only SKUs offered by that seller, and adds them under it. |
| **Category** | whole catalog | A category ID path (`16`, `16/22`) becomes a VTEX `fq=C:/16/22/` filter; anything else is searched as free text (`ft=`). |

Leaving all three blank behaves exactly like clicking the row.

The search that feeds this widens with the quantity — asking for 20 items fetches 20 products rather than the default 5 — and stops at VTEX's limit of 50. If nothing matches the filters, an error message is shown and the cart is left alone.

<Note>
  The seller filter runs on the search results, so a seller with no items in the searched category simply matches nothing. Narrow by one filter at a time when a combination comes back empty.
</Note>

***

## Switching sales channel

Easy Cart deliberately has no sales-channel action. On VTEX a cart inherits its sales channel **when it is created** and an existing cart cannot be moved to another one — there is no endpoint, attachment, or parameter for it. Verified against a live store: `?sc=` on cart creation scopes only that one response (re-read without `sc` and the cart reports the default channel, and a channel-specific SKU is rejected with `ORD027`); setting `public.sc` on the session updates `store.channel` but leaves the next cart on the default channel; and a `vtex_segment` cookie carrying `channel` has no effect either, while `POST /api/segments` returns `405`.

What does work is the storefront route on the **store's own domain**, which creates a cart genuinely bound to the channel:

```
https://{account}.vtexcommercestable.com.br/checkout/cart/add?sku={sku}&qty=1&seller={seller}&sc={channel}
```

The SKU must exist in the target channel. Because it sets its cookies on the store domain, this works end to end when checkout runs on that domain too.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.