# Cart & Checkout Hooks

## `useIgCart()`

Use this hook if your site manages user carts through the Storefront Cart API.

Requires the `cartId`.  The hook will add a cart attribute to each cart session.

Returns a `wrapCustomAttributes` Function.  This function will add Intelligems-required line item properties to any existing line item properties.

<pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript">interface WrapStorefrontItemCustomAttributesParams{
    productId: string;
    variantId: string;
    customAttributes?: {
        key: string;
        value: string;
    }[] | null;
};

interface WrapStorefrontItemCustomAttributesResponse {
    key: string;
    value: string;
}[];
<strong>
</strong><strong>const useIgCart: (cartOrCheckoutToken: string) => {
</strong>    wrapCustomAttributes: (options: WrapStorefrontItemCustomAttributesParams) => WrapStorefrontItemCustomAttributesResponse;
};
</code></pre>

## `useIgCheckout()`

Use this hook if your site manages user carts through the Storefront Checkout API.

Requires the `checkoutId`.  The hook will add a checkout attribute to each checkout session.

Returns a `wrapCustomAttributes` Function.  This function will add Intelligems-required line item properties to any existing line item properties.
