El bloque Custom code agrega tu propio HTML o React al carrito. Colócalo en cualquier sección del cajón, o anídalo dentro de Cart items como sub-bloque para que se repita en cada línea. A diferencia de otros bloques, no tiene configuraciones de Content ni sección de Design: el bloque es el código, así que trabajas completamente en su pestaña Code.

Agregar y activar un bloque Custom code
- Agrega un bloque Custom code a cualquier sección, o como sub-bloque bajo Cart items.
- Selecciónalo y abre la pestaña Code.
- Elige HTML o React component. Los bloques nuevos usan HTML de forma predeterminada.
- Escribe tu código.
- Si elegiste React, haz clic en Compile.
- Activa “Use custom template”. Para este bloque, ese interruptor significa “mostrar mi código personalizado”, y viene desactivado de forma predeterminada, por lo que nada se renderiza hasta que lo habilites.
- Mantén activado el conmutador del ojo de la barra lateral para que el bloque siga siendo visible para los compradores.
Comportamiento
- El bloque no renderiza nada hasta que el carrito se ha cargado.
- Tampoco renderiza nada cuando el ojo de la barra lateral está desactivado, “Use custom template” está desactivado, el código está vacío o React falla al compilar o renderizar. Como una falla es silenciosa, revisa tu bloque en la vista previa antes de publicar.
Modo HTML
- Las etiquetas
<script>en línea no se ejecutan, y el modo HTML no tiene acceso al SDK ni awindow. - Para lógica, usa el modo React o los scripts personalizados con el Cart SDK.
Tokens
% o una cantidad), listas para insertarse en el marcado:
Ejemplo
Modo React
add-to-cart.
- El editor bloquea el envoltorio en
function CustomCode(props: CustomCodeProps) { … }, y tú editas solo el cuerpo entre esas líneas. - Debes hacer clic en Compile y luego activar “Use custom template”, antes de que el bloque se muestre.
- Tu componente puede usar
useState,useEffect,useMemo,useRefyuseCallback. - A diferencia del modo HTML, React se ejecuta en el contexto de la página, por lo que puede llamar a
windowy al Cart SDK cuando están disponibles. - Si tu componente lanza errores en tiempo de ejecución, el bloque no renderiza nada y el resto del carrito sigue funcionando.
Props
$12.50 es 1250, no 12.50. No son cadenas de dinero formateadas como los tokens de HTML.
Las estructuras de cart y line
cart y line son los mismos objetos que el SDK expone en todas partes, por lo que están documentados una sola vez en la referencia del objeto de carrito: cada campo del carrito, de una línea y de un bundle.
Los que más usarás: cart.items, cart.itemCount, cart.totalPrice, line.title, line.quantity, line.finalLinePrice.
Tres cosas específicas de este bloque:
linesolo se establece en un sub-bloque de Cart items, donde tu componente se renderiza una vez por línea. Colocado como sección,lineesnully en su lugar leescart.items.- Los componentes de un bundle no están en
cart.items. Cuando las líneas están agrupadas en un bundle, solo aparece la línea ancla; sus componentes viven enline.bundle.children. - Las líneas ocultas por una transformación de línea tampoco están ahí, aunque siguen contando para
cart.totalPrice.
Ejemplos
props.line para contenido por producto. El bloque se renderiza una vez por línea, etiquetado con el producto y la variante de esa línea:
Leer los metadatos de enriquecimiento
cart.items lleva un campo metadata: un objeto vacío {} hasta que un enriquecedor de carrito lo rellena. Una vez rellenado, está indexado por el id del enriquecedor y contiene los datos de Storefront del producto o la variante de esa línea:
metadata siempre está presente y su valor predeterminado es un objeto vacío {} hasta que se completa la búsqueda asíncrona del enriquecedor (la prueba de “aún no enriquecido” es Object.keys(item.metadata).length === 0). Usa encadenamiento opcional (item.metadata?.enricherId) al leer la clave de un enriquecedor específico, ya que esa clave está ausente hasta que el enriquecimiento llega.
Leer los códigos de descuento y los descuentos por línea
cart.discountCodes enumera los códigos de descuento aplicados al carrito, y discountAllocations de cada línea enumera los descuentos aplicados a esa línea específica:
Ubicación y límites
- Región: cualquiera (superior, cuerpo o inferior). También disponible como sub-bloque de Cart items.
- Máximo: ilimitado.
- Estado: carrito lleno y vacío (como bloque de sección). Como sub-bloque de Cart items, solo se renderiza cuando el carrito tiene líneas, una instancia por línea.
- No está bloqueado, así que puedes eliminarlo u ocultarlo.
- No hay sección de Design por bloque. Dale estilo a través de tu propio marcado, el CSS personalizado y tus configuraciones de diseño globales.