# Cart and checkout in chat

> Let visitors add products to a cart in the chat and check out on your Shopify or WooCommerce store, or send the order by message to pay on delivery: setup, what visitors see, discount codes, order requests, notifications and limits.

With **Cart and checkout** on, your agent can put products in a cart while it chats. The cart appears under the agent's reply with its items, prices and subtotal, and a button that takes the visitor to your store's own checkout with everything already in the cart. If your store takes orders without online payment, visitors can instead send the cart by message with their delivery details, to pay on delivery.

The agent only picks the product, the variant and how many. Product names, variants, prices, pictures and stock always come from your store's public catalog, never from the AI model. A variant that doesn't exist or is sold out is refused.

## Before you start

- Your plan is **Starter**, **Pro** or **Enterprise**. Cart and checkout and orders by message aren't on the **Free** plan.
- Your **Shopify** or **WooCommerce** store is connected with **Connect your website**, and its **Search products** and **Get product details** actions are switched on. See [Connect your store](/en/docs/connect-your-store). Other platforms can't use the cart.

No Shopify app, API key or extra permission is needed: the cart reads the same public catalog as the product search.

## Switch it on

1. Open your agent and go to the **Actions** tab. The **Cart and checkout** card is below the **Orders** card.
2. Check that the card shows your store under **Store**.
3. Turn on the switch at the top right of the card.
4. Choose how visitors finish their order:
   - **Store checkout** (on by default): the cart shows your store's checkout.
   - **Order by message (cash on delivery)** (off by default): the cart shows an order form. See [Orders by message](#orders-by-message).
5. Optionally, enter a **Discount code** and click **Save**. See [Discount codes](#discount-codes).

Each change is saved right away and recorded in the [audit log](/en/docs/audit-log). With both **Store checkout** and **Order by message** off, the cart isn't offered.

Then try it in the **Playground**: ask for a product, then ask the agent to add it to your cart.

## What visitors see

When a visitor asks to add something, the agent looks it up in your store first. If the product comes in several variants, such as sizes or colours, the agent asks which one. Once it is added, the cart appears under the reply with:

- each item's picture, name with its variant, quantity and price
- the subtotal, the sum of your store's prices, in your store's currency
- the way to finish: your checkout, the order form, or both
- a note that shipping, taxes and final prices are shown at checkout

Visitors can ask the agent to change how many they want, remove an item or show the cart again. A cart holds up to 20 different items and up to 99 of each. It belongs to the conversation, so it is still there when the visitor comes back to the same chat.

The cart's own words, such as **Checkout**, **Subtotal** and the order form, are shown in English, German, French, Italian or Spanish, following the widget's language. Product names are shown as your store writes them.

The cart isn't offered in temporary chats, in [Slack](/en/docs/slack-agent) and [email](/en/docs/email-agent) conversations, through the REST API, or in tests with simulated customers.

## Store checkout

**Shopify**: the cart shows one **Checkout** button. It opens your Shopify checkout in a new tab with all items and quantities already in the cart, using a Shopify cart link.

**WooCommerce**: WooCommerce adds one product per link, so the cart shows an **Add to cart** link for each item and a **View cart** button. The visitor opens each link to add that item to your store's cart, then checks out there. The **View cart** button opens your cart page at `/cart/`, or at `?pagename=cart` when your site uses plain permalinks.

Prices at checkout are your store's current prices. The cart in the chat shows the price from when the item was added or its quantity was raised.

intoCHAT records each click on a checkout link with its conversation, except in temporary chats.

## Discount codes

You can set one discount code per agent. Create the code in your store first: intoCHAT doesn't check that it exists or is valid.

- **Shopify**: the code is added to the checkout link, so Shopify applies it at checkout if it is valid. The cart tells the visitor that the code is added.
- **WooCommerce**: WooCommerce links can't carry a code, so the cart shows the code and asks the visitor to enter it at checkout.

A code can use letters, digits, dashes, dots and underscores, up to 64 characters.

## Orders by message

With **Order by message (cash on delivery)** on, the cart shows an **Order by message** button. When the visitor wants to order without paying online, the agent can also open the form for them. The visitor enters:

- **Name** (required)
- **Phone** (required, a valid phone number)
- **Delivery address** (required)
- **Notes** (optional)

The agent never asks for these details in the chat itself. When the visitor clicks **Send order**, intoCHAT saves an order request with the cart as it is shown, empties the chat cart and adds a confirmation to the conversation, for example: "Thank you, Ana. Your order request was sent to the shop: 2 × Wool scarf – Blue. The shop will contact you at +383 44 123 456 to confirm it." The confirmation promises nothing about payment or delivery times.

Nothing is ordered or paid in your store. Contact the customer to confirm the order, delivery and payment.

If the cart changed after the card was shown, the form asks the visitor to use the latest cart in the chat. An order from the **Playground** is a real order request and notifies you like any other.

### Where order requests show up

- **Order requests** on the **Leads** tab: the date, the customer's name and phone, the delivery address and notes, the items with their subtotal, and the status. Set the status to **New**, **Confirmed** or **Cancelled**; each change is recorded in the [audit log](/en/docs/audit-log). The chat icon opens the conversation. **Export CSV** downloads all requests, newest first.
- **Email**: each new request is emailed to the account owner, and also to the people who get [lead alerts](/en/docs/lead-alerts-and-export) while lead alerts are on.
- **Webhook**: the `order_request.created` event. See [Webhooks](/en/docs/webhooks#order-request-created-data).

Order requests aren't leads.

### Who can see them

Order requests hold customers' names, phone numbers and addresses. Team members whose role can view leads see them for the agents they have access to; a member limited to other agents doesn't see them. Changing a request's status needs a role that can edit leads. See [Team members and roles](/en/docs/team).

When a conversation is deleted, its order requests are deleted with it.

## Limits

| | Starter | Pro | Enterprise |
| --- | --- | --- | --- |
| Cart and checkout | Yes | Yes | Yes |
| Order requests per agent per month | 100 | 1,000 | 10,000 |

Months are calendar months in UTC. When an agent reaches its monthly limit, the order form tells visitors that the shop can't take more orders by message right now and nothing is saved. Store checkout keeps working.

## What isn't included

- No payment in the chat. The agent can't take payment, see your store's orders or change them.
- The cart in the chat isn't synced with the visitor's cart on your store.
- Magento, VTEX, WordPress without WooCommerce and other websites can't use the cart.
- Order requests aren't sent to your store. Handle them there yourself.
