window.aftersell.cart.events.
Suscribirse es una llamada de configuración, así que es seguro al principio de tu script, sin necesidad de esperar a ready().
Eventos disponibles
Suscripción
events.on(event, handler) registra un handler y devuelve una función que cancela su suscripción:
events.once(event, handler): se dispara una vez y luego cancela su propia suscripción.events.off(event, handler): elimina un handler específico.
Las dos reglas
No cambies el carrito desde cart_updated sin una protección
cart_updated dispara cart_updated de nuevo. Si ese handler cambia el carrito otra vez, tienes un bucle infinito. El comprador ve su carrito agitarse mientras la página martillea a Shopify.
Trata el payload como de solo lectura
registerLineTransform.
cart_loaded
cart_loaded se reproduce para los suscriptores tardíos. Si te suscribes después de que el carrito ya se cargó, tu handler es llamado inmediatamente con el carrito actual. El orden de suscripción nunca importa, así que no tienes que preocuparte de si tu script le ganó al carrito.
cart_updated
item_added
{ item }, donde item es la línea del carrito.
cart_loaded. Agregar varios productos distintos a la vez dispara el evento una vez por línea.
item_removed
{ item }, la línea tal como estaba justo antes de desaparecer, así que aún puedes leer su key, variantId y title.
item_added: bajar una cantidad sin llegar a cero no es una eliminación.
cart_opened y cart_closed
checkout
Escuchar desde fuera del SDK
CustomEvent del DOM en window, así que puedes escuchar sin tocar window.aftersell.cart. Eso es útil desde un archivo del tema, una app de terceros o un script que se carga independientemente del carrito.
Ten cuidado con la nomenclatura: el bus usa
snake_case, los eventos del DOM usan kebab-case detrás de un prefijo aftersell:cart:.
event.detail y coincide con el objeto cart. Los eventos se despachan en window, así que un listener en cualquier parte de la página los recibe. El carrito se renderiza en un shadow root, pero el límite del shadow nunca está en la ruta del evento. Cada despacho clona el payload, así que un listener que muta event.detail no puede afectar a nadie más, y un listener que lanza una excepción no puede interrumpir el SDK.
Eventos estándar de carrito de Shopify
document cada vez que cambia el carrito, para que el código del tema y otras apps puedan reaccionar a las mutaciones de Aftersell de la misma forma que reaccionan a las del tema:
Cada evento también lleva una
promise que Aftersell resuelve cuando la escritura subyacente se completa, siguiendo el estándar de Shopify: espérala con await, no la resuelvas tú. Estos se despachan en document y burbujean, así que un listener en window también los recibe.
Adónde ir después
- Objeto cart: la forma completa de los payloads de arriba.
- Acciones: cómo cambiar el carrito desde un handler.
- Hooks: para cambiar cómo se renderiza el carrito, en lugar de reaccionar a él.
- Casos de uso: seguimiento de analíticas, regalos gratis y otros ejemplos completos.