# Preseleccionar la talla recomendada

> Obtén la talla de quien compra al cargar la página, con tus propias etiquetas de talla, y preselecciónala en tu selector de talla.

Source: https://docs.tryyoursize.com/es/guides/recommendation-event/

Cuando quien compra ya tiene sesión iniciada en TryYourSize en tu web, recibes su talla **al cargar la página**, con **tus etiquetas de talla** (el mapa de tallas del producto, por ejemplo "M" de Studio → tu "Medium"), sin que tenga que abrir nada.

## Preselecciona tu selector de talla

```ts
const guide = elements.create("sizeGuide", { product: "SKU-123" });
guide.on("recommendation", ({ status, size }) => {
  if (status !== "ready") return;
  const select = document.querySelector<HTMLSelectElement>("#size")!;
  const option = [...select.options].find((o) => o.value === size && !o.disabled);
  if (option && !select.dataset.touched) {        // nunca sustituyas la elección de quien compra
    select.value = size;
    select.dispatchEvent(new Event("change", { bubbles: true }));
    document.querySelector("#size-note")!.textContent = "Recomendada por TryYourSize";
  }
});
guide.mount("#tys-guide");
```

Sin montar nada:

```ts
const rec = await tys.recommendation("SKU-123");
// o desde cualquier elemento montado:
const rec2 = await fit.getRecommendation();
```

## El contenido del evento

| Campo | |
|---|---|
| `product` | El ID de tu producto. |
| `status` | `ready` (hay talla), `computing` (se está simulando sobre el cuerpo de quien compra), `none` (simulado, ninguna talla se puede llevar), `signed_out` (sin sesión de TryYourSize en tu web), `unavailable` (con sesión iniciada, pero aún sin talla para este producto: no hay datos de la prenda, aún no hay cuerpo, aún no se ha simulado con este cuerpo o la simulación ha fallado). |
| `size` | La talla recomendada con **tu** etiqueta, o `null`. |
| `studioSize` | La misma talla tal como se introdujo en TryYourSize Studio, o `null`. |
| `wearableSizes` | Las tallas que se pueden llevar con este cuerpo, con tus etiquetas (cuando se ha simulado). |

Se emite al montar y con cada cambio (inicio de sesión, un cuerpo nuevo, una simulación que termina). Nunca lleva medidas, el correo electrónico ni datos corporales. El elemento `sizeGuide` siempre lo emite; `fit` y `button` empiezan a emitirlo cuando escuchas `recommendation`.

## Buenas prácticas

- **Nunca sustituyas la elección de quien compra.** Preselecciona solo hasta que toque el selector, y nunca una talla agotada o desactivada.
- **Indica de dónde viene**, por ejemplo "Recomendada por TryYourSize" junto al selector.
- **Guarda la talla con la línea del carrito** (por ejemplo, en una propiedad de línea oculta) y envíala como `recommended_size` con el pedido: consulta [Pedidos y devoluciones](https://docs.tryyoursize.com/es/guides/outcomes.md).

## Coste

Ver una página nunca inicia una simulación. Un cuerpo ya simulado con esta prenda responde al instante, y muchas prendas responden en menos de un segundo; en otro caso, `status` es `unavailable` hasta que quien compra lo pide ("Verlo puesto" en nuestra ventana), luego `computing` y después `ready`. Una talla entregada es una [prueba de tallaje](https://docs.tryyoursize.com/es/get-started/going-live.md#facturación).

## En tu servidor

Para tiendas headless, o para usar la talla en páginas renderizadas en el servidor y en correos, consulta [Recomendaciones en el servidor](https://docs.tryyoursize.com/es/guides/server-side-recommendations.md).
