# GetOptical Docs — full documentation
> Documentación de Optical Form, la app de Shopify de GetOptical que añade a la ficha de producto un configurador de lentes multipaso para vender gafas graduadas y lentes de contacto. Documentation for Optical Form, the Shopify app by GetOptical.
Optical Form es una app pública del Shopify App Store, publicada por la marca GetOptical:
https://apps.shopify.com/optical-form
Qué hace: en la ficha de producto, el comprador elige tipo de gafas, lente y tratamientos,
introduce su graduación y añade accesorios; todo entra en el carrito de Shopify.
- Instalación: bloque de tema (app embed). Funciona en cualquier tema, sin desarrollador.
- Diez tipos de paso: single_select, multi_select, text_input, graduation,
graduation_summary, file_upload, accessories, reading_rx, contact_lens, variant_select.
- Lentillas y subida de receta incluidas en el plan base, no en un nivel superior.
- Precio: un solo plan, Pro, 49 USD/mes o 490 USD/año, prueba gratis de 14 días,
0% de comisión. Todos los cargos se facturan en USD.
- Idiomas: español e inglés, tanto en la app como en esta documentación.
- Privacidad: la receta no sale del navegador — viaja a las propiedades de línea del pedido
de Shopify, no a servidores de GetOptical.
- Soporte: support@getoptical.app
English summary: Optical Form is a public Shopify app by GetOptical. It adds a multi-step
lens configurator to the product page: the shopper picks frame type, lens and treatments,
enters their prescription and adds accessories, and it all goes into the Shopify cart.
It installs as a theme block (app embed) and works on any theme, no developer needed.
Ten step types are available (single_select, multi_select, text_input, graduation,
graduation_summary, file_upload, accessories, reading_rx, contact_lens, variant_select).
Contact lenses and prescription upload are included in the base plan. One plan, Pro:
$49/month or $490/year, 14-day free trial, 0% commission, all charges billed in USD.
Spanish and English. The prescription never leaves the browser: it travels to the Shopify
order line item properties, not to GetOptical servers. Support: support@getoptical.app
This file contains every page of https://docs.getoptical.app in full: first the Spanish pages served at the
site root, then the English pages served under /en/. The two trees are translations of each
other, not different content. Each page below starts with its title, its description and the
URL it is served from.
---
# Documentación de GetOptical
> Vende gafas graduadas y lentes en Shopify — 0% de comisión, en cualquier tema.
Source: https://docs.getoptical.app/
Language: es
### Empezar
Lee primero **Antes de empezar**: cuatro decisiones y una lista de productos que evitan rehacer el trabajo. Después instala la incrustación de la app, crea tu formulario y asígnalo a un producto.
[Antes de empezar](https://docs.getoptical.app/empezar/antes-de-empezar/) · [Guía de instalación](https://docs.getoptical.app/empezar/instalacion/) · [Conceptos clave](https://docs.getoptical.app/empezar/conceptos/)
### Crear un formulario
Los 10 tipos de paso, la anatomía de una opción y la ramificación por respuesta. En qué productos aparece, qué pasa con la montura sin lentes, y cómo se publica, se copia y se lleva a otra tienda.
[Crear un formulario](https://docs.getoptical.app/guias/crear-formulario/) · [Productos y colecciones](https://docs.getoptical.app/guias/productos-y-colecciones/) · [Cómo se compra cada montura](https://docs.getoptical.app/guias/evitar-compras-sin-configurar/) · [Sincronización y copias](https://docs.getoptical.app/guias/sincronizacion/) · [Copiar a otra tienda](https://docs.getoptical.app/guias/copiar-formulario/)
### Graduación y receta
Captura SPH, CYL, AX, ADD y DP por ojo, o una rejilla de lectura; o deja que el cliente suba su receta como imagen o PDF. También hay pasos de lentillas, incluidos en Pro.
[Graduación](https://docs.getoptical.app/guias/graduacion/) · [Subida de archivo](https://docs.getoptical.app/guias/subir-receta/)
### Addons, precios e iconos
Vende lentes, tratamientos y cross-sell facturados como líneas separadas; de dónde sale cada euro del total; y un pack de 28 iconos para tus opciones.
[Complementos y accesorios](https://docs.getoptical.app/guias/accesorios-y-addons/) · [Precios y cobro](https://docs.getoptical.app/guias/precios-y-cobro/) · [Iconos](https://docs.getoptical.app/guias/iconos/)
### Diseño, tema y carrito
Colores, tipografía, comportamiento y qué datos se muestran en el carrito; el botón del producto; los ajustes que viven en tu tema y los temas que hemos probado; y de dónde sale cada texto que ve tu cliente.
[Diseño y carrito](https://docs.getoptical.app/guias/diseno-y-carrito/) · [El botón del producto](https://docs.getoptical.app/guias/boton-del-producto/) · [Ajustes del tema](https://docs.getoptical.app/guias/ajustes-del-tema/) · [Temas probados](https://docs.getoptical.app/guias/temas-probados/) · [Idiomas y textos](https://docs.getoptical.app/guias/traducciones/)
### Planes y facturación
Bienvenida de 14 días, prueba gratis de 14 días, 0 % de comisión, y qué cambia al elegir plan.
[Planes y facturación](https://docs.getoptical.app/facturacion/planes/)
### Cuando algo no funciona
Busca tu síntoma, sigue las comprobaciones en orden y para en cuanto una falle. Qué significa cada cifra de Analítica y qué tocar en el paso que pierde clientes. Y las dudas más comunes, respondidas.
[Cuando algo no funciona](https://docs.getoptical.app/guias/cuando-algo-no-funciona/) · [Leer la analítica](https://docs.getoptical.app/guias/analitica/) · [Preguntas frecuentes](https://docs.getoptical.app/faq/)
### Para desarrolladores
Instalación agnóstica al tema, hooks y agrupación de carrito; y si montas la tienda de una óptica para un cliente, Pro gratis en tu tienda de desarrollo.
[Integración](https://docs.getoptical.app/desarrolladores/integracion/) · [Qué hacer con cada evento](https://docs.getoptical.app/desarrolladores/eventos/) · [Botón y carrito](https://docs.getoptical.app/desarrolladores/boton-y-carrito/) · [Agencias y tiendas de desarrollo](https://docs.getoptical.app/desarrolladores/tiendas-de-desarrollo/)
---
# Antes de empezar
> Cuatro decisiones y una lista de productos que conviene tener resueltas antes de tocar la app. Media hora aquí te ahorra rehacer el trabajo.
Source: https://docs.getoptical.app/empezar/antes-de-empezar/
Language: es
Puedes instalar la app y ponerte a construir. Pero hay cuatro cosas que, decididas antes, evitan tener que rehacer formularios y productos a mitad de camino.
Nada de esto se hace dentro de Optical Form: es preparación en tu propia tienda.
## 1. Qué monturas se venden con formulario
No suelen ser todas.
| Se venden **con** formulario | Se venden **normal** |
|---|---|
| Monturas graduadas | Estuches, líquidos, paños |
| Gafas de sol (con tinte, polarizadas o graduadas) | Accesorios y regalos |
| Gafas de lectura a medida y lentes de recambio | Monturas que vendes sueltas, sin lentes |
Esta lista decide dos cosas más adelante: a qué productos asignas el formulario y qué plantilla de producto usan. Escríbela antes de empezar.
**El caso mixto**
¿La misma montura se vende con y sin graduación? **No hace falta duplicarla.** Un solo producto puede llevar los dos botones: el de tu tema, que añade la montura sola, y el de Optical Form, que abre el configurador. Es una decisión de negocio tuya, no un límite de la app — solo hay que ponerle a cada botón un nombre que diga lo que hace. Crea dos productos únicamente si quieres precios, fotos o textos distintos para cada versión. Las dos vías, con sus pasos, en [Controlar cómo se compra cada montura](https://docs.getoptical.app/guias/evitar-compras-sin-configurar/).
## 2. Los productos de tus extras
Aquí está el grueso del trabajo previo, y lo que más gente se salta.
Todo lo que quieras **cobrar aparte** —el tipo de lente, un tratamiento, el montaje— tiene que existir como **producto de Shopify**. No son etiquetas dentro de la app: son productos reales, porque es Shopify quien los factura, los mete en el pedido y los envía a tu laboratorio.
Prepara una lista parecida a esta:
```
Lente monofocal estándar 1.50 ...... 0,00 € (incluida en el precio de la montura)
Lente monofocal fina 1.60 ......... 15,00 €
Lente monofocal ultrafina 1.74 .... 50,00 €
Antirreflejante premium ........... 30,00 €
Filtro de luz azul ................ 17,00 €
Fotocromático ..................... 40,00 €
Montaje ........................... 12,00 €
```
Dos cosas que decidirás con esa lista en la mano y que explicamos en [Precios y cobro](https://docs.getoptical.app/guias/precios-y-cobro/):
- **El precio es el suplemento, no el total.** La montura ya tiene el suyo.
- **Lo que va incluido se crea igual, a 0 €.** Así el cliente ve "Incluido" en vez de un hueco.
**Créalos con el estado «No listado»**
Estos productos no son para navegar: nadie debería encontrar "Antirreflejante premium" en tu colección de gafas. Shopify tiene un estado de producto pensado justo para esto: **No listado** (*Unlisted*, en la página del producto, junto a Activo y Borrador). Un producto no listado **no sale en las colecciones, en el buscador de la tienda, en las recomendaciones, en Google ni en el mapa del sitio**, pero **se puede añadir al carrito y comprar** con normalidad: en el carrito, el checkout y el pedido se comporta como un producto activo.
No los dejes **sin publicar** en el canal Tienda online ni en Borrador: un producto que no está publicado en el canal **no se puede añadir al carrito**, y Shopify rechazaría el añadido entero — tu cliente se quedaría sin la montura también. Activo pero escondido en una colección que no enlazas también funciona, pero sigue saliendo en el buscador.
### Cómo poner un producto en el canal Tienda online
Si un producto ya existe y le falta el canal, añádeselo desde su página de producto:
1. En tu admin de Shopify, ve a **Productos** y haz clic en el nombre del producto.
2. En la sección **Publicación**, haz clic en el icono que hay junto al título.
3. En el cuadro de diálogo, marca **Tienda online** y haz clic en **Listo**.
4. Haz clic en **Guardar**.
Repítelo con cada producto de tus extras. Si no quieres que salga en colecciones ni en el buscador, ponlo en estado **No listado** en esa misma página de producto.
## 3. Cómo vas a asignar el formulario
Dos formas, y conviene elegir antes:
| | Cuándo usarla |
|---|---|
| **Por producto** | Pocas monturas, o cada una con su formulario |
| **Por colección** | Catálogo amplio con un formulario común |
La colección tiene una ventaja que suele decidir: **es viva**. Añades una montura nueva a la colección y ya muestra el formulario, sin volver a la app. Si vas a crecer en catálogo, empieza por ahí.
Crea esa colección ahora si no existe — por ejemplo *Gafas graduadas*.
## 4. Decide cómo se compra cada montura
Tu tema mantiene **sus propios botones de compra**, así que por defecto un cliente puede llevarse la montura sin lentes. Puede que eso te venga bien —hay ópticas que venden monturas sueltas a propósito— o puede que no lo quieras en absoluto. Es tuya la decisión, y conviene tomarla ahora y no cuando ya esté entrando gente.
Las dos vías, con sus pasos: **[Controlar cómo se compra cada montura](https://docs.getoptical.app/guias/evitar-compras-sin-configurar/)**.
Si aún estás eligiendo tema y ya sabes que quieres cerrar la compra directa, ten en cuenta que necesitarás poder **quitar el bloque de botones de compra** y **desactivar la barra fija** en una plantilla de producto propia. Casi todos los temas modernos lo permiten.
## Lista de comprobación
Antes de crear tu primer formulario:
- [ ] Sé qué productos se venden con formulario y cuáles no
- [ ] Los productos de mis extras están creados, con precio de **suplemento**
- [ ] Los que van incluidos existen a **0 €**
- [ ] Están en estado **No listado** (no en borrador ni sin publicar)
- [ ] La colección de monturas graduadas existe (si voy por colección)
- [ ] He decidido si mis monturas se pueden comprar sin configurar, y he aplicado esa decisión
Con eso hecho, montar el formulario es media hora. Sin eso, es media hora y volver atrás tres veces.
## Siguiente paso
[Instalar Optical Form](https://docs.getoptical.app/empezar/instalacion/) y después [Crear un formulario](https://docs.getoptical.app/guias/crear-formulario/).
---
# Instalar Optical Form
> Instala la app, activa la incrustación de la app y deja tu primer formulario listo en Shopify.
Source: https://docs.getoptical.app/empezar/instalacion/
Language: es
Optical Form se instala mediante una **incrustación de la app** en el tema — sin tocar código. La app incluye una **Guía de configuración** que te acompaña por estos pasos.
## 1. Instala la app
Instala **[Optical Form desde el Shopify App Store](https://apps.shopify.com/optical-form)**. Al abrirla por primera vez, la guía de configuración aparece en el Home.
**No hace falta elegir plan para empezar**
Desde el momento en que instalas tienes **14 días de bienvenida** con la app completa: puedes hacer todos los pasos de esta guía y publicar en tu tienda sin aprobar ningún cargo. Los **14 días de prueba** son otra cosa y empiezan cuando eliges plan. La cronología entera, en [Planes y facturación](https://docs.getoptical.app/facturacion/planes/#qué-pasa-desde-que-instalas).
## 2. Activa la incrustación de la app
1. En tu admin de Shopify: **Tienda online → Temas → Personalizar**.
2. Abre **Incrustaciones de aplicaciones** en el panel izquierdo.
3. Activa **Optical Form Drawer** y pulsa **Guardar**.
**Atajo**
La tarjeta **Activar la app** del Home abre el editor de temas directamente en la incrustación. Muestra **Publicada** cuando el panel está activo en tu tema publicado.
## 3. Añade el bloque a la página de producto
Este paso es el que hace aparecer el botón, y es distinto del anterior:
| | Qué hace | Dónde va |
|---|---|---|
| **Incrustación de la app** (paso 2) | Carga la app en la tienda | Toda la tienda, una vez |
| **Bloque "Optical Form"** (este paso) | **Dibuja el botón** | Dentro de la plantilla de producto |
Si activas solo la incrustación, el formulario existe pero **la página de producto no muestra nada**.
1. En el editor de temas, arriba, cambia la vista a **Producto** (plantilla de producto).
2. En la sección principal, pulsa **Añadir bloque** → elige **Optical Form**.
3. Colócalo donde quieras (normalmente junto al botón de añadir al carrito) y pulsa **Guardar**.
**Atajo**
El paso *"Añade el bloque a tu página de producto"* de la Guía de configuración abre el editor ya en la plantilla de producto y con el bloque preparado.
**Ojo al tema publicado**
La guía comprueba el **tema publicado**. Si añades el bloque a un borrador de tema, el paso seguirá marcado como pendiente hasta que publiques ese tema.
## 4. Ya tienes cuatro formularios de ejemplo
No empiezas de cero. Al instalar, la app deja **cuatro formularios en borrador** hechos y en el idioma de tu tienda:
- **Gafas graduadas a pantalla completa** — con colores de tratamiento de muestra.
- **Gafas graduadas** en panel lateral — con las ramas de monofocal, progresiva, lectura y sin graduar.
- **Gafas de sol** en modo oscuro.
- **Lentillas** — tipo de lentilla, graduación por ojo y complementos.
Están en **borrador**, así que no aparecen en ninguna página de producto hasta que tú los actives. Ábrelos, recórrelos y quédate con el que se parezca a lo que vendes: casi siempre sale más rápido que empezar en blanco.
Si prefieres partir de otra cosa, **Crear formulario** te ofrece cinco plantillas. Ver [Crear un formulario](https://docs.getoptical.app/guias/crear-formulario/).
## 5. Crea los productos de los complementos
Los tipos de lente, tratamientos y servicios se facturan como **productos reales de Shopify**. Créalos con el estado **No listado** —se pueden comprar pero no salen en colecciones ni en el buscador, ver [Antes de empezar](https://docs.getoptical.app/empezar/antes-de-empezar/#2-los-productos-de-tus-extras)— y luego vincúlalos a las opciones como [complementos](https://docs.getoptical.app/guias/accesorios-y-addons/).
## 6. Asigna el formulario a productos
En la pestaña **Productos** del formulario, elige en qué productos debe aparecer. En esas páginas el cliente verá el botón **"Configura tus lentes"** y seguirá el flujo multipaso.
Puedes elegir productos sueltos o **colecciones enteras**: con una colección, todos sus productos —también los que entren después— muestran el formulario, y da igual cuántos sean. Las reglas, en [Productos y colecciones](https://docs.getoptical.app/guias/productos-y-colecciones/).
## 7. Activa y sincroniza
Pon el formulario en estado **Activo** y pulsa **Sincronizar** para publicarlo en Shopify. Un formulario solo aparece en la tienda si está **Activo + Sincronizado**. Ver [Sincronización](https://docs.getoptical.app/guias/sincronizacion/).
## 8. Decide cómo se compra cada montura
Queda una decisión, y es de negocio: tu tema conserva **sus propios botones de compra**, así que hoy un cliente puede llevarse la montura **sin lentes**. Si vendes también monturas sueltas, eso es justo lo que quieres. Si no, ese pedido entra pagado y sin graduación, y lo descubres en el taller.
Tómala ahora, no después: [Controlar cómo se compra cada montura](https://docs.getoptical.app/guias/evitar-compras-sin-configurar/).
## Siguiente paso
Repasa los [Conceptos clave](https://docs.getoptical.app/empezar/conceptos/) o pasa directo a [Crear un formulario](https://docs.getoptical.app/guias/crear-formulario/).
¿Algo no sale como esperabas? [Cuando algo no funciona](https://docs.getoptical.app/guias/cuando-algo-no-funciona/).
---
# Conceptos clave
> El vocabulario de Optical Form — formulario, paso, opción, complemento, accesorio y bundle.
Source: https://docs.getoptical.app/empezar/conceptos/
Language: es
Antes de construir, conviene conocer las piezas que usa Optical Form. Todas aparecen con estos nombres en el panel de la app.
## Formulario
Un **flujo multipaso** que el cliente completa en la página de producto. Tiene un **nombre**, un **estado** (Borrador / Activo / Archivado) y una lista de **pasos**. Se asigna a uno o más productos y se publica en Shopify mediante sincronización.
## Paso
Cada **paso** hace una pregunta al cliente (tipo de lente, material, graduación, accesorios…). Tiene un **Tipo de entrada** que decide cómo se muestra. Ver [Crear un formulario](https://docs.getoptical.app/guias/crear-formulario/) para la lista completa de tipos.
## Opción
Dentro de un paso de selección, cada **opción** es una tarjeta elegible (ej. "Progresivo", "Antirreflejante"). Una opción puede llevar: una **etiqueta**, una **imagen**, un **distintivo informativo** (solo visual), incompatibilidades con otras opciones, un **salto** a otro paso y uno o varios **complementos**.
## Complemento
Un **producto de Shopify vinculado a una opción** que se factura como **línea separada** en el carrito cuando el cliente elige esa opción (ej. el propio tipo de lente, un tratamiento, un servicio de montaje). Se agrupan bajo el producto principal como un bundle.
## Colores seleccionables
Una **fila de muestras de color** dentro de una opción (tintes, polarizadas, fotocromáticas). El cliente elige un color y **solo ese** se cobra: cada color es una variante de un producto tuyo, y varios productos forman grupos con título (Classic, Fashion, Gradient…). Ver [Colores seleccionables](https://docs.getoptical.app/guias/accesorios-y-addons/#colores-seleccionables-por-opción).
## Plantilla de diseño
Un aspecto completo del panel en un clic — **Clásica**, **Moderna** u **Oscura** — desde la pestaña Diseño. Distinta de la plantilla de **formulario** (los pasos con los que nace un formulario nuevo) y de la plantilla de **producto** de tu tema. Ver [Diseño y carrito](https://docs.getoptical.app/guias/diseno-y-carrito/#plantilla-de-diseño).
## Accesorio (cross-sell)
Un paso de tipo **Accesorios** ofrece productos extra opcionales (estuches, limpiadores, cordones…) que el cliente puede añadir o saltar. A diferencia de los complementos, viven en su propio paso y no dependen de una opción concreta.
## Bundle
El **conjunto** producto principal + complementos + accesorios que se añade al carrito en un clic. Shopify los enlaza de forma nativa con `parent_id`, así que se borran en cascada y se leen juntos en el checkout y en los emails de pedido. Ver [Diseño y carrito](https://docs.getoptical.app/guias/diseno-y-carrito/).
## Graduación (Rx)
Los datos de la receta del cliente: esfera (SPH/PWR), cilindro (CYL), eje (AX), adición (ADD) y distancia interpupilar (DP), por cada ojo (OD / OI). Ver [Graduación y receta](https://docs.getoptical.app/guias/graduacion/).
## Metaobject / Sincronización
Cada formulario se **publica en Shopify como un metaobject**. Guardar en la app no basta: hay que **Sincronizar** para que los cambios lleguen a la tienda. Ver [Sincronización](https://docs.getoptical.app/guias/sincronizacion/).
---
# Crear un formulario
> Configura los pasos de tu configurador de graduación y asígnalo a un producto.
Source: https://docs.getoptical.app/guias/crear-formulario/
Language: es
Un formulario de Optical Form es un **flujo multipaso** que el cliente completa en la página de producto.
**Antes de empezar**
Si aún no has creado los productos de tus tratamientos y tipos de lente, hazlo primero: los necesitas para vincular los complementos. Ver [Antes de empezar](https://docs.getoptical.app/empezar/antes-de-empezar/).
## Los cuatro formularios que ya tienes
Al instalar te dejamos **cuatro formularios de ejemplo ya montados**, todos en **Borrador**: **gafas graduadas a pantalla completa** (con colores de tratamiento de muestra), **gafas graduadas** en panel lateral, **gafas de sol en modo oscuro** y **lentillas**. No están asignados a ningún producto, así que no se ven en tu tienda hasta que tú quieras.
**Empieza por uno de ellos, no por uno en blanco.** Traen los pasos, los textos y el diseño ya hechos, y se editan enteros — es mucho más rápido que armar el tuyo desde cero.
## Pasarlo a Activo
Un formulario en **Borrador** no lo ve nadie. Para publicarlo:
1. **Formularios** → entra en el que quieras usar.
2. En la pestaña **Ajustes**, cambia **Estado** de **Borrador** a **Activo**.
3. **Guarda** y luego **Sincroniza** — ver [Sincronización](https://docs.getoptical.app/guias/sincronizacion/).
Para que aparezca de verdad hacen falta las cuatro cosas a la vez: **Activo**, **Sincronizado**, **asignado a un producto** y la [incrustación de la app](https://docs.getoptical.app/empezar/instalacion/) activada en tu tema.
## Crear el formulario
1. En la app: **Formularios → Crear formulario**.
2. Elige una **plantilla** de inicio o empieza en blanco:
- **Gafas graduadas** — tipo de lente → material → tratamiento → graduación → resumen.
- **Gafas graduadas · Pantalla completa** — el mismo flujo a pantalla partida y con colores seleccionables en los tratamientos.
- **Lentillas** — pack, graduación por ojo tomada del catálogo de fabricación del producto y líquidos de mantenimiento.
- **Gafas de sol · Oscuro** — solo sol o graduadas → graduación → tinte → polarización → accesorios. Nace con la plantilla de diseño **Oscura** (fondo carbón, acento bermellón) y con iconos dibujados para fondo oscuro: un configurador que parece parte del producto. Pensada para gafas de sol y monturas premium.
- **Formulario en blanco** — un paso vacío para construir desde cero.
3. Ponle nombre, elige el estado (Borrador / Activo) y crea.
## Tipos de paso
En la pestaña **Pasos**, cada paso tiene un **Tipo de entrada** que define cómo se muestra:
| Tipo de entrada | Para qué sirve |
|---|---|
| **Selección única** | Elegir una opción (tipo de lente, tratamiento). |
| **Selección múltiple** | Elegir varias (filtros o tratamientos combinables). Para que el cliente vea que puede seguir añadiendo, eliges entre una casilla en cada opción o un aviso sobre el botón de continuar. |
| **Graduación (Rx)** | Captura por ojo (OD/OI): SPH, CYL, AX, ADD y DP. Ver [Graduación](https://docs.getoptical.app/guias/graduacion/). |
| **Receta de lectura (rejilla)** | Rejilla de ampliación para lentes de lectura. |
| **Subida de archivo** | El cliente sube su receta (imagen o PDF). Ver [Subida de archivo](https://docs.getoptical.app/guias/subir-receta/). |
| **Campo de texto** | Nota libre del cliente. |
| **Accesorios (cross-sell)** | Añadir productos extra al pedido. Ver [Complementos y accesorios](https://docs.getoptical.app/guias/accesorios-y-addons/). |
| **Resumen de graduación** | Muestra la graduación introducida antes de finalizar. |
| **Lentillas** | Pack por ojo, graduación leída del catálogo de fabricación del producto y referencia exacta del fabricante en el pedido. |
| **Variantes del producto** | Deja elegir la variante dentro del formulario. Se oculta solo si el producto tiene una única variante. |
## Ajustes de un paso
Cada paso tiene: **ID interno** (no visible al cliente), **Título**, **Descripción**, **Tipo de entrada** y varios interruptores:
- **Obligatorio** — el cliente debe completar el paso para avanzar.
- **Ocultar del resumen** — no muestra la selección en el resumen ni en las etiquetas del pie (útil para pasos que solo dirigen al cliente).
- **Mostrar 0 en vez de "Incluido"** — muestra `€0,00` en las opciones sin coste, en lugar de la etiqueta "Incluido".
- **Precio que se muestra en las opciones** — qué importe enseña cada tarjeta del paso: solo el coste añadido («+25 €», por defecto), un precio de partida, el precio total o solo el precio de la opción. Cada opción puede llevar el suyo con **Precio que se muestra en esta opción**. Los cuatro modos, con un ejemplo, en [Precios y cobro](https://docs.getoptical.app/guias/precios-y-cobro/#el-precio-de-cada-tarjeta-cuatro-modos).
- **Si este paso solo tiene una opción, elegirla y saltar el paso** — desactivada por defecto, solo en pasos de elección única. Activada, cuando a un producto le queda una sola opción en ese paso (un único pack, un único tratamiento posible), la app la elige por el cliente, la lleva al pedido con su etiqueta y pasa directamente al siguiente paso: nadie ve una pantalla con una sola tarjeta. No salta si la opción lleva colores seleccionables o una acción externa, ni si el salto terminaría el formulario. Desactivada, un paso de una sola opción se muestra tal cual — a veces esa pantalla está a propósito.
## Anatomía de una opción
En los pasos de selección, cada **opción** puede llevar:
- **Etiqueta**, **descripción** e **imagen** (de tus Shopify Files o por URL).
- **Ventajas** — hasta cuatro etiquetas cortas bajo la descripción ("Menos reflejos", "Para pantallas") que dicen qué gana el cliente eligiendo esa opción. No cambian el precio ni llegan al pedido. Las del catálogo se traducen solas al idioma del cliente; las que escribas tú las traduces como cualquier otro campo.
- **Texto de ayuda** — opcional. Si lo rellenas, aparece un «?» junto al título de la opción que el cliente abre para leer una explicación más larga (al pasar el ratón o pulsándolo), así la descripción puede quedarse corta. Se traduce como cualquier otro campo; su aspecto se ajusta en [Diseño › Ayuda emergente](https://docs.getoptical.app/guias/diseno-y-carrito/).
- **Distintivo informativo** — texto visual (ej. `+250`) que **no** afecta al total. Si pones ahí un precio y no vinculas un complemento, el cliente lo ve pero **no lo paga**: ver [Precios y cobro](https://docs.getoptical.app/guias/precios-y-cobro/). Solo se ve en opciones que no suman nada al precio: en una opción con complemento manda el modo de precio que hayas elegido. Para etiquetas como «Mejor precio» usa la **Etiqueta de la opción** (abajo); si ya tenías escrito algo como «Mejor precio • 59 €» en una opción que cuesta 59 €, la app lo muestra como etiqueta sin que hagas nada.
- **Etiqueta de la opción** — una etiqueta junto al título de la opción: «Recomendada», «Mejor precio», «Más popular»… Pulsa **Elegir etiqueta** y elige una prediseñada (se traduce sola al idioma del cliente y tiene su color) o escribe la tuya y elígele el color. Una por opción, en cualquier paso de opciones. No la elige por el cliente ni cambia el orden: si quieres que salga primera, arrástrala. El texto de «Recomendada» se cambia en [Diseño › Textos](https://docs.getoptical.app/guias/diseno-y-carrito/).
- **Incompatible con** — impide combinarla con otras opciones.
- **Siguiente paso (al hacer clic)** — secuencial, saltar a un paso concreto, o **Enviar (fin)**.
- **Complementos** — productos de Shopify que se facturan como líneas separadas al elegir la opción.
- **Colores seleccionables** — una fila de muestras (tintes, polarizadas, fotocromáticas): el cliente elige un color y **solo ese** se cobra. Cada color es una variante de un producto tuyo; varios productos forman grupos con título. Ver [Colores seleccionables](https://docs.getoptical.app/guias/accesorios-y-addons/#colores-seleccionables-por-opción).
- **Acción externa** — sustituye el "añadir al carrito" por un mensaje + botón (cita, WhatsApp, solo en tienda).
Ver [Complementos, accesorios y acciones externas](https://docs.getoptical.app/guias/accesorios-y-addons/).
## Ramificación condicional
El campo **Siguiente paso** de cada opción define a qué paso salta el flujo — así "Gafas graduadas" y "Gafas de lectura" pueden llevar por caminos distintos desde el mismo primer paso. El diagrama de flujo del editor visualiza todos los saltos.
## Asignar y diseñar
- **Productos** — asigna el formulario a productos sueltos o a colecciones enteras. Qué gana cuando se solapan y qué pasa con colecciones grandes: [Productos y colecciones](https://docs.getoptical.app/guias/productos-y-colecciones/).
- **Diseño** — colores, tipografía y qué datos se muestran en el carrito. Ver [Diseño y carrito](https://docs.getoptical.app/guias/diseno-y-carrito/).
- **Sincronizar** — publica los cambios en la tienda. Ver [Sincronización](https://docs.getoptical.app/guias/sincronizacion/).
**Un producto, un formulario**
Un formulario puede llevar tantos productos como quieras, pero **cada producto admite un solo formulario**. Si asignas aquí un producto que ya estaba en otro, **se lo lleva este** — sin avisarte y sin preguntar: el formulario anterior lo pierde en silencio.
Antes de mover productos entre formularios, comprueba en cuál están. Y si lo que quieres es que la montura se venda también **sin** configurar, no hace falta otro formulario ni otro producto: el botón de tu tema sigue ahí ([Controlar cómo se compra cada montura](https://docs.getoptical.app/guias/evitar-compras-sin-configurar/)). Solo dos **formularios** distintos sobre la misma montura exigen dos productos.
---
# Productos y colecciones
> Las dos formas de decir en qué productos aparece un formulario, qué gana cuando se solapan y qué pasa con colecciones de muchos productos.
Source: https://docs.getoptical.app/guias/productos-y-colecciones/
Language: es
Un formulario aparece en una página de producto solo si se lo has asignado. Hay **dos formas** de hacerlo, y conviven: producto a producto, o por colección. Las dos viven en la pestaña **Productos** del formulario.
## Producto a producto
Pulsa **Añadir productos**, elige en el selector de Shopify los que quieras y listo. Cada producto elegido queda vinculado a este formulario, y la lista de la tarjeta **Productos asignados** te enseña exactamente cuáles son.
- **Cada producto admite un solo formulario.** Si eliges uno que ya estaba en otro formulario, se lo lleva este, sin preguntar. Antes de mover productos, comprueba en cuál están.
- **Cada producto tarda unos segundos**, y se procesan uno detrás de otro: la app tiene que escribir en Shopify por cada uno. Diez productos son cosa de un minuto; cien, unos diez minutos con la pestaña abierta. Si vas a asignar muchos, hazlo por colección.
## Por colección
Pulsa **Añadir colección** y elige una. A partir de ese momento **todos los productos de esa colección muestran el formulario**, incluidos los que entren en la colección más adelante, ya sea porque los añades a mano o porque una colección automática los capta por sus reglas.
Esto funciona porque la app no toca los productos: apunta el formulario **en la colección**, y la página de producto mira en qué colecciones está cuando se carga. Por eso:
- **Da igual cuántos productos tenga la colección.** Asignar una colección de 5 productos y una de 5.000 cuesta lo mismo y tarda lo mismo: un par de segundos.
- **Quitar la colección** deshace la asignación de golpe para todos sus productos, en la siguiente carga de cada página de producto.
- La tarjeta **Productos asignados** no lista los productos que llegan por colección: solo los que asignaste uno a uno. El contador de la pestaña te dice cuántas colecciones tiene el formulario.
**La colección tiene que estar publicada en Tienda online**
La página de producto solo ve las colecciones disponibles en el canal **Tienda online**. Una colección sin publicar en ese canal no muestra el formulario a sus productos aunque la hayas asignado. Si un producto de una colección asignada no enseña el botón, mira eso primero.
## Qué gana cuando se solapan
Un producto puede estar asignado directamente y, además, pertenecer a una o varias colecciones asignadas. La regla es fija:
1. **La asignación directa del producto gana siempre.** Si un producto está en una colección asignada al formulario A pero tú lo asignaste a mano al formulario B, muestra B.
2. Si no tiene asignación directa, muestra el formulario de **la primera de sus colecciones asignadas**. Cuando un producto está en dos colecciones asignadas a formularios distintos, ese orden lo decide Shopify, no la app, así que no cuentes con él.
En la práctica: usa las colecciones para el grueso del catálogo, y la asignación directa para las excepciones — la montura que necesita otro formulario, o el producto que quieres sacar de la regla general.
## Lo que no cambia
- El formulario tiene que estar **Activo y sincronizado** para aparecer, se asigne como se asigne. Al asignar una colección, la app sincroniza el formulario si hacía falta.
- Los productos sin asignación no muestran el botón, pero tu tema conserva **sus propios botones de compra**. Cómo tratar eso es una decisión tuya: [Controlar cómo se compra cada montura](https://docs.getoptical.app/guias/evitar-compras-sin-configurar/).
- Si borras un formulario, sus asignaciones —productos y colecciones— se limpian con él.
---
# Controlar cómo se compra cada montura
> Tu tema trae sus propios botones de compra. Decide si esa montura se puede llevar sin lentes, y aplica tu decisión en la página de producto, en la barra fija y en los listados.
Source: https://docs.getoptical.app/guias/evitar-compras-sin-configurar/
Language: es
Antes de tocar nada, una decisión que es tuya: **esa montura, ¿se puede comprar sin lentes?**
Las dos respuestas son válidas, y hay ópticas funcionando con cada una. La app no tiene opinión sobre esto: te deja las dos vías abiertas y eliges tú, producto a producto.
| | Cuándo tiene sentido |
|---|---|
| **Solo configurada** | Lo más habitual. La montura se vende con su graduación y nunca suelta |
| **Las dos cosas, a la vez** | Vendes también monturas sueltas, a otros profesionales o a clientes que se pondrán las lentes en su óptica de siempre |
Lo único que no conviene es no haberlo decidido, porque entonces lo decide tu tema por ti. Esta página te enseña a ver qué hace hoy tu página de producto, y a dejarla como tú quieras.
## Los dos caminos de compra
Optical Form añade **su** botón a la página de producto. Los botones de tu tema **siguen ahí**, y hacen algo distinto:
| | Qué hace |
|---|---|
| **Botón de Optical Form** | Abre el formulario, recoge la graduación, añade montura + lentes + tratamientos |
| **Botón de tu tema** | Añade la montura y ya está |
La app **no borra los botones de tu tema**, y es a propósito. En tu catálogo casi seguro hay productos que se venden tal cual —estuches, líquidos, accesorios, gafas de sol sin graduar— y esos **necesitan** su botón de siempre. Quitarlo por nuestra cuenta rompería media tienda.
## La prueba de 30 segundos
Sirve para las dos decisiones, porque no supone nada: solo te dice qué hace hoy tu página de producto.
1. Abre una página de producto que use formulario, **como si fueras un cliente**.
2. **No toques** el botón de Optical Form.
3. Intenta comprar la montura por cualquier otra vía.
- **Si lo consigues y querías que se pudiera** — ya está, tienes los dos caminos abiertos. Salta a [Si quieres los dos botones](#si-quieres-los-dos-botones), que hay un detalle de claridad que sí conviene cuidar.
- **Si lo consigues y no querías** — sigue leyendo. Hay tres sitios por donde se entra, y normalmente solo se cierra el primero.
**Si tu decisión es «solo configurada», tómala antes de abrir**
Un pedido que entra por el botón del tema **parece perfectamente normal**: se paga, aparece en tu panel, el cliente recibe su confirmación. Que le falta la receta se descubre en el taller, días después, con el dinero ya cobrado y el cliente esperando sus gafas.
No es que se rompa nada — es que ese pedido no lleva lo que hace falta para fabricar. Por eso conviene hacer esta prueba **antes** de abrir la tienda al público, y no cuando ya está entrando gente.
## Dónde están los botones de compra directa
Son tres, y vienen activos por defecto en la mayoría de temas modernos. Conviene saber dónde están, hayas decidido lo que hayas decidido:
**1. El botón de compra de la página de producto**
El "Añadir al carrito" de toda la vida, junto al precio y al selector de variantes.
**2. La barra que aparece al bajar**
El más fácil de pasar por alto, porque **no se ve al cargar la página**. Baja del todo en la página de producto: en muchos temas aparece una barra fija abajo con la foto, el precio y un botón de compra. En **Horizon viene activada por defecto**.
**3. La compra rápida de los listados**
En las páginas de colección, muchas tarjetas de producto traen un botón para añadir sin entrar en la página de producto. Ahí el cliente ni llega a ver tu formulario.
**Los tres son puertas distintas**
Cerrar solo el primero es lo que suele pasar. Si tu decisión es que la montura no se venda suelta, los otros dos la siguen vendiendo.
## Si quieres que esa montura solo se venda configurada
La idea es sencilla: **una plantilla de producto aparte**, sin botones nativos, que uses únicamente en los productos que llevan formulario. El resto de tu catálogo se queda como está.
### Paso 1 — Crea la plantilla
1. **Tienda online → Temas → Personalizar**.
2. Arriba, en el selector de plantilla, elige **Producto**.
3. Despliega el selector y pulsa **Crear plantilla**.
4. Ponle un nombre reconocible, por ejemplo `graduadas`. Créala **a partir de** la plantilla de producto que ya usas.
### Paso 2 — Quita las vías de compra directa
Con la plantilla nueva abierta:
- Selecciona el bloque de **botones de compra** y **quítalo** (o desactívalo con el icono del ojo).
- En los **ajustes de la sección** de producto, busca la opción de **barra de compra fija** (en Horizon, *Sticky add to cart*) y **desactívala**.
- Deja el bloque de **Optical Form**, que es el que ahora lleva toda la venta.
Guarda.
### Paso 3 — Asigna la plantilla a tus monturas
En **Productos**, abre cada montura que use formulario y, en la barra lateral derecha, en **Plantilla de tema**, elige `graduadas`. Guarda.
Puedes hacerlo en lote: selecciona varios productos → **Acciones** → cambiar plantilla.
### Paso 4 — La compra rápida de los listados
Esta vive en las **colecciones**, no en la página de producto. En el editor, ve a la plantilla de colección y **desactiva el botón de compra rápida** de las tarjetas.
Si tu tema no deja desactivarlo solo para algunos productos, tendrás que desactivarlo entero, y eso afecta también a los productos que sí se venden sueltos. Es el punto donde más merece la pena parar a valorar: cuánto te aporta ese atajo, frente a cuántas monturas sin graduar se colarían por ahí.
### Paso 5 — Repite la prueba de 30 segundos
Vuelve a intentar comprar sin abrir el formulario. Ahora no deberías poder — ni en la página de producto, ni al bajar, ni desde la colección.
### Compruébalo antes de abrir al público
- [ ] La plantilla nueva no tiene botón de compra en la página de producto
- [ ] La barra fija al bajar está desactivada
- [ ] Las tarjetas de colección no permiten compra rápida
- [ ] Todas las monturas con formulario usan esa plantilla
- [ ] Has intentado comprar sin configurar **y no has podido**
- [ ] Un pedido de prueba llega con la graduación en las propiedades de la línea
Cuando las seis estén marcadas, esa montura solo se vende configurada.
## Si quieres los dos botones
No hay que hacer nada especial: es el estado por defecto. El botón de tu tema y el de Optical Form conviven en la misma página de producto, y el cliente elige.
Lo único que pide esto es **que se entienda cuál hace qué**. Dos botones seguidos que ponen los dos "Añadir al carrito" son una trampa: el cliente pulsa el primero que ve y se lleva una montura pelada creyendo que ha comprado gafas. Eso acaba en devolución, y la devolución es tuya.
- **Ponle nombre al de Optical Form.** En **Tienda online → Temas → Personalizar**, pulsa el bloque **Optical Form** y escribe en *Texto del botón* algo que diga lo que hace: «Configurar con mi graduación», «Añadir lentes graduadas». Ver [El botón del producto](https://docs.getoptical.app/guias/boton-del-producto/).
- **Ponle nombre también al de tu tema**, desde los ajustes de tu tema: «Comprar solo la montura».
- **Que destaque el que quieres que gane.** Si tu venta principal es la graduada, que ese sea el botón de color y el otro más discreto.
**Si vendes en varios idiomas**
Si escribes un texto propio en *Texto del botón*, **ese texto sale igual en todos los idiomas**: deja de traducirse solo. Con una tienda en un idioma da igual; con varios, o lo traduces tú desde el editor de cada idioma, o dejas el campo vacío y usas el texto de la app. Ver [Idiomas y textos](https://docs.getoptical.app/guias/traducciones/).
Y aun con los dos botones, plantéate quitar la **compra rápida de los listados**: ahí el cliente no ve los dos botones ni la diferencia entre ellos, así que la elección que le ofreces no llega a existir.
## Cómo hago…
**…si vendo las mismas monturas con y sin graduación**
Tienes dos formas, y la buena depende de cómo quieras que se vea:
- **Un solo producto con los dos botones** — lo de la sección de arriba. El cliente ve una página de producto y elige ahí mismo. Es lo más directo y lo que menos catálogo te crea.
- **Dos productos distintos** — uno con la plantilla `graduadas` y formulario, otro normal. Es más trabajo, pero te deja poner precios, fotos y textos distintos, y salen por separado en las colecciones y en el buscador.
**…si mi tema no me deja quitar el botón de compra**
Algunos temas no permiten eliminar ese bloque. Entonces la vía es el campo **Custom CSS** de la incrustación de la app, ocultándolo solo en esa plantilla. Escríbenos y te pasamos la regla para tu tema.
**…si quiero comprobarlo sin publicar**
Duplica el tema, haz los cambios en la copia y previsualízala. Recuerda que la Guía de configuración de la app mira **el tema publicado**, así que los pasos de la incrustación y del bloque seguirán marcados sobre el que tengas en vivo.
---
# Graduación y receta
> Qué significa cada valor de una receta, cómo se captura por ojo y cómo llega al pedido para tu laboratorio.
Source: https://docs.getoptical.app/guias/graduacion/
Language: es
Si vienes de Shopify y no de la óptica, empieza por el glosario. Configurar bien este paso es mucho más fácil cuando sabes qué le estás pidiendo al cliente.
## Glosario: qué es cada valor
Una receta de gafas es una lista de números, uno por cada ojo. Esto es lo que significan:
| Abreviatura | Nombre | Para qué sirve |
|---|---|---|
| **OD** | Ojo derecho | Del latín *oculus dexter*. Es el derecho en cualquier país |
| **OI** / **OS** | Ojo izquierdo | En español **OI**; en inglés se escribe **OS** (*oculus sinister*) |
| **ESF** / **SPH** | Esfera | La corrección principal. **Negativa** para miopía (ve mal de lejos), **positiva** para hipermetropía (ve mal de cerca) |
| **CIL** / **CYL** | Cilindro | Corrige el astigmatismo: la córnea no es del todo redonda y la imagen sale deformada. Suele ser negativo, y puede ser 0 |
| **EJE** / **AX** | Eje | En qué ángulo va colocado ese cilindro, de 0 a 180 grados. Solo tiene sentido si hay cilindro |
| **ADD** | Adición | Potencia extra para ver de cerca. Aparece en progresivas y bifocales, a partir de los cuarenta y pico. Siempre positiva |
| **DIP** / **PD** | Distancia interpupilar | Los milímetros entre el centro de una pupila y la otra. Sirve para centrar las lentes delante de los ojos. En adultos suele estar entre 54 y 74 mm |
Las dioptrías se miden de 0,25 en 0,25. Por eso los desplegables saltan así: `-1.00`, `-1.25`, `-1.50`…
**Por qué importa que el cliente lo copie bien**
Estos números se fabrican tal cual. Un cliente que se equivoca de signo, o que cambia el ojo derecho por el izquierdo, recibe unas gafas con las que no ve. Por eso conviene incluir un paso de resumen para que confirme antes de pagar.
## Los dos tipos de paso
- **Graduación (Rx)** — receta completa, con todos los valores de arriba. Para gafas graduadas de verdad.
- **Receta de lectura (rejilla)** — solo una ampliación (`+1.00`, `+1.50`…). Para gafas de lectura premontadas, las que se venden ya hechas y no llevan receta.
## Paso Graduación (Rx)
Captura los valores de cada ojo: **OD** (derecho) y **OI** (izquierdo).
### Rangos de cada campo
Cada campo tiene **Mín**, **Máx** y **Paso** configurables. Ajústalos a lo que tu laboratorio pueda fabricar: si no trabajas graduaciones por debajo de -8, ponlo de mínimo y el cliente no podrá pedirlas.
- **Mostrar campo ADD** — actívalo solo si vendes progresivas o bifocales. En gafas normales sobra y confunde.
### El eje se activa con el cilindro
Los tres valores de cada ojo —esfera, cilindro y eje— arrancan **vacíos**. No en `0.00`: un cero es un valor clínico real, quiere decir «sin astigmatismo», y no puede confundirse con «esto todavía no lo he rellenado».
El campo de **eje** arranca además **desactivado**, en gris y sin poder tocarse. Se activa solo cuando el cliente escribe un cilindro distinto de cero, porque un eje sin cilindro no significa nada: es el ángulo de algo que no existe. Si el cliente vuelve atrás y quita el cilindro, el eje se vacía y se desactiva otra vez.
Y al revés: **si hay cilindro, el eje es obligatorio.** La app no deja pasar de paso hasta que se rellene.
**El cilindro también puede venir en positivo**
En España las recetas suelen traer el cilindro en negativo, pero buena parte de Europa lo escribe en positivo, y las dos notaciones son igual de válidas. El eje se activa con **cualquier** cilindro distinto de cero, tenga el signo que tenga.
Esto no se configura en ninguna parte: funciona así siempre, en todos los formularios.
### Distancia interpupilar
- **Mostrar DIP** — añade la captura de la distancia interpupilar.
- **Cómo la introduce el cliente** — *campo libre* (escribe el número; es lo de siempre) o *desplegable con los valores admitidos*. El desplegable evita erratas y valores que tu laboratorio no fabrica; el campo libre es más rápido para quien se sabe su DIP. Empieza en «—»: nadie tiene una DIP por defecto.
- **Rangos en mm** — el valor único (por defecto 40 a 85, de 0,5 en 0,5) y el valor por ojo (20 a 45). Son a la vez lo que ofrece el desplegable y lo que acepta el campo libre: un cliente que escriba 6 en vez de 63 recibe un aviso, no un pedido imposible.
- **DIP único o por ojo** — un solo número (lo habitual), o uno por ojo. El cliente lo cambia con un interruptor.
- **Mensajes de validación** — qué se le dice si lo deja vacío.
**Por defecto, lo sencillo**
El interruptor de DIP por ojo arranca **desactivado**: el cliente escribe un único número salvo que lo active. La mayoría de recetas traen un solo valor, así que el caso común queda con menos fricción.
### El cliente tiene ayuda en cada campo
Tu cliente no es óptico. Tiene la receta en la mano y no sabe qué es un cilindro, ni si el eje va con signo, ni cuál de los números es la distancia interpupilar. Por eso cada campo del paso lleva un pequeño **«?»** a la derecha de su etiqueta —ESF, CIL, EJE, ADD y el título de la DIP— que al pasar el ratón, tocarlo o llegar con el teclado abre una explicación corta, en palabras llanas: qué es ese valor, qué signo lleva y dónde encontrarlo en la receta.
Viene activado en todos los formularios, con textos ya escritos en el idioma de tu tienda. No tienes que hacer nada.
Lo que sí puedes hacer:
- **Desactivarlo** — en la configuración del paso, desmarca *Mostrar un icono de ayuda junto a cada campo de la receta*. Desaparecen los cinco «?» a la vez.
- **Reescribir los textos** — en *Etiquetas y traducciones* del mismo paso, bajo *Textos de ayuda*. Cada campo aparece vacío con el texto por defecto **en gris, en el idioma de tu tienda** — el mismo que lee tu cliente. Escribe encima si quieres decirlo a tu manera —por ejemplo, con la notación que usa tu laboratorio— y **si vacías el campo, vuelve al texto por defecto** (cómo funciona, en [Idiomas y textos](https://docs.getoptical.app/guias/traducciones/)). Los textos de ADD y DIP solo aparecen si tienes esos campos activos.
- **Traducirlos** — como el resto de etiquetas, desde la pestaña de cada idioma. Ver [Idiomas y textos](https://docs.getoptical.app/guias/traducciones/).
Los «?» usan los mismos ajustes de color, tamaño y fondo que los de las opciones del formulario. Se cambian en [Diseño y carrito](https://docs.getoptical.app/guias/diseno-y-carrito/), sección *Ayuda emergente*.
### Y una receta de ejemplo
Arriba a la derecha del paso hay un enlace, **«¿Cómo leer tu receta?»**, que abre una receta de ejemplo montada con **tus propias etiquetas**: dos ojos con ESF, CIL y EJE (y ADD si lo tienes activo), y la DIP debajo. El cliente toca una columna y la app la resalta y le explica ese valor con el mismo texto de ayuda del «?» correspondiente. Es lo que más ayuda a quien tiene la receta en papel delante: ve dónde está cada número en un ejemplo que se parece al suyo.
Viene activado. Se desactiva en la configuración del paso (*Mostrar un enlace «¿Cómo leer tu receta?»…*), y el texto del enlace, el título sobre el ejemplo y el texto de ayuda de debajo se reescriben en *Etiquetas y traducciones*, bajo *Guía con receta de ejemplo*. Las explicaciones son las mismas de los «?»: si cambias una, cambia en los dos sitios.
### Cambiar las etiquetas
Todo el texto del paso se puede reescribir sin tocar código. Antes de hacerlo lee **[Idiomas y textos](https://docs.getoptical.app/guias/traducciones/)**: los campos vienen rellenos en inglés y eso tiene truco.
## Paso Resumen de graduación
Muestra al cliente la receta que acaba de introducir **antes** de añadir al carrito: una tabla con tus etiquetas de cabecera (ESF, CIL, EJE y ADD si la hay), una fila por ojo y la DIP debajo — el mismo dibujo que la receta de ejemplo del paso anterior, para que no tenga que adivinar en qué orden van los números.
Ponlo siempre que captures recetas completas. Es la última oportunidad de que el cliente detecte un error suyo, y te ahorra devoluciones.
Si el cliente **subió una foto** de su receta en vez de teclearla, el resumen le enseña **la imagen**, no solo el nombre del archivo. Es la diferencia entre confirmar `receta.png` y confirmar los números que se van a fabricar: un archivo equivocado —el recibo del gimnasio, una captura de otra cosa— se ve al instante. Si lo que subió es un **PDF**, que no se puede dibujar, aparece un icono de documento con el nombre y el peso.
## Paso Receta de lectura (rejilla)
Para gafas de lectura premontadas, donde el cliente solo elige una ampliación.
- **Valor mínimo**, **máximo**, **paso** y **columnas** de la cuadrícula.
- **Prefijo del valor** — normalmente `+`, para que se lea `+1.50`.
- Vista previa en vivo de cuántos valores genera.
## Cómo llega la receta al pedido
Cuando el cliente añade al carrito, la receta viaja **dentro del pedido de Shopify**, junto al producto. La ves en el detalle del pedido, en tu admin de siempre, y viaja también a lo que mandes a tu laboratorio.
Se escribe una línea por ojo, con cada valor **precedido de la etiqueta de su campo** —las tuyas, en el idioma del cliente— para que cualquiera la lea sin saber en qué orden van los números:
```
Tipo de gafas: Gafas graduadas
Tipo de lente: Lentes finas estándar
OD: ESF -2.50 · CIL -1.25 · EJE 90° · ADD +1.50
OI: ESF -3.00 · CIL 0.00 · EJE — · ADD +2.00
DIP: 63
```
Un ojo sin cilindro no lleva eje: se imprime `EJE —`, igual que la adición cuando solo la lleva un ojo — nunca un `0°` inventado que un óptico leería como un eje real. Es la misma línea que ve el cliente en el carrito, en el checkout y en el correo de confirmación.
Si tienes una integración con tu software de gestión, la misma receta viaja además en la propiedad oculta que acordaste con él, con el formato que ese software espera (ahí un eje vacío sí va como `0`, porque es lo que pide su contrato). Ver [Integración](https://docs.getoptical.app/desarrolladores/integracion/).
**La receta no se puede quitar del pedido**
Hay una casilla para excluir pasos del carrito, pero **no aparece en los pasos que llevan la receta** ni en la subida de foto. Un pedido de gafas graduadas sin graduación no se puede fabricar, así que la app no te deja llegar a esa situación ni por error.
Lo que sí decides es si el **cliente** ve esos valores. Mira [Diseño y carrito](https://docs.getoptical.app/guias/diseno-y-carrito/).
Si el cliente sube una foto de su receta en vez de teclearla, en el pedido aparece el nombre del archivo. Ver [Subir la receta](https://docs.getoptical.app/guias/subir-receta/).
---
# Subida de archivo
> Deja que el cliente adjunte su receta como imagen o PDF.
Source: https://docs.getoptical.app/guias/subir-receta/
Language: es
El paso **Subida de archivo** permite al cliente adjuntar su receta (foto o PDF) en lugar de escribir los valores a mano. Ideal como alternativa al paso de [Graduación](https://docs.getoptical.app/guias/graduacion/) o como complemento.
## Configuración
- **Tipos de archivo aceptados** — extensiones separadas por coma, ej. `.jpg,.png,.pdf`.
- **Tamaño máximo (MB)** — límite de peso del archivo.
## Zona de subida
Todo el texto es editable: el texto principal de la zona de arrastre, el texto secundario (hint), el botón de explorar, y los textos del estado con archivo seleccionado (**Cambiar archivo** / **Quitar archivo**).
## Validación
Mensajes personalizables para:
- **Archivo obligatorio** — cuando el paso es obligatorio y no se adjunta nada.
- **Archivo demasiado grande** — usa `{maxSize}` como marcador en el texto.
- **Tipo de archivo no permitido** — usa `{types}` como marcador.
## En el resumen
Puedes definir el **texto de la etiqueta del pie** que representa el archivo subido en el carrusel de selecciones y en el resumen.
Si el paso de subida va dentro de un paso de **Graduación** y detrás pones un [Resumen de graduación](https://docs.getoptical.app/guias/graduacion/#paso-resumen-de-graduación), ahí el cliente ve **la imagen que subió**, no solo su nombre. Con un PDF aparece un icono de documento con nombre y peso. No hay que activar nada.
---
# Complementos, colores, accesorios y acciones externas
> Las formas de vender extras, ofrecer colores dentro de una opción y llevar opciones fuera del carrito.
Source: https://docs.getoptical.app/guias/accesorios-y-addons/
Language: es
Optical Form tiene cuatro mecanismos para cobrar extras y dirigir al cliente más allá de una simple selección. Es importante no confundirlos.
## Complementos (por opción)
Un **complemento** es un producto de Shopify vinculado a **una opción concreta**. Cuando el cliente elige esa opción, el complemento se añade al carrito como **línea separada** y suma su precio al total en vivo.
- Se configuran en la sección **Complementos** de cada opción.
- Cada complemento tiene una **cantidad** — pon **2** para artículos que se facturan por pares (ej. lentes).
- **Su precio es el suplemento**, no el total: la montura ya tiene el suyo. Ver [Precios y cobro](https://docs.getoptical.app/guias/precios-y-cobro/).
- Ejemplos típicos: el tipo de lente, un tratamiento (antirreflejante, filtro azul), un servicio de montaje.
**Crea productos para los complementos**
Los complementos son productos reales de Shopify. Créalos para tipos de lente, tratamientos y servicios con el estado **No listado** (se pueden comprar, pero no aparecen en colecciones ni en el buscador; un producto sin publicar o en borrador **no se puede añadir al carrito**), y luego vincúlalos. Así Shopify los factura, los incluye en el pedido y los envía a tu laboratorio.
**Los complementos pertenecen a esta tienda**
Un complemento guarda el identificador que Shopify le da a ese producto **en tu tienda**, y ese número no existe en ninguna otra. Por eso los complementos **no se copian** al exportar un formulario a otra tienda, y por eso la plantilla de ejemplo viene sin ellos: los vinculas tú con tus productos. Lo explicamos en [Copiar un formulario a otra tienda](https://docs.getoptical.app/guias/copiar-formulario/).
**Los complementos se cobran todos; los colores, solo el elegido**
Si vinculas como complementos **varias variantes del mismo producto** —gris, ámbar y verde de un mismo tinte—, el cliente que elija esa opción se lleva **las tres** al carrito y paga las tres. Casi siempre lo que querías era que **eligiera una**: para eso están los [colores seleccionables](#colores-seleccionables-por-opción). El editor lo detecta y te lo propone con un aviso y un botón, **Convertirlos en colores seleccionables**; se abre el selector con esas variantes ya marcadas y, al confirmar, pasan de complementos a colores. Si cancelas, no cambia nada.
## Colores seleccionables (por opción)
Una opción puede llevar una **fila de muestras de color** debajo: perfecta para lentes polarizadas, tintadas o fotocromáticas que se fabrican en varios colores. El cliente toca un color y **solo ese color se cobra** — a diferencia de los complementos, que se suman todos, los colores son alternativas. Tocar la tarjeta sin elegir color solo la **abre** (borde discontinuo y la frase «Elige un color para continuar»): la opción cuenta como elegida cuando el cliente toca un color.
- Se configuran en la sección **Colores seleccionables** de cada opción, con el mismo selector de productos que los complementos: **cada color es una variante de Shopify**, con su SKU y su precio. Así Shopify lo factura, lo incluye en el pedido y tu laboratorio recibe la referencia exacta del color elegido.
- Cada color tiene un **nombre** (lo que lee el cliente, traducible como cualquier otro texto) y una **muestra**, que es la **imagen de la propia variante**: ponle a cada variante de color su foto de muestra en Shopify y no hay nada más que configurar. Solo si una variante no tiene imagen se usa el campo de color CSS — `#8b5a2b`, o un degradado como `linear-gradient(#555, #ddd)`.
- Si los colores tienen precios distintos, la tarjeta muestra el más barato hasta que el cliente elige — nunca anuncia menos de lo que se puede acabar pagando.
- Al pasar por una muestra de color aparece su **nombre** (y el recargo, si lo dejas activado en Diseño › Opciones); si los colores cuestan distinto, la tarjeta dice «Desde» hasta que el cliente elige.
- El cliente **no puede continuar sin elegir color**: una opción con colores y sin color es una elección a medias, y el pedido saldría sin la referencia que tu laboratorio necesita.
- Cada opción —y cada grupo de colores— admite un **texto de ayuda**: aparece un «?» junto al título que el cliente abre para leer una explicación más larga. Ver [Crear un formulario](https://docs.getoptical.app/guias/crear-formulario/#anatomía-de-una-opción).
**¿Complemento o color?**
Usa un **complemento** para algo que la opción siempre incluye (un tratamiento, un servicio). Usa **colores** cuando la opción se fabrica en varias versiones y el cliente debe elegir exactamente una.
**Lo agotado se ve antes de elegirlo**
Al abrir el configurador, la app consulta el stock de todos los complementos, colores y accesorios del formulario. Lo que no se puede vender —una variante con seguimiento de inventario a 0 que no admite pedidos sin stock, un producto en borrador o archivado, un producto que **no está en el canal Tienda online**, o uno que se ha eliminado de Shopify— se muestra **desactivado con «Agotado»**: la tarjeta de la opción, la del accesorio, y en los colores la muestra de color **tachada**, como en el selector de variantes de tu tema. El cliente no puede elegirlo y, si ya lo tenía elegido —de una visita anterior, o porque lo eligió antes de que llegara la respuesta del stock—, se le quita y el panel se lo dice: **«X ya no está disponible. Vuelve atrás y elige otra opción.»** Si ese paso exige una respuesta, no puede seguir ni añadir al carrito hasta que elija otra. En **Diseño › Opciones** puedes preferir **ocultarlo** en vez de desactivarlo; si ocultar dejara un paso sin nada que elegir, se muestran desactivados igualmente. Un producto **No listado** sigue vendiéndose: solo desaparece de colecciones y buscador.
El editor te avisa de lo mismo desde tu lado, sin que pulses nada: al abrir la pestaña **Pasos** comprueba los productos del formulario y pone una etiqueta junto al complemento, color o accesorio afectado — «Agotado», «Borrador», «No está en Tienda online» o «Eliminado». Si alguno está en borrador, archivado o fuera del canal Tienda online, además sale un aviso rojo encima de los pasos, **«Productos de este formulario que no se pueden añadir al carrito»**, con cada producto y su motivo: mientras siga así, Shopify rechazaría el pedido entero de quien lo eligiera. Cómo arreglarlo: [poner un producto en el canal Tienda online](https://docs.getoptical.app/empezar/antes-de-empezar/#cómo-poner-un-producto-en-el-canal-tienda-online). **Comprobar precios** enseña la misma lista.
**¿Grupos de colores? Un producto por grupo**
¿Quieres colores agrupados — Classic, Fashion, Gradient — como en las grandes tiendas de gafas? Crea **un producto de Shopify por grupo** («Tinte Classic», «Tinte Fashion», «Tinte Gradient»), cada uno con sus variantes de color, y vincula las variantes de los tres **bajo la misma opción**. La app detecta que vienen de productos distintos y convierte la opción en un **desplegable**: al elegirla se abren los grupos, uno por producto, cada uno con su **título** (el nombre del producto, editable y traducible), una **descripción** opcional y sus colores. Si los grupos cuestan distinto, cada uno enseña su precio y la cabecera de la opción no enseña ninguno; si cuestan igual, el precio va en la cabecera. El cliente toca el color que quiere: un solo gesto elige el grupo y el color, y al pedido va solo esa variante.
## Accesorios / cross-sell (paso propio)
Un paso de tipo **Accesorios (cross-sell)** ofrece productos extra **opcionales** en su propio paso: estuches, limpiadores, cordones, etc.
- **Seleccionar productos** — elige los que se ofrecen como cross-sell.
- **Mostrar opción de saltar** — muestra una tarjeta "Continuar sin accesorios". Si está activa, el paso es opcional aunque esté marcado como *Obligatorio*.
- Etiquetas editables: etiqueta y descripción de saltar, error de selección y etiqueta de resumen.
**Diferencia clave:** un complemento depende de elegir una opción; un accesorio es un paso independiente de venta cruzada.
Un accesorio agotado se muestra desactivado con «Agotado» (u oculto, según Diseño › Opciones), igual que los complementos y los colores: ver la nota de arriba.
## Acción externa (por opción)
En lugar de añadir una opción al carrito, puedes convertirla en una **acción externa**: muestra un mensaje y un botón personalizados.
- **Mensaje** — ej. "Solo en tienda".
- **Texto del botón** — ej. "Reservar una cita".
- **URL del botón** — admite `https://`, y también `tel:`, `mailto:`, `sms:` y `https://wa.me/`.
Útil para productos solo disponibles en tienda física, reservas de cita o enlaces de contacto directo (WhatsApp, teléfono, email).
---
# Precios y cobro
> De dónde sale cada euro del total, por qué el precio del complemento es el suplemento y no el total, y los errores que hacen cobrar de más o de menos.
Source: https://docs.getoptical.app/guias/precios-y-cobro/
Language: es
Esta página explica **de dónde sale cada euro** que ve el cliente. Si algún total no te cuadra, la respuesta está aquí.
## La fórmula
```
Total = precio de la montura
+ precio de cada addon elegido × su cantidad
+ accesorios que añada el cliente
```
Nada más. No hay márgenes ocultos ni cálculos propios de la app: **cada línea es un producto de Shopify con su precio**, y el total es la suma.
Por eso el total del formulario y el del carrito siempre coinciden — es el mismo cálculo.
## 🔴 El complemento es el suplemento, no el total
El error más caro, y el más fácil de cometer.
La montura **ya tiene su precio**. Cuando creas el producto "Lente fina 1.60", su precio debe ser **lo que cobras de más** por esa lente, no lo que vale el conjunto.
| Montura | Lente fina | El cliente paga |
|---|---|---|
| 100 € | **15 €** ✅ | 115 € |
| 100 € | ~~115 €~~ ❌ | 215 € |
Suena obvio escrito, pero es fácil pensar en "gafa completa" al crear el producto. La regla sencilla: **si la montura sola vale 100 €, tus complementos son lo que sumas a esos 100 €**.
## Lo que va incluido: créalo a 0 €
Puede parecer inútil crear un producto que vale 0 €, pero tiene dos motivos:
1. **El cliente ve "Incluido"** en vez de un hueco vacío. Comunica valor: la lente estándar entra en el precio.
2. **La línea llega al pedido**, y tu laboratorio sabe qué lente montar. Sin producto, esa información no viaja a ninguna parte.
Ejemplo típico: *Lente monofocal estándar 1.50 — 0,00 €*.
**Cambiar la etiqueta**
Si prefieres que ponga otra cosa en vez de "Incluido", se cambia en **Apariencia → Etiqueta de incluido**. Déjala vacía y se usa el texto traducido de la app.
## Cantidad: el caso de las lentes
Cada complemento tiene una **cantidad**. Por defecto 1.
Las lentes se venden **por pares**, así que si el precio de tu producto es *por lente*, pon **cantidad 2**. Si el precio ya es el del par, déjala en 1.
Las dos formas valen. Lo que no vale es mezclarlas sin darte cuenta: decide una y aplícala a todas tus lentes.
## 🔴 El distintivo no cobra
En cada opción puedes poner un **distintivo informativo**: un texto pequeño junto al nombre.
> **Es solo texto. No suma nada al total.**
Si escribes `+30 €` en el distintivo pero no vinculas un complemento, el cliente **verá 30 € y pagará 0 €**. Es un error silencioso: nada falla, simplemente cobras de menos, y lo descubres cuadrando caja.
**Úsalo para cosas que no son precio** —"Solo en tienda", "Más vendido", "Nuevo"— y deja que los precios los muestre el complemento, que es el que cobra de verdad.
## Qué ve el cliente mientras elige
- **El total se actualiza en vivo** con cada selección.
- Las opciones con complemento muestran su suplemento; las de 0 € muestran "Incluido".
- El suplemento se lee **«+70,00 €»** por defecto. Puedes cambiar cómo se escribe en **Diseño → Textos de la interfaz → Precios y resumen → Suplemento de una opción**, por idioma: `{price} extra` da «70,00 € extra» y `Añade {price}` da «Añade 70,00 €». Se aplica en la tarjeta y en los colores con recargo. Sin el «+», el cliente puede leer el importe como el precio total: si lo que quieres es enseñar el total, usa el modo **Precio total** en la opción o en el paso; y si quieres el precio de la opción sin signo, **Solo el precio de la opción** ([los cuatro modos](#el-precio-de-cada-tarjeta-cuatro-modos)).
- Puedes ocultar los precios por opción en **Apariencia → Mostrar ajustes de precio**, si prefieres enseñar solo el total.
- En el modo **Precio de partida** (la tarjeta enseña lo que costaría el conjunto, no el suplemento), la palabra **«Desde»** solo aparece en las opciones desde las que el precio **aún puede subir**: porque les sigue un tratamiento con precio, un color con recargo, unas lentillas o un paso de accesorios. Una opción que termina el formulario, o a la que solo le siguen pasos gratuitos, enseña su total sin «Desde». No hay nada que configurar: la palabra sigue a cada opción.
### El precio de cada tarjeta: cuatro modos
Qué importe enseña la tarjeta de una opción lo eliges tú en el editor del formulario: en cada paso, el desplegable **Precio que se muestra en las opciones**; y si una opción necesita otra cosa que el resto de su paso, en esa opción, **Precio que se muestra en esta opción**. Con una montura de 85 € y una opción cuyo complemento cuesta 25 €:
| Modo | La tarjeta dice | Qué cuenta |
|---|---|---|
| **Solo el coste añadido** | «+25,00 €» | Lo que esa opción suma. Es el por defecto. |
| **Precio de partida** | «Desde 110,00 €» | La montura, lo elegido hasta ahí, la opción y lo más barato que quede por elegir. Para un primer paso que reparte caminos. |
| **Precio total** | «110,00 €» | La montura, lo elegido hasta ahí y la opción. Para un paso tras el que ya no se cobra nada. |
| **Solo el precio de la opción** | «25,00 €» | Solo lo que cuesta esa opción: sin el «+», sin la montura y sin lo elegido en pasos anteriores. |
**Solo el precio de la opción** es para los pasos en los que cada opción se lee como un producto con su precio —un paquete de lentes de 59 €— y no como un extra. Se nota sobre todo cuando un paso anterior ya ha cobrado algo: con un recargo de 35 € por montaje al espacio elegido antes, **Precio total** enseña ese paquete como «94,00 €» (suma lo ya elegido, para coincidir con el total del pie) y **Solo el coste añadido** como «+59,00 €». Con **Solo el precio de la opción** dice «59,00 €», y el recargo se queda en su paso y en el total.
Tres detalles de ese modo:
- Una opción de 0 € sigue mostrando "Incluido", igual que en **Solo el coste añadido**.
- Si la opción lleva colores con recargos distintos, dice «Desde» hasta que el cliente elige uno.
- El texto del suplemento que hayas escrito en Diseño no se aplica: la tarjeta enseña el importe solo.
El modo solo decide **lo que se lee en la tarjeta**. El total del pie, el carrito y lo que se cobra son los mismos en los cuatro.
## En el carrito
La montura y cada extra son **líneas separadas**, agrupadas visualmente bajo la montura:
```
Montura Archer ......................... 100,00 €
└ Lente monofocal fina 1.60 ........... 15,00 €
└ Antirreflejante premium ............. 30,00 €
Total 145,00 €
```
Las líneas de complemento **no tienen selector de cantidad ni botón de borrar**: son parte del conjunto. Al eliminar la montura desaparecen todas.
Que sean líneas separadas no es un detalle estético: es lo que permite que Shopify facture cada concepto, lo desglose en el pedido y lo envíe a tu laboratorio.
## Descuentos e impuestos
- Los **descuentos automáticos** y los códigos funcionan con normalidad, pero muchos se aplican **en el checkout**, no en el carrito. Que el total del carrito no muestre el descuento no significa que no vaya a aplicarse.
- Los **impuestos** siguen la configuración de tu tienda, como en cualquier otro producto.
- Si vendes en **varios países o monedas** (Shopify Markets), el formulario enseña los precios **del mercado del visitante**: la montura y también cada suplemento, con el ajuste de precio o la moneda que tengas en ese mercado. Así el total coincide con el carrito y el checkout de ese país. No hay nada que configurar: se activa solo cuando la tienda vende en más de un país. Compruébalo desde el mismo país que tu cliente, o con el selector de país de tu tema.
## Comprobación antes de abrir
Haz un pedido de prueba tú mismo y comprueba las tres cosas:
- [ ] El total del formulario **coincide** con el del carrito
- [ ] El total del carrito **coincide** con el del checkout
- [ ] El pedido en tu panel trae **cada extra como su propia línea**, con su precio
Si los tres cuadran, el cobro está bien montado.
## Cómo hago…
**…que un tratamiento sea gratis solo en algunas monturas**
Crea dos formularios, uno con el complemento a 0 € y otro con el precio normal, y asigna cada uno a su grupo de productos.
**…subir el precio de un tratamiento**
Cambia el precio del producto en Shopify. No hace falta tocar el formulario ni volver a sincronizar: el complemento apunta al producto, y el precio lo pone el producto.
**…que un paquete de lentes enseñe su precio, sin «+» y sin sumarle nada**
En el paso de los paquetes, pon **Precio que se muestra en las opciones** en **Solo el precio de la opción** y guarda. Cada tarjeta dirá lo que cuesta ese paquete; el total del pie sigue sumando la montura y lo elegido antes.
**…ver cuánto me deja cada extra**
Como son productos reales de Shopify, salen en tus informes de ventas por producto igual que cualquier otro artículo.
---
# Diseño y carrito
> Personaliza colores, tipografía, comportamiento y qué datos del formulario se muestran en el carrito.
Source: https://docs.getoptical.app/guias/diseno-y-carrito/
Language: es
La pestaña **Diseño** de cada formulario controla su apariencia, su comportamiento y qué información llega al carrito. Cada sección gobierna una zona concreta del panel.
## Comportamiento
Activa o desactiva secciones del panel:
- **Mostrar ajustes de precio** — muestra la diferencia de precio junto a cada opción (ej. `+$10.00`).
- **Mostrar barra de progreso** — indica cuánto le queda al cliente.
- **Mostrar paso de resumen** — añade un último paso de revisión antes de añadir al carrito.
- **Mostrar el total en el botón Siguiente** — muestra el total acumulado en cada paso, no solo al final.
## Panel
Posición y forma del panel: **anchura** (px), **posición** (derecha / izquierda / pantalla completa), **opacidad del fondo** (%) y **radio del borde** (px).
### Pantalla completa (escritorio)
Con la posición en **Pantalla completa**, en escritorio el configurador ocupa toda la pantalla dividida **a partes iguales**: a la izquierda, la **imagen del producto** — con el nombre y la variante — y el **resumen en vivo** de lo que el cliente lleva configurado, con su total; a la derecha, los pasos. Si el cliente cambia de variante dentro del formulario (un color de montura, un pack), la foto y el nombre de la izquierda cambian con él.
**Ancho máximo** (visible al elegir esta posición): en 0 el área usa toda la pantalla; por encima de 0 el contenido se centra y lo que sobra se convierte en márgenes laterales — para que en un monitor muy ancho el configurador no se desparrame.
**Fondo de la columna de la imagen** (también solo en esta posición): el color de toda la mitad izquierda — foto, resumen y su margen lateral. Vacío sigue al fondo de las tarjetas.
**Animación de entrada**: la pantalla completa no entra deslizándose como el panel lateral; aparece con un fundido y un gesto corto que eliges aquí — zoom, subida, dos mitades (la foto desde la izquierda y los pasos desde la derecha) o solo el fundido. Quien tiene activado «reducir movimiento» en su dispositivo ve siempre el fundido a secas — y lo mismo en el panel lateral: aparece con un fundido en vez de deslizarse, y los pasos cambian sin desplazarse. No hay que configurar nada: la app obedece la preferencia del dispositivo del cliente.
En **móvil se mantiene el panel lateral** de siempre: una pantalla partida necesita anchura para existir. No cambia nada más — mismos pasos, mismos precios, mismo carrito.
**Accesibilidad**: el panel es un diálogo modal de verdad. Mientras está abierto, el resto de la página queda inerte para el teclado y los lectores de pantalla; el foco entra al abrir, no se escapa con Tab y vuelve al botón al cerrar. La barra de progreso anuncia en qué paso va («paso 2 de 5»), todo lo enfocable lleva un anillo de foco de dos capas que se ve sobre cualquier color de fondo, y el botón «Atrás» del navegador retrocede un paso (en el primero, cierra el panel sin salir de la página de producto). No hay nada que configurar.
## Ayuda emergente
Cada opción (y cada grupo de colores) admite un **texto de ayuda**: si lo rellenas, aparece un «?» junto al título que el cliente abre para leer una explicación más larga, con lo que la descripción puede quedarse en una línea. Se muestra al pasar el ratón o al pulsarlo, y se cierra tocando fuera.
Esta sección viste esa burbuja, los «?» de [los campos de la receta](https://docs.getoptical.app/guias/graduacion/#el-cliente-tiene-ayuda-en-cada-campo) **y** la ayuda emergente con el nombre de cada color: **fondo** y **texto** (vacíos, siguen a los colores del formulario: blanco y negro por defecto, con un borde fino), **radio** (0 por defecto), **relleno** horizontal y vertical, **tamaño de letra**, **ancho máximo** de la burbuja de ayuda (0 = tan ancha como la columna de texto) y **color y tamaño del icono «?»**.
Si no quieres que la ayuda emergente del color diga también el recargo («Gris (+€80,00)»), desactívalo en **Diseño › Opciones › Mostrar el recargo en la ayuda emergente del color**: queda solo el nombre, y el precio sigue bajo la fila al elegir un color.
## Plantilla de diseño
Un aspecto completo en un clic, antes de tocar nada más:
- **Clásica** — el panel de siempre, pegado al borde y compacto.
- **Moderna** — más espacio, esquinas suaves, bordes finos y una escala de tipografía pensada; el panel flota como una tarjeta separada del borde. Es la que traen los formularios de ejemplo.
- **Oscura** — la misma disposición que Moderna sobre fondo carbón, tarjetas grafito, tinta clara y acento bermellón. Pensada para gafas de sol y monturas premium: un configurador que parece parte del producto. Es la única plantilla que **trae sus propios colores**.
Clásica y Moderna cambian espaciado, esquinas y tamaños de texto, **nunca tus colores**. Oscura sí los escribe al elegirla, y al volver a otra plantilla los devuelve a los valores por defecto — el panel te avisa si has cambiado algo desde que la aplicaste, con un botón para volver a aplicarla.
Para un panel oscuro conviene usar los iconos del juego `on-dark/` del [pack de iconos](https://docs.getoptical.app/guias/iconos/): sobre fondo oscuro, los de fondo claro desaparecen.
## Colores
**Acento**, **texto sobre acento**, **fondo**, **texto**, **texto atenuado** y **bordes** — para encajar con tu marca. Por defecto usan un acento neutro.
## Tipografía
Tamaños y grosores para **encabezado**, **título del paso**, **descripción del paso**, **texto de las opciones** (título, descripción, precio y grosor del precio) y las **ventajas**. Bajo el título del paso, **Separación entre título y descripción** (8 px por defecto) mueve solo ese hueco; la distancia de la cabecera a las opciones no cambia.
Las ventajas vienen en **automático**: se colocan un punto por debajo de la descripción de la opción y la siguen si la cambias, que es lo que mantiene la jerarquía de la tarjeta. Dales un tamaño propio solo si lo necesitas; el deslizador a cero vuelve a automático.
## Opciones
Estilo de cada tarjeta: **padding** horizontal/vertical, **separación** entre opciones, **grosor del borde**, **tamaño de imagen** y la **etiqueta para opciones gratuitas** ("Incluido"). En un paso donde ninguna opción tiene precio —cómo nos envías la graduación, por ejemplo— las tarjetas no muestran esa etiqueta: «Incluido» solo aparece junto a un recargo. Y el espacio dentro de la tarjeta: **espacio a la derecha del texto** antes del precio (24 px en escritorio y 0 en móvil por defecto), **separación entre el título y la descripción** de la opción (2 px por defecto) y **espacio sobre las ventajas** (12 px por defecto). También el **hueco entre la imagen y el texto** y el **redondeo de la imagen** de la opción; el **encaje de la imagen**: **Entera** (por defecto) la enseña completa dentro de su cuadrado, y si no es cuadrada quedan márgenes; **Recortar para llenar** ocupa todo el cuadrado y corta los bordes, útil con fotos; las **ventajas** (relleno, forma píldora / redondeada / recta y separación entre ventajas); la **separación entre las muestras de color**; y la **tarjeta de accesorio** (su relleno y el hueco de la imagen al texto). Todos vienen por defecto con los valores que el panel usaba hasta ahora: no cambia nada hasta que los toques. La excepción es el encaje: antes la imagen se recortaba siempre, y ahora por defecto se ve entera. Con una imagen cuadrada, que es lo habitual, se ve igual.
Para las opciones con [colores seleccionables](https://docs.getoptical.app/guias/accesorios-y-addons/#colores-seleccionables-por-opción): el **tamaño de las muestras de color** (por debajo de 32 px cuesta acertarles en el móvil), si la ayuda emergente que aparece al pasar por una muestra de color muestra también el **recargo** («Gris (+€80,00)») o solo el nombre, y el texto **«Elige un color para continuar»** — puedes reescribirlo, y decidir si se muestra bajo la fila de colores o solo como aviso sobre el botón Siguiente.
**Complementos, colores y accesorios agotados**: qué hace el panel con lo que no se puede vender ahora mismo — mostrarlo **desactivado con «Agotado»** (por defecto; en los colores, la muestra de color tachada) u **ocultarlo**. Si ocultar dejara un paso sin opciones, se muestran desactivadas. Ver [lo agotado se ve antes de elegirlo](https://docs.getoptical.app/guias/accesorios-y-addons/#colores-seleccionables-por-opción).
## Navegación
Barra de progreso y botones: **altura de la barra**, **tamaño/grosor/padding del botón**, el **carrusel de selecciones del pie** (mostrar en escritorio/móvil, prefijar con el nombre del paso) y el **contador de pasos** (palabra separadora, ej. "2 de 4").
**Espacio libre a la derecha del pie** — si tu tienda tiene un botón de chat en la esquina inferior derecha (WhatsApp, Tidio, Gorgias…), queda justo encima del botón *Siguiente* del panel. Este ajuste deja ese hueco vacío para que el chat flote sobre nada: unos 72 px bastan para el botón de chat habitual. Por defecto es 0 y el pie no cambia.
**Mostrar la atribución de GetOptical en la cabecera** — desactivado por defecto en el plan de pago. Si lo activas, en la esquina superior izquierda del configurador aparece un icono de 24 píxeles (solo el icono, sin texto) que enlaza a la página de la app en el App Store. Es el patrón de atribución que Shopify permite a las apps en la tienda. En el plan gratuito de cortesía el icono forma parte del plan y se muestra siempre; el ajuste no aparece.
**Recordar la configuración a medias** — desactivado por defecto; actívalo tú si lo quieres. Si el cliente cierra el configurador sin terminar y vuelve al mismo producto en los 7 días siguientes, en vez del primer paso ve «Tenías una configuración a medias» con dos botones: *Continuar donde lo dejaste* y *Empezar de nuevo*. Al continuar recupera lo que había elegido (con los precios de hoy, y solo las opciones que sigan existiendo) y vuelve al primer paso que le falte. Lo que **no** se recuerda: la graduación, la receta de lectura, las lentillas y los archivos, que vuelve a introducir. El borrador vive en el navegador del cliente, nunca en nuestros servidores, y se borra al añadir al carrito, al empezar de nuevo o a los 7 días. Desactívalo si varios clientes comparten un mismo dispositivo (un quiosco en tienda). Debajo, **«Ofrecer continuar a partir de N pasos completados»** (2 por defecto): con menos pasos hechos no se guarda nada, porque rehacer uno cuesta lo mismo que responder al aviso; súbelo si solo quieres rescatar a quien casi terminó. Los textos del aviso se cambian en Diseño › Textos, y en Analítica ves cuántos retoman.
## Resumen y Total
La lista de selecciones y la línea de total: tamaños de **título**, **items** y **total**; **fondo** y **color del total**; una línea de **envío** (etiqueta + valor, ej. "Gratis (Peninsular)"); y la opción de **prefijar las líneas del resumen** con el nombre del paso.
## Qué ve el cliente de lo que eligió
Debajo del producto, en el carrito, aparece lo que el cliente configuró: los pasos que eligió y su receta. Algo así:
```
Tipo de gafas: Gafas graduadas
Tipo de lente: Lentes finas estándar
OD: ESF -2.50 · CIL -1.25 · EJE 90° · ADD +1.50
OI: ESF -3.00 · CIL 0.00 · EJE — · ADD +2.00
DIP: 63
Accesorios: Funda rígida
```
Tienes dos interruptores para ocultarle esto **al cliente**:
- **Ocultar los valores de graduación al cliente**
- **Ocultar las etiquetas de selección al cliente**
**Ojo: «ocultar» significa ocultar en todas partes**
Aquí se equivoca casi todo el mundo, porque suena a que solo afecta al carrito.
Cuando activas uno de estos interruptores, esos datos desaparecen de **todo lo que ve el cliente**: el carrito, el checkout, la página de estado del pedido **y el email de confirmación**.
**Tú los sigues viendo** en el detalle del pedido, dentro de tu admin de Shopify, y viajan igual a tu laboratorio. Pero tu cliente ya no puede comprobar en ningún momento qué graduación pidió.
Es todo o nada: Shopify no permite mostrar un dato en el email y esconderlo en el carrito.
**Nuestra recomendación:** deja desactivado el de la graduación. Que el cliente reciba su receta por email es su única forma de detectar un error después de comprar, y a ti te ahorra la devolución.
### Quitar un paso concreto del pedido
A veces hay un paso que no aporta nada al pedido: por ejemplo, uno que solo pregunta *cómo* quiere el cliente darte su graduación. Los propios valores de la receta ya lo dicen, así que esa línea solo alarga el carrito.
Dentro de cada paso, en el editor, tienes la casilla **Ocultar del carrito y del pedido**.
Y al lado, en los pasos de elección única, **Si este paso solo tiene una opción, elegirla y saltar el paso**: el cliente no ve esa pantalla, la opción va igualmente al pedido con su etiqueta, y el botón Atrás vuelve a la última pantalla que sí vio. Viene desactivada: si la única opción está ahí a propósito —un precio que enseñar, una condición que leer—, déjala desactivada. Un paso cuya única opción tenga colores seleccionables o un enlace externo se enseña siempre.
Esa casilla **no aparece** en los pasos que llevan la receta ni en el de subir foto: un pedido de gafas graduadas sin graduación no se puede fabricar, así que la app no te deja llegar ahí.
**Cuidado con los pasos que se llaman igual**
Es habitual tener varios pasos titulados «Graduación» —el que pregunta el método, el que captura los valores, el de subir la foto—. Fíjate en la **etiqueta de color** que hay junto al título de cada paso: te dice de qué tipo es. También puedes rellenar el **ID interno** de cada paso («método», «valores», «foto») para distinguirlos de un vistazo.
## El bundle en el carrito
El producto principal + lentes/complementos + accesorios se **agrupan como un bundle** bajo una sola línea, igual que se lee en el checkout. La relación se mantiene de forma nativa (`parent_id`) para el **borrado en cascada**, el **checkout** y los **emails de pedido** — si el cliente elimina el producto principal, se quitan también sus complementos. Ver [Integración con el tema](https://docs.getoptical.app/desarrolladores/integracion/) para el detalle técnico.
### Cómo se ve, lo decide tu tema
La app **no aplica ni un estilo al carrito**. Lo que ves ahí —el sangrado de las líneas de complemento, los tamaños, los separadores— lo muestra tu tema, y así se mantiene coherente con el resto de tu tienda aunque cambies de plantilla.
Los temas modernos como Horizon anidan las líneas del bundle por su cuenta. Si el tuyo no lo hace, o si quieres afinar cómo se ve, tienes tres ajustes en la incrustación de la app:
- **Compactar las líneas de complementos** — deja las líneas de los complementos más pequeñas que la del producto principal, para que las gafas sigan siendo la protagonista y los extras se lean como parte de ellas. **Nace desactivada**, y activada solo cambia tamaños.
- **Qué controles enseña cada línea del conjunto** — tres ajustes: **Complementos en el carrito** (con sus controles, sin controles u ocultos del carrito; por defecto, sin controles), **Ocultar el botón de eliminar de los accesorios** (por defecto, desactivado) y **Ocultar el selector de cantidad de las lentillas** (por defecto, activado). La incrustación nace con los controles que no sirven para nada bueno escondidos: la papelera de una lente solo rompe el conjunto, y el selector de una lentilla solo deshace lo que el configurador fijó. Si ya tenías la incrustación activada, conservas lo que elegiste. Ver [Botón y carrito](https://docs.getoptical.app/desarrolladores/boton-y-carrito/).
- **CSS personalizado** — para cualquier ajuste que quieras hacer tú. En [Temas probados](https://docs.getoptical.app/guias/temas-probados/#cualquier-tema-las-clases-que-deja-la-integración-con-el-carrito) están las clases que la integración con el carrito deja en cada fila.
**Por qué ahora es decisión tuya**
Esconder un control nunca impidió la acción: quien quiera puede cambiar la línea igual. Lo que cambia desde la 1.5 es que **la app cuadra el conjunto ella misma**: un complemento cambiado por su cuenta vuelve a su sitio, si el cliente sube la montura los complementos suben con ella (o vuelve a 1, si eliges «Bloquear»), y si quita una lente, el conjunto entero se va (ver más abajo). Con el pedido a salvo, esconder controles es solo una cuestión de limpieza, y por eso te la dejamos a ti. Las reglas solo alcanzan a las filas de un conjunto de Optical Form: la papelera de otras apps —garantías, seguros de envío— no se toca.
### Si el cliente quita una lente
Una montura «configurada» sin sus lentes es un pedido que el laboratorio no puede hacer. Si el cliente quita desde el carrito de tu tema una lente, un tratamiento o un color, la app **quita el conjunto entero** —la montura y el resto de sus complementos— y muestra un aviso corto en el carrito; puede volver a configurarla cuando quiera. Los accesorios no cuentan: quitar un líquido o una funda no toca nada más. Si en tu tienda una montura se puede comprar sola, **Si se quita una lente o un tratamiento**, en la incrustación de la app, tiene la opción «Conservar la montura y avisar»: la montura se queda marcada, con un aviso bajo la línea, y la decisión es tuya (el evento [`optical-form:cart:orphan`](https://docs.getoptical.app/desarrolladores/eventos/#optical-formcartorphan--en-el-carrito-falta-una-línea-del-conjunto) te lo cuenta).
### La cantidad, desde el carrito
Si el cliente sube la cantidad de la montura en el carrito de tu tema, las lentes y los tratamientos se multiplican con ella; los accesorios van libres; y las lentillas vuelven a sus cajas, porque esas se eligen en el configurador. **Cantidad del conjunto desde el carrito**, en la incrustación de la app, elige entre «Escalar» (por defecto) y «Bloquear» (siempre 1 por conjunto, con un aviso). Detalle en [Temas probados](https://docs.getoptical.app/guias/temas-probados/#cambiar-la-cantidad-desde-el-carrito).
---
# Ajustes en el editor de temas
> Los dos sitios donde Optical Form pone ajustes en tu tema, qué hace cada uno, y el CSS personalizado.
Source: https://docs.getoptical.app/guias/ajustes-del-tema/
Language: es
Optical Form pone ajustes en **dos sitios distintos** del editor de temas, y confundirlos es la causa número uno de «lo he activado y no se ve nada».
| | Dónde está | Qué controla |
|---|---|---|
| **La incrustación de la app** | Personalizar → **Incrustaciones de aplicaciones** | Lo general: el carrito, el CSS personalizado. Una vez para toda la tienda |
| **El bloque** | Personalizar → plantilla **Producto** → Añadir bloque | **El botón**: cómo se ve y dónde va |
La regla corta: **la incrustación hace que funcione, el bloque hace que se vea.** Con solo la incrustación, la página de producto no muestra nada.
---
## La incrustación (Apps)
Personalizar → **Incrustaciones de aplicaciones** → **Optical Form Drawer**.
### Aspecto del carrito
**Compactar las líneas de complementos.** Tu tema imprime cada complemento como una línea más, del mismo tamaño que el producto principal. Esta casilla las hace más pequeñas, para que las gafas sigan siendo la protagonista y los extras se lean como parte de ellas.
**Nace desactivada**, y activada **solo cambia tamaños**: no esconde la cantidad ni el botón de eliminar. Está probada en Horizon 4.x; en otros temas no hace nada, porque el marcado al que se agarra no existe ahí.
**Por qué no esconde el botón de eliminar**
Es tentador esconderlo para que nadie descuadre el pedido. No sirve: esconder un control no impide la acción. Y esa fila la comparten otras apps —garantías, seguros de envío—, así que esconderles su papelera dejaría a tu cliente sin poder quitar un cargo que no es tuyo.
### CSS personalizado
Un campo de texto para tus propias reglas. Se cargan **después** de las de la app y del tema, así que ganan sin que tengas que pelearte con la especificidad.
Para qué se usa normalmente:
```css
/* Achicar la fila de un complemento en el carrito (Horizon 4.x) */
.cart-items__nested-line .cart-items__title { font-size: 13px; }
.cart-items__nested-line .cart-items__details { font-size: 12px; }
```
**Es CSS de TU tema, no de la app**
Estas reglas apuntan a las clases que usa tu tema, y **esas clases cambian de un tema a otro**. Una regla escrita para Horizon puede no casar con nada en Dawn. Si cambias de tema, revisa este campo.
Y no hace falta para el caso más común: la casilla de arriba ya trae la receta de Horizon hecha.
### Integración con el carrito
**Después de añadir al carrito** — qué pasa al terminar el formulario: abrir el panel del carrito de tu tema, ir a la página del carrito, o no hacer nada.
**«No hacer nada» en Horizon**
Con «no hacer nada» la app no abre nada, pero tu tema sigue reaccionando como a cualquier añadido. Horizon abre su panel del carrito por su cuenta si tiene activado su propio ajuste **«Abrir el carrito al añadir»**: si no quieres que se abra, desactívalo en los ajustes del tema (Carrito), no aquí.
**Mantener el carrito sincronizado** — cuando el cliente borra las gafas, se van también sus lentes y complementos. **Déjalo activado** salvo que sepas por qué lo desactivas: sin esto tu cliente puede quedarse con unas lentes sueltas en el carrito, sin montura.
Y al revés: si el cliente borra las lentes desde el carrito de tu tema y deja la montura sola, la app lo detecta y pone un aviso bajo esa línea para que lo vea antes de pagar — un pedido de gafas graduadas sin lentes no se puede fabricar. No borra nada ni bloquea el pago; si quieres ir más allá, tu tema recibe un evento (ver [Integración](https://docs.getoptical.app/desarrolladores/integracion/)). Mientras la app recoloca las líneas justo después de añadir, el botón de pagar espera un instante.
### Avanzado
Solo hacen falta si tu tema no es estándar y el ajuste automático falla:
| | Para qué |
|---|---|
| **Abrir el panel del carrito desde el icono** | Si tu tema no abre su propio panel del carrito al pulsar el icono |
| **Selector del contador del carrito** (CSS) | El número que va sobre el icono, si no lo encuentra solo |
| **Selector del icono del carrito** (CSS) | El icono, si no lo encuentra solo |
| **IDs de secciones a refrescar** | Las secciones del tema que deben actualizarse al añadir |
| **Modo depuración** | Escribe en la consola del navegador lo que va haciendo. Para pasárnoslo si algo falla |
**Déjalos vacíos primero**
Todos se detectan solos en la mayoría de temas. Rellénalos solo si algo no funciona, y de uno en uno: así sabes cuál era.
---
## El bloque (página de producto)
Personalizar → cambia la vista a **Producto** → **Añadir bloque** → **Optical Form**.
Este bloque dibuja **el botón** que abre el formulario. Colócalo donde quieras, normalmente junto al de añadir al carrito.
### Ocultar el configurador en un producto concreto
Al final de los ajustes del bloque, en *Avanzado*: **Etiqueta de producto que oculta el configurador** — por defecto, `optical-form-off`. Un producto que lleve esa etiqueta **no enseña el botón**, aunque tenga un formulario asignado o pertenezca a una colección asignada. Es la forma de dejar fuera un producto concreto sin tocar colecciones ni formularios: una montura de exposición, un modelo que solo vendes sin lentes, un producto en liquidación. La etiqueta se escribe en el producto, en tu admin de Shopify (*Productos › el producto › Etiquetas*), tal cual, respetando mayúsculas y minúsculas.
Si prefieres otra palabra, cámbiala aquí. Si vacías el campo, el interruptor deja de existir. En el editor de temas, un producto oculto por su etiqueta te lo dice en el hueco del botón; tus clientes no ven nada.
### Contenido del botón
**Texto** (déjalo vacío para usar el traducido por defecto), **icono** (opcional, desde tus archivos), **posición del icono** (izquierda o derecha) y **separación entre icono y texto**.
### Colores
Fondo, texto y borde, cada uno con **su versión al pasar el ratón**. Seis en total, para que encaje con tu marca en los dos estados.
### Forma y tipografía
**Radio de las esquinas**, **grosor del borde**, **grosor de la letra**, **espaciado entre letras** y **mayúsculas** (normal, TODO MAYÚSCULAS, Tipo Título).
### Escritorio y Móvil
Los mismos siete ajustes, **por separado** para cada tamaño de pantalla:
- **Ajustar al texto** — el botón ocupa solo lo que necesita, en vez de todo el ancho
- **Anchura**, **relleno vertical** y **horizontal**
- **Tamaño de letra**
- **Alineación del contenido** — centrado, o texto e icono separados a los extremos
- **Tamaño del icono**
**Empieza por móvil**
Más de la mitad de tus clientes compran ahí, y un botón que en escritorio se ve bien puede quedar apretado en un teléfono. El editor te deja alternar entre las dos vistas sin salir.
### Avanzado — integración con el tema
**Selector del campo de variante (CSS)** — solo si tu tema no usa el campo de variante estándar. Le dice al formulario dónde leer qué variante ha elegido el cliente, para llevarse la correcta al carrito.
Déjalo vacío salvo que el formulario esté añadiendo la variante equivocada.
---
## Cuando algo no encaja
1. **No se ve el botón** → falta el bloque, o el formulario no está *Activo + Sincronizado*. Ver [Instalar](https://docs.getoptical.app/empezar/instalacion/).
2. **El carrito se ve raro** → mira primero la casilla de compactar; el CSS personalizado es el último recurso.
3. **Se añade la variante equivocada** → el selector de variante del bloque.
4. **Nada de lo anterior** → activa el **modo depuración**, reproduce el problema y mándanos lo que salga en la consola.
---
# Temas probados
> Los temas de Shopify en los que hemos comprobado el carrito de Optical Form, el CSS que dejamos listo para cada uno y qué hacer si tu tema no está en la lista.
Source: https://docs.getoptical.app/guias/temas-probados/
Language: es
Optical Form añade la montura y cada complemento como **líneas separadas** del carrito, agrupadas bajo la montura. Cómo se ve ese grupo depende del tema: cada uno muestra sus líneas a su manera, y no todos saben anidarlas.
Aquí están los temas en los que **nuestro equipo ha probado el carrito de principio a fin** —añadir desde el formulario, panel del carrito abierto, líneas visibles, receta legible— y lo que hay que ajustar en cada uno para que quede pulido.
## La tabla
| Tema | Versiones | Estado | Qué hacer |
|---|---|---|---|
| **Horizon** | 2.0.1 · 4.1 – 4.2.0 | ✅ Es nuestra referencia: complementos agrupados bajo la montura, sin controles propios. 4.1 probado en escritorio y móvil; 4.2.0 (septiembre de 2026) en escritorio; 2.0.1 en una tienda real | Activar **Compact the add-on lines in the cart** si quieres las líneas de complemento más pequeñas; qué controles enseña cada fila se decide en la incrustación de la app |
| **Dawn** | 15.2 – 16.0 | ✅ Probado en escritorio y móvil, en el panel y en la página del carrito | Nada obligatorio: los controles se deciden en la incrustación de la app; CSS opcional abajo para anidar y reducir las líneas |
| **Split** (KrownThemes) | 4.4 | ✅ Probado en escritorio en una tienda real: el panel del carrito se abre con la montura y sus complementos, y al borrar la montura se van con ella | Activar **Compact the add-on lines in the cart** y elegir en **Add-ons in the cart** si las filas de complemento llevan controles; CSS opcional abajo para afinar |
| **Glassglow** | 9.0 | 🟠 En curso: el panel del carrito se abre y se actualiza con las funciones del propio tema y nuestras líneas caen en él; nos falta verlo con el formulario activo en la tienda. Su mini-cart no enseña las propiedades de línea (la configuración y la receta salen en la página del carrito y en el checkout) y lista como mucho 5 líneas | Escríbenos antes de activarlo |
## Horizon
No hace falta CSS. En **Tema › Incrustaciones de aplicaciones › Optical Form Drawer**, activa **Compact the add-on lines in the cart**: Horizon ya anida las líneas del conjunto bajo la montura, y esa casilla las hace más pequeñas para que las gafas sean el titular. Horizon muestra un selector de cantidad y una papelera en todas las filas, también en las líneas de complemento: si prefieres que los complementos no los enseñen, es el ajuste **Add-ons in the cart** de la misma incrustación de la app. Ver [Cambiar la cantidad desde el carrito](#cambiar-la-cantidad-desde-el-carrito).
Dos cosas de **Horizon 4.2.0** que conviene saber:
- Si actualizas desde la Theme Store, el tema nuevo llega **sin el bloque «Optical Form»** en la plantilla de producto (la incrustación de la app sí se conserva, porque es un ajuste de la app). Vuelve a colocarlo en **Personalizar › Plantilla de producto › Añadir bloque › Apps**.
- Su ajuste **«"Add to cart" auto-opens drawer»** (Ajustes del tema › Cart) viene desactivado. Con él desactivado, el panel del carrito lo abre Optical Form cuando el tema ya ha mostrado las líneas; con él activado lo abre el tema al instante, y las líneas van en la misma petición que el añadido, así que también se abre lleno.
## Dawn 15.x
Dawn muestra cada complemento como una línea igual que la montura, con su selector de cantidad y su papelera. Qué controles enseña cada fila lo decides en la incrustación de la app (**Add-ons in the cart**, **Hide the remove button of accessories**, **Hide the quantity selector of contact lenses**), y funciona igual en el panel y en la página del carrito. Si además quieres las líneas de complemento agrupadas bajo la montura y más pequeñas, como en Horizon:
1. Ve a **Tienda online › Temas › Personalizar › Incrustaciones de aplicaciones › Optical Form Drawer**.
2. Pega esto en **Custom CSS** y guarda:
```css
/* Optical Form · Dawn 15.x/16.x — complementos anidados y reducidos bajo la montura, como en Horizon */
.cart-item.ofd-bundle-child td { padding-top: .8rem; padding-bottom: .8rem; border-top: 0; }
.cart-item.ofd-bundle-child .cart-item__media { padding-left: 3.2rem; }
.cart-item.ofd-bundle-child .cart-item__image-container { width: 100%; max-width: 5.2rem; }
.cart-item.ofd-bundle-child .cart-item__name { font-size: 1.3rem; line-height: 1.35; }
.cart-item.ofd-bundle-child .product-option,
.cart-item.ofd-bundle-child .cart-item__totals .price { font-size: 1.2rem; }
.cart-item.ofd-bundle-child .cart-item__quantity { padding-top: 0; }
```
**Si ya tenías pegado el CSS anterior**
La receta antigua escondía el selector de la montura y los controles de los complementos con CSS. Ya no hace falta y conviene quitar esas reglas: el selector de la montura ahora sirve (multiplica los complementos, o vuelve a 1 en «Lock»), y los controles de las líneas de complemento se deciden en la incrustación de la app. Las reglas de tamaño de arriba siguen valiendo.
## Split (KrownThemes)
Split tiene su propio panel de carrito y la app lo reconoce sola: no hay que tocar selectores. Dos cosas:
1. En **Tema › Incrustaciones de aplicaciones › Optical Form Drawer**, activa **Compact the add-on lines in the cart** (líneas de complemento sangradas bajo la montura) y, si no quieres que los complementos enseñen el selector de cantidad ni el enlace «Eliminar», pon **Add-ons in the cart** en «Visible without controls». El selector de la montura se queda: multiplica los complementos, o vuelve a 1 si eliges «Lock» en **Set quantity from the cart**. La montura conserva «Eliminar» y al borrarla se lleva las lentes.
2. Si quieres las líneas de complemento más pequeñas y sangradas bajo la montura, pega esto en **Custom CSS** de la misma incrustación de la app:
```css
/* Optical Form · Split — complementos compactos bajo la montura (cajón y página del carrito) */
#AjaxCartForm .cart-item.ofd-bundle-child { padding-left: 24px !important; margin-top: -8px !important; }
#AjaxCartForm .cart-item.ofd-bundle-child .thumbnail { width: 56px !important; flex: 0 0 56px !important; }
#AjaxCartForm .cart-item.ofd-bundle-child .item-title { font-size: 13px !important; line-height: 1.35 !important; }
#AjaxCartForm .cart-item.ofd-bundle-child .item-price { font-size: 12px !important; }
#AjaxCartForm .cart-item.ofd-bundle-child .actions { display: none !important; }
```
Split imprime en el carrito **todas** las propiedades de línea, también las técnicas que empiezan por `_` (les quita el guion bajo), así que bajo la montura y bajo cada complemento verás líneas como `ofd_type: main`. Dos formas de quitarlas:
- **La limpia, en el tema**: en `snippets/cart-form.liquid`, la condición que decide qué propiedad se imprime (`{%- if p.last != blank and p_first_char != '_p_' -%}`) pasa a `{%- if p.last != blank and p_first_char != '_p_' and p.first contains '_ofd_' == false -%}`. Sirve para cualquier orden y cualquier ajuste del formulario.
- **Solo con CSS**, pegando esto debajo del bloque anterior. Vale mientras tengas activa **Unir las selecciones en una sola línea** (Diseño › Líneas del carrito): esa línea va la primera y las técnicas ocupan la segunda, la tercera y la última. Si desactivas la unión, cambia las dos primeras reglas de la montura por `span:nth-child(-n+2)`.
```css
/* Propiedades técnicas (ofd_*): en los complementos, todas; en la montura, la 2.ª, la 3.ª y la última */
#AjaxCartForm .cart-item.ofd-bundle-child .margin-top-xs { display: none !important; }
#AjaxCartForm .cart-item.ofd-bundle-parent .margin-top-xs > span:nth-child(2),
#AjaxCartForm .cart-item.ofd-bundle-parent .margin-top-xs > span:nth-child(3),
#AjaxCartForm .cart-item.ofd-bundle-parent .margin-top-xs > span:last-child { display: none !important; }
```
## Cualquier tema: las clases que deja la integración con el carrito
En todos los temas, la integración con el carrito marca cada fila de un conjunto con su **papel**: `ofd-bundle-parent` en la montura (y `ofd-set-fixed` si es una lentilla, cuya cantidad fija el configurador), `ofd-bundle-child` en cada línea de complemento, más `ofd-bundle-addon` (lentes y tratamientos) o `ofd-bundle-accessory` (líquidos, fundas). Y dentro de cada fila marca los controles que encuentra: `ofd-ctl-qty` en el selector de cantidad (el número con sus botones) y `ofd-ctl-remove` en la papelera. Son las clases que usan los ajustes de la incrustación de la app en los temas medidos, y las que puedes usar tú en cualquier otro, pegado en **Custom CSS**:
```css
/* Optical Form · cualquier tema — por el papel de cada fila del conjunto */
.ofd-bundle-addon .ofd-ctl-qty,
.ofd-bundle-addon .ofd-ctl-remove { display: none !important; } /* complementos sin controles */
.ofd-bundle-accessory .ofd-ctl-remove { display: none !important; } /* accesorios sin papelera */
.ofd-set-fixed .ofd-ctl-qty { display: none !important; } /* lentillas sin selector */
/* o, en vez de la primera regla, complementos ocultos del todo: */
/* .ofd-bundle-addon { display: none !important; } */
```
Las marcas de los controles son una heurística (busca el campo numérico con sus botones «+»/«−» y el botón o enlace de eliminar por su etiqueta), pero acotada: solo mira dentro de las filas de un conjunto de Optical Form, así que nunca toca otra línea del carrito ni el resto de la página. Si en tu tema no acierta, escríbenos con el nombre y la versión y lo medimos.
## Cambiar la cantidad desde el carrito
Una montura configurada y sus complementos son **un conjunto**. Si el cliente sube la cantidad de la montura en el carrito de tu tema —el panel o la página—, la app multiplica con ella las lentes y los tratamientos (dos lentes por montura, un tratamiento por montura…), en una sola petición y sin volver a abrir el panel. Si en cambio cambia un complemento por su cuenta, vuelve a su sitio. Los accesorios van libres. Y las **lentillas no se escalan**: sus cajas por ojo se eligen en el configurador, y cualquier cambio en el carrito vuelve a ellas con el aviso «Las cajas por ojo se eligen en el configurador».
Si prefieres que una montura configurada sea siempre una unidad, pon **Set quantity from the cart** en «Lock»: vuelve a 1 con el aviso «Las cantidades del conjunto van juntas. Para otra montura igual, configúrala de nuevo». Los dos avisos están traducidos. Todo esto está medido en Horizon 2.x a 4.2, Dawn 15 y 16 y Split, con y sin descuentos automáticos (un 2×1 reparte la montura en varias líneas y la app las suma).
## Lo que verá tu cliente en cualquiera de los temas
- La montura con su foto, su precio y la configuración elegida.
- La **graduación etiquetada**, con los mismos nombres de campo que el formulario: `OD: SPH -2.25 · CYL -0.75 · AX 90°`, `OI: …`, `DIP: 63`.
- Los complementos debajo, con su precio y su cantidad — o sin controles, u ocultos, según lo que elijas en la incrustación de la app.
Las propiedades técnicas que van al laboratorio (empiezan por `_`) no se ven en ningún tema de Shopify: ni en el carrito, ni en el checkout, ni en el email.
## Tu tema no está en la lista
El formulario y el cobro funcionan igual en cualquier tema: los ajustes automáticos de la incrustación de la app detectan el carrito de la mayoría. Lo que no podemos garantizar sin verlo es **el acabado** del panel del carrito —que los complementos salgan agrupados bajo la montura y pulidos como en Horizon—, porque cada tema muestra sus líneas con su propio código.
Si quieres ese acabado en un tema que no está aquí, escríbenos a support@getoptical.app con el nombre y la versión del tema. Lo normal es que te pidamos **acceso de colaborador** a la tienda (permiso de *Temas*) o, como mínimo, un enlace de vista previa del tema con el formulario activo en un producto. Con eso ajustamos el carrito, te dejamos el CSS listo para pegar y el tema pasa a esta tabla.
---
# El botón del producto
> Cómo dar al botón que abre el configurador el mismo aspecto que los botones de tu tema, en escritorio y en móvil.
Source: https://docs.getoptical.app/guias/boton-del-producto/
Language: es
El botón que abre el configurador vive en la página de producto, así que tiene que parecerse a los demás botones de tu tienda. Se configura en el **editor de temas**, no dentro de la app.
## Dónde se configura
1. En tu admin de Shopify, ve a **Tienda online → Temas → Personalizar**.
2. Abre una página de producto.
3. Pulsa sobre el bloque **Optical Form**.
Todos los ajustes que verás se aplican **solo a ese bloque**, y afectan a todos los productos que usen esa plantilla de producto.
## El botón no hereda nada
Esto es importante y va a contracorriente de lo que uno esperaría: **el botón no coge colores de ningún sitio**. Ni de tu tema, ni de la pestaña *Diseño* del formulario.
Es a propósito. Los temas de Shopify definen sus botones cada uno a su manera, y no hay forma fiable de adivinarlo. En vez de acertar a medias, la app te deja decidirlo todo.
Lo que trae por defecto es un botón **gris muy oscuro con texto blanco**, que es neutro y encaja de forma discreta en casi cualquier tienda hasta que lo ajustes.
**La forma rápida de acertar**
No intentes adivinar los colores de tu tema. Ve a una página de producto de tu tienda, haz clic derecho sobre el botón **Añadir al carrito** y elige *Inspeccionar*. Ahí ves el color exacto. Cópialo y pégalo aquí.
Si eso te suena a chino, hay una alternativa: hazle una captura al botón de tu tema y usa cualquier selector de color (el propio Shopify trae uno en el selector de color) para sacar el tono.
## Contenido
- **Texto del botón** — lo que pone. Si lo dejas vacío, se usa el texto traducido de la app, que se adapta solo al idioma de cada cliente. **Si escribes algo aquí, ese texto sale igual en todos los idiomas.**
- **Icono (opcional)** — una imagen de tu biblioteca de **Archivos**. Va mejor un PNG cuadrado con fondo transparente, de unos 128×128. Déjalo vacío para un botón solo de texto.
- **Posición del icono** — antes o después del texto. Solo aparece cuando hay icono.
- **Separación entre icono y texto** — de 0 a 32 px. Se ignora si la alineación del contenido separa las piezas a los extremos.
## Colores
Seis colores: **fondo**, **texto** y **borde**, cada uno con su versión **al pasar el ratón por encima**.
El borde solo se ve si además le pones un grosor mayor que cero, más abajo. Si dejas el color de borde vacío, no se ve borde aunque tenga grosor.
## Forma y tipografía
Estos valores son **comunes a escritorio y móvil**, porque casi nunca conviene que cambien de un sitio a otro:
- **Radio de las esquinas** — de 0 (cuadrado) a 60 (píldora).
- **Grosor del borde** — 0 significa sin borde.
- **Grosor de la letra**, **espaciado entre letras** y **mayúsculas/minúsculas**.
## Escritorio y móvil por separado
Lo que sí cambia entre pantallas tiene su propio juego de ajustes:
| Ajuste | Para qué |
|---|---|
| **Ajustar al contenido** | El botón ocupa solo lo que mide su texto, en vez de una anchura fija. Es lo habitual en escritorio |
| **Ancho** | Porcentaje del espacio disponible. En móvil casi siempre 100% |
| **Relleno vertical y horizontal** | El espacio entre el texto y el borde del botón. Lo que le da el tamaño |
| **Tamaño de letra** | |
| **Alineación del contenido** | Dónde quedan el icono y el texto dentro del botón: centrados, a la izquierda, a la derecha o separados a los extremos |
| **Tamaño del icono** | De 10 a 48 px. Solo aparece cuando hay icono |
La versión **móvil** se aplica en pantallas de menos de 750 píxeles de ancho, que es el corte estándar de Shopify.
**Cómo previsualizar el móvil**
En el editor de temas, arriba a la izquierda, hay unos iconos de pantalla y de móvil. Pulsa el de móvil y verás cómo queda sin salir del editor.
## Dónde va el botón respecto al de tu tema
Por defecto el botón sale donde pongas el bloque en el editor: encima o debajo del bloque «Buy buttons» de tu tema, en su propia fila. Si lo quieres pegado al botón «Añadir al carrito», usa el ajuste **Position** del bloque, en la sección **Theme integration & placement**:
- **Where the block is placed**: como hasta ahora.
- **Above the theme's add to cart** / **Below the theme's add to cart**: justo encima o justo debajo de la línea del botón de tu tema. «Debajo» queda entre ese botón y los de pago rápido (Shop Pay, PayPal).
- **Side by side, left / right**: los dos botones en la misma línea, mitad y mitad, a la misma altura. **Gap** es la separación con el botón del tema, en cualquiera de las posiciones, y **Stack on mobile** los apila a ancho completo en pantallas estrechas, porque medio ancho en un móvil parte la etiqueta.
No hay que tocar el tema: la app encuentra sola el botón «Añadir al carrito» en los temas que hemos probado. Si en el tuyo no lo encuentra, el botón se queda donde está el bloque y puedes indicarle el selector CSS de tu botón en **Add to cart selector**, o escribirnos. Al lado, el botón toma el ancho de su mitad; los colores, el texto, el icono y la tipografía siguen siendo los del bloque.
## Ajustes avanzados
El campo **Selector de input de variante** está pensado para desarrolladores y **casi nunca hace falta**: solo para temas raros donde la app no detecta qué variante ha elegido el cliente. Déjalo vacío salvo que te lo indique el soporte.
## Cuando la montura está agotada
El botón sigue a la variante como el botón de compra de tu tema. Si la variante que el cliente tiene seleccionada no se puede vender, el botón se muestra **desactivado con el texto «Agotado»**; si cambia a un color con stock, vuelve a activarse sin recargar. En el mismo bloque, bajo **Ajustes avanzados**, el ajuste **When the frame is sold out** deja elegir entre ese botón desactivado y **ocultarlo** del todo. La palabra «Agotado» se cambia en **Diseño › Textos** de cada formulario.
Aunque el cliente consiguiera abrir el configurador con una montura agotada, «Añadir» no la enviaría al carrito: le diría «La montura X está agotada. Elige otra montura».
## Y los demás textos, ¿dónde están?
- El **idioma del panel** de la app: en **Ajustes** dentro de la app. Ver [Idiomas y textos](https://docs.getoptical.app/guias/traducciones/).
- Los **textos del formulario** que ve el cliente: dentro de cada paso, en el editor del formulario.
- Los **colores del configurador** (el panel que se abre): en la pestaña **Diseño** de cada formulario. Ver [Diseño y carrito](https://docs.getoptical.app/guias/diseno-y-carrito/).
---
# Iconos para tus opciones
> Un pack de 28 iconos, gratis y de uso comercial, para que todo el configurador se vea del mismo estilo.
Source: https://docs.getoptical.app/guias/iconos/
Language: es
Cada opción de tu formulario puede llevar una imagen. Si pones una de un sitio y otra
de otro, el configurador se ve remendado — y eso lo nota el comprador aunque no sepa
decir por qué.
Para evitarlo tienes un pack propio: **28 iconos**, dibujados para GetOptical y **gratis
para usar en tu tienda**, con o sin modificaciones. Cubren el catálogo de una óptica de
punta a punta: el tipo de gafa, el índice, el área de visión de una progresiva, los
tratamientos y los complementos.
## Qué incluye
**Qué está comprando el cliente**
| Icono | Para |
|---|---|
| `glasses-prescription` | Graduadas / monofocal |
| `glasses-progressive` | Progresivas |
| `glasses-reading` | Gafas de lectura |
| `glasses-plano` | Sin graduar |
| `glasses-sun` | Gafas de sol |
| `contact-lenses` | Lentillas |
**Índice de la lente** — el perfil en color marca cuál es. Cuanto más a la derecha, más gruesa.
`index-150` · `index-160` · `index-167` · `index-174`
**Área de visión, para progresivas** — el corredor nítido se ensancha al subir de gama.
`corridor-standard` · `corridor-wide` · `corridor-premium`
**Tratamientos**
| Icono | Para |
|---|---|
| `lens-standard` | Lente estándar |
| `lens-anti-reflective` | Antirreflejante |
| `lens-blue-light` | Filtro de luz azul |
| `lens-photochromic` | Fotocromática |
| `lens-polarised` | Polarizada |
| `lens-tint` | Tintada |
| `lens-driving` | Conducción |
| `lens-mirror` | Espejo |
| `lens-water-repellent` | Hidrofóbico / repelente al agua |
| `lens-scratch-resistant` | Antiarañazos |
| `lens-anti-fog` | Antivaho |
| `lens-uv` | Filtro UV |
**Complementos**
| Icono | Para |
|---|---|
| `addon-case` | Estuche |
| `addon-solution` | Líquido limpiador |
| `addon-cloth` | Gamuza |
Son **SVG**, así que se ven nítidos a cualquier tamaño y pesan unos 500 bytes cada uno.
**Vienen en dos juegos**
La carpeta principal es para **fondos claros**. La carpeta `on-dark/` trae los
mismos iconos con el contorno aclarado, para configuradores de fondo oscuro. Elige el
juego que case con tu diseño: sobre el fondo equivocado el contorno desaparece. La plantilla
de formulario **Gafas de sol · Oscuro** y la plantilla de diseño **Oscura** usan el juego `on-dark/`.
## Cómo ponerlos
1. En tu admin de Shopify, ve a **Contenido → Archivos** y sube los que vayas a usar.
2. Copia la URL de cada archivo.
3. En tu formulario, abre la opción y pégala en **Imagen de la opción**.
**Súbelos a tu tienda, no los enlaces a los nuestros**
Es tentador enlazar directamente a `getoptical.app`. Funciona hoy, pero si algún día
reorganizamos esa carpeta se te quedan las páginas de producto sin imagen. Con los archivos en tu
tienda, eso no puede pasarte.
## Si quieres añadir alguno tuyo
El pack sigue una gramática sencilla, y respetarla es lo que hace que los iconos
parezcan del mismo juego:
- **La lente es siempre la misma elipse** — `cx 72, cy 72, rx 45, ry 36`, con trazo de
`8`, sobre un lienzo de `144 × 144`.
- **Dentro va el concepto**, y **el color de acento señala el sujeto** del icono.
- **El gris es para lo secundario**, nunca para el sujeto.
- Los índices y las áreas de visión varían una **forma**, no una etiqueta: qué perfil va
en acento, o cuánto se ensancha el corredor. Sepáralos lo bastante como para que la
diferencia se note a 40 px, que es el tamaño al que se usan de verdad.
- **Los complementos no llevan elipse.** La elipse significa «esto es una lente», y un
estuche no lo es.
Colores: contorno `#1F2A28` · acento `#0E6E63` · gris `#7E8E8B`.
## Lo que puedes hacer con ellos
Puedes **usarlos, modificarlos, recolorearlos y publicarlos** en tu tienda y en tu
publicidad, incluidas las tiendas que montes para clientes tuyos. Sin atribución y sin
coste.
Lo único que no puedes es **revenderlos o redistribuirlos como pack de iconos**, por su
cuenta o como el grueso de otro producto.
**Sobre las marcas**
Los iconos son deliberadamente genéricos y no llevan marcas de terceros. No hay un icono
de *Transitions®*, porque es una marca registrada de Transitions Optical. Etiqueta tú
tus opciones con los nombres comerciales que tengas derecho a usar como vendedor de esos
productos — el icono de fotocromática te sirve igual.
---
# Idiomas y textos
> De dónde sale cada texto que ve tu cliente, quién manda sobre quién, y cómo cambiar una etiqueta sin romper los demás idiomas.
Source: https://docs.getoptical.app/guias/traducciones/
Language: es
Esta es la parte que más dudas genera, así que vamos despacio. No hace falta saber nada de programación.
## Primero: dos cosas que se confunden
| | Qué es | Quién lo ve |
|---|---|---|
| **Idioma del panel** | En qué idioma se ve *esta* aplicación cuando entras a trabajar | Solo tú y tu equipo |
| **Textos del formulario** | Las palabras que aparecen en el formulario de tu tienda | Tus clientes |
Son independientes. Puedes tener el panel en español y vender en inglés, o al revés.
### Idioma del panel
En **Ajustes → Idioma** eliges entre *Automático*, *Inglés* o *Español*.
Se guarda **en tu tienda** y se aplica al momento, sin botón de guardar. Es una preferencia de la tienda, no de cada persona: todo tu equipo ve el panel en el idioma que elijas aquí. En *Automático* la app sigue el idioma principal de tu tienda.
## Los textos del formulario: de dónde salen
Aquí está lo importante. Cada texto que ve tu cliente puede venir de **tres sitios distintos**, y cuando dos dicen cosas diferentes, gana uno concreto.
Piénsalo como una escalera. Cada peldaño pisa al de abajo:
```
4. Traducción por idioma (selector de idioma) ← manda siempre
3. Lo que escribes en las cajas del paso ← solo si lo cambias
2. El idioma de tu tienda (español, inglés…) ← lo normal
1. Los textos de fábrica, en inglés ← el suelo
```
### 1. Textos por defecto
La app trae todos sus textos escritos en inglés. Es el suelo: si nada más los pisa, se ven así.
### 2. El idioma de tu tienda
La app viene traducida. Si tu tienda está en español, tu cliente ve el formulario en español automáticamente, sin que hagas nada.
Esto ya cubre a la mayoría de comercios: **no necesitas tocar nada de lo que viene después.**
### 3. Los campos de texto de cada paso
Dentro de cada paso hay campos donde puedes reescribir las etiquetas: los títulos de cada ojo, los nombres de los campos, los mensajes de error…
Mientras no toques un campo, aparece **vacío y con el texto por defecto en gris** — el mismo que ve tu cliente, en el idioma de tu tienda. Abres un paso de graduación en una tienda española y el campo de la esfera muestra `ESF:` en gris; en una tienda inglesa, `SPH:`. Ese gris no es un valor: es lo que se enseña si no escribes nada.
Solo cuando **escribes algo** en el campo, tu texto pasa a mandar. Si escribes `Esfera:`, tus clientes verán `Esfera:`.
**Si ves texto en inglés escrito en un campo**
Los formularios guardados antes de agosto de 2026 llevaban el texto por defecto en inglés escrito dentro de cada campo (`SPH:`, `Right eye (OD)`…). La app ya lo distingue: un texto idéntico al texto por defecto cuenta como *sin tocar*, así que tu cliente sigue viendo el idioma de la tienda, y al abrir el paso hoy esos campos se ven vacíos con el gris. Si en alguno sigue apareciendo inglés escrito, es que alguien lo cambió a propósito.
**Cuidado con una consecuencia:** lo que escribas ahí se aplica **en todos los idiomas** de tu tienda. Si pones `Esfera:`, un cliente inglés también verá `Esfera:`.
### 4. El selector de idioma
Si vendes en varios idiomas y quieres un texto distinto en cada uno, usa el **selector de idioma** que hay junto al título *Pasos*, en el editor del formulario.
Eliges un idioma, escribes los textos para ese idioma, cambias a otro y escribes los suyos. Cada idioma guarda los suyos por separado.
Esto pisa a todo lo demás, siempre.
### 5. Los textos de la interfaz
Hay palabras que no son de ningún paso sino del propio formulario: **Siguiente**, **Añadir al carrito**, **Resumen**, **Total**, **Incluido**, «Elige un color para continuar», los mensajes de error del carrito… Vienen traducidas con la app y, hasta ahora, no se podían cambiar.
Desde **Diseño › Textos de la interfaz** sí. Ahí está también el **texto del botón de la página de producto** (el que abre el formulario), en el primer grupo. Cada campo muestra en gris lo que ven hoy tus clientes en el idioma elegido, escribes encima para decirlo a tu manera («Pedir mis gafas» en vez de «Añadir al carrito», «Continuar» en vez de «Siguiente») y vacías el campo para volver. Si vendes en varios idiomas, elige el idioma arriba de la sección y escribe los suyos: cada idioma guarda los suyos por separado.
Dos cosas a respetar: los marcadores entre llaves —`{price}`, `{label}`— son donde la app pone el importe o el nombre del paso, y tienen que quedarse; y algunos textos los leen solo los lectores de pantalla (Cerrar, Atrás, el icono de ayuda), así que cámbialos solo si sabes lo que hace un lector.
## Cómo hago…
**…cambiar el nombre de un campo en todos los idiomas**
Escribe el texto nuevo en el campo del paso. Vale para tiendas de un solo idioma, o cuando quieres el mismo término en todos.
**…poner un texto distinto por idioma**
Usa el selector de idioma del editor. Es la única forma de que cada idioma tenga el suyo.
**…volver al texto original**
Vacía el campo: vuelve a verse el gris por defecto, y tu cliente vuelve a ver el idioma de la tienda.
**…dejar un campo en inglés dentro de una tienda española**
Escribe el término en inglés en el campo (por ejemplo `SPH:` en vez del `ESF:` gris). Si quieres que solo lo vean los clientes en español y no los demás idiomas, usa el selector de idioma, elige *español*, y escríbelo ahí.
## Si traes un formulario de otra tienda
Cada formulario tiene un **idioma base**: el de la tienda donde se creó. Es el que ves en el selector marcado como *— Base*.
Al importar un formulario en una tienda cuyo idioma principal es distinto, la app **cambia la base al idioma de tu tienda** y guarda el idioma original como una traducción más. No pierdes ningún texto y no tienes que hacer nada.
Si algún campo no tenía traducción a tu idioma, se queda como estaba en lugar de aparecer vacío: es más útil ver el texto en otro idioma que no ver nada.
**Cómo saber en qué idioma estás editando**
El selector junto al título *Pasos* siempre indica cuál es la base. Si dice **Español — Base**, lo que escribas en los campos es el español; para el resto de idiomas, cambia el selector primero.
Más detalles en [Copiar un formulario a otra tienda](https://docs.getoptical.app/guias/copiar-formulario/).
## Los colores y las ayudas también se traducen
Todo lo que escribes tú dentro de una opción se traduce igual que su etiqueta, con el mismo selector de idioma: el **nombre de cada color**, el **título, la descripción y la ayuda de cada grupo de colores**, y el **texto de ayuda** que aparece tras el «?» junto al título. Lo que no escribes tú —«Elige un color para continuar», el «Desde» del precio, «Incluido»— ya viene traducido; y si lo reescribes en **Diseño**, tu texto se aplica en todos los idiomas.
## Textos que no están en los pasos
Los botones generales del formulario —*Siguiente*, *Anterior*, *Añadir al carrito*, *Total*, los mensajes de error— vienen traducidos con la app y siguen el idioma de tu tienda. No hace falta configurarlos.
**Después de cambiar textos, sincroniza**
Guardar en el editor **no** actualiza tu tienda todavía. Pulsa **Sincronizar ahora** y espera a que el estado diga *Sincronizado*. Hasta entonces tus clientes siguen viendo la versión anterior.
---
# Sincronización y copias
> Publica tus formularios en Shopify vía metaobjects y haz copias de seguridad en JSON.
Source: https://docs.getoptical.app/guias/sincronizacion/
Language: es
## Guardar ≠ Publicar
Editar un formulario en la app y pulsar **Guardar** almacena los cambios, pero **no** los publica en la tienda. Para que lleguen a la tienda hay que **Sincronizar**.
Cada formulario se publica como un **metaobject de Shopify**. La extensión de tema lee ese metaobject para renderizar el panel.
## Sincronizar con Shopify
1. Guarda el formulario.
2. Pulsa **Sincronizar ahora** (o "Sincronizar con Shopify").
3. La sincronización se procesa **en segundo plano**; recarga para ver el estado.
En la pestaña **Ajustes** del formulario verás el estado: **Sincronizado**, **Sin sincronizar** o **Error de sincronización**, y la fecha de la última sincronización.
**Si pone «Error de sincronización»**
Ese formulario **no llegó a publicarse**, así que tu tienda sigue mostrando la versión anterior — o ninguna, si era la primera vez que lo publicabas.
Ábrelo y pulsa **Sincronizar ahora**. Suele tardar unos segundos y con eso se resuelve en la mayoría de los casos.
No has perdido nada: tus pasos, textos y ajustes están guardados. Si vuelve a fallar, escríbenos a **[support@getoptical.app](mailto:support@getoptical.app)** y lo miramos nosotros.
**Recuerda sincronizar tras cada cambio**
Si cambias pasos, precios o diseño y solo guardas, la tienda seguirá mostrando la versión anterior hasta que sincronices.
## Estado del formulario
Un formulario solo aparece en la tienda si está **Activo** *y* **Sincronizado**, y su producto tiene el formulario asignado con la [incrustación de la app](https://docs.getoptical.app/empezar/instalacion/) activada.
## Copia de seguridad y restauración (JSON)
- **Exportar formulario como JSON** (pestaña Ajustes) — descarga toda la configuración del formulario. Úsalo para respaldar o para **copiar el formulario a otra tienda**.
- **Importar desde JSON** (dashboard) — crea un formulario nuevo a partir de un archivo exportado.
Los pasos, textos, traducciones, diseño y los códigos de tu software de óptica viajan enteros. Los **complementos no**, porque están vinculados a productos de una tienda concreta: ver [Copiar un formulario a otra tienda](https://docs.getoptical.app/guias/copiar-formulario/).
Ningún dato se borra al cambiar de plan: tus formularios, sus pasos y sus traducciones se quedan donde están.
**Lo que sí se desactiva si el plan deja de estar al día**
Tus datos siguen intactos, pero el configurador **deja de mostrarse en tu tienda**, aunque dentro de la app el formulario siga figurando como **Activo**. No es un fallo de sincronización: es el plan.
Al regularizar el pago vuelve con tu configuración exactamente como la dejaste: en cuanto vuelvas a sincronizar el formulario, o solo, en la comprobación diaria.
---
# Copiar un formulario a otra tienda
> Qué viaja dentro del archivo JSON, qué no puede viajar por más que quieras, y qué hacer al llegar.
Source: https://docs.getoptical.app/guias/copiar-formulario/
Language: es
Puedes llevarte un formulario entero de una tienda a otra, o guardarlo como copia de seguridad. Se hace con un archivo, sin tocar código.
Esta página explica **qué se copia y qué no**, porque hay una parte que no puede viajar y saberlo de antemano te ahorra un rato de confusión.
## Cómo se hace
1. En la tienda de origen, abre el formulario → pestaña **Ajustes** → **Exportar formulario como JSON**. Se descarga un archivo.
2. En la tienda de destino, ve al panel principal → **Importar desde JSON** → elige ese archivo.
Listo. Aparece un formulario nuevo con el mismo nombre y la palabra *(imported)* al final.
**Llega siempre como borrador**
El formulario importado entra en estado **Borrador**, nunca activo. Es a propósito: así lo revisas antes de que lo vea un cliente.
## Qué viaja y qué no
| | ¿Viaja? |
|---|---|
| Los pasos, en su orden | ✅ Sí |
| Las opciones de cada paso, con sus textos y descripciones | ✅ Sí |
| Las traducciones a otros idiomas | ✅ Sí |
| Los saltos entre pasos (la lógica condicional) | ✅ Sí |
| Los rangos de graduación y las etiquetas | ✅ Sí |
| Los colores, tamaños y ajustes de diseño | ✅ Sí |
| Los códigos de tu software de óptica (ERP) | ✅ Sí |
| **Los complementos y los productos de accesorios** | ⚠️ Solo si existen en la tienda de destino |
| La asignación a productos y colecciones | ❌ No |
## Qué pasa con los complementos
Un complemento no es un texto: es **un producto concreto de tu tienda**. Por dentro se guarda como un número de identificación que Shopify le asigna a ese producto **en esa tienda y en ninguna otra**.
Esos números no se repiten entre tiendas. Nunca. Aunque crees un producto con el mismo nombre, el mismo precio y la misma foto, su número será distinto.
Así que al importar, la app **comprueba uno por uno** si esos productos existen aquí:
- **Copiar dentro de la misma tienda** (duplicar un formulario, restaurar una copia de seguridad): los números son válidos, así que **los complementos se conservan enteros**.
- **Copiar a otra tienda**: los que no existen aquí **se quitan**, y el aviso al terminar te dice cuántos enlaces se han quitado. Las opciones y los pasos siguen intactos: lo único que se cae es el vínculo al producto.
**Por qué se quitan, y no se dejan «por si acaso»**
Un número de producto de otra tienda no da un error suave. Shopify rechaza **la petición entera** de añadir al carrito, así que tu cliente se queda **sin nada**: ni la montura. Y si el complemento cuelga de una opción, no lo verías venir — simplemente todo el que eligiera esa opción dejaría de poder comprar.
**Prepara los productos antes de importar**
Si ya sabes qué complementos vas a querer (tipos de lente, tratamientos, montaje…), créalos en la tienda de destino **antes** de importar. Así los vinculas del tirón, sin ir y volver.
## Los códigos de tu software de óptica sí viajan
Si en la pestaña **Integraciones** tienes puestos los códigos con los que tu software de gestión (Gesvisión u otro) identifica cada lente y cada tratamiento, esos códigos **viajan dentro del archivo**, igual que los textos.
Son la excepción a la regla de los complementos: un código de ERP no es un número que asigne Shopify, es una etiqueta tuya, así que significa lo mismo en cualquier tienda.
**Si importaste antes de agosto de 2026, vuelve a importar**
Las versiones anteriores de la app se dejaban esos códigos por el camino: el formulario llegaba entero pero **sin la integración**, y los pedidos salían sin la referencia que espera tu software. Si te pasó, exporta de nuevo desde la tienda de origen e importa otra vez.
Lo que la app **no** hace es inventárselos. Si el archivo no trae códigos, llegan vacíos y los rellenas tú: son tuyos y de tu proveedor, y nadie más puede adivinarlos.
## Si ves un aviso de "productos que ya no existen"
Puede pasar con formularios importados de versiones antiguas, o si alguien borró un producto de Shopify que estaba vinculado.
Es un aviso naranja arriba del formulario, y trae un botón **Quitar referencias borradas**.
- Si los productos que menciona **de verdad ya no existen** en tu tienda, pulsa el botón: limpia esas referencias y deja el formulario sano.
- Si te suenan y **crees que sí existen**, no pulses nada y escríbenos. El botón borra los complementos de las opciones, y si el aviso estuviera equivocado perderías configuración.
## El idioma se ajusta solo
Cada formulario tiene un idioma "principal" que es el de la tienda donde se creó. Si copias un formulario de una tienda española a una inglesa, la app **cambia la base al idioma de la tienda de destino** durante la importación, y guarda el idioma original como traducción.
No pierdes ningún texto y no tienes que hacer nada. Si en la tienda de destino falta la traducción de algún campo, ese campo se queda como estaba en lugar de vaciarse.
Para entender de dónde sale cada texto, mira [Idiomas y textos](https://docs.getoptical.app/guias/traducciones/).
## Los formularios de ejemplo
**Al instalar la app ya tienes cuatro**, en borrador, sin que hagas nada:
- **Gafas graduadas · pantalla completa** — los 11 pasos de una óptica a pantalla partida, con colores de tratamiento de muestra (sin producto detrás: cámbialos por tus tintes).
- **Gafas graduadas** — los mismos 11 pasos en panel lateral: tipo de gafas, grosor de la lente, aumento de lectura, tratamientos, cómo nos das tu graduación, la graduación, el resumen, la subida de receta y los accesorios.
- **Gafas de sol · oscuro** — solo sol o graduadas, tinte, polarización y accesorios, con la plantilla de diseño Oscura.
- **Lentillas** — los 3 pasos de una venta de lentillas: tipo de lentilla, graduación por ojo y complementos de cuidado.
Los cuatro llegan **en el idioma de tu tienda** y en **borrador**, así que no aparecen en ninguna página de producto hasta que tú los actives.
**Vienen sin complementos a propósito**, por lo que acabas de leer. Ábrelos, recorre los pasos, y ve vinculando tus productos en las opciones donde quieras cobrar un extra.
## Después de importar, en este orden
1. **Revisa los pasos** y ajusta los textos a cómo hablas tú de tus lentes.
2. **Vincula tus complementos** en las opciones que lleven precio.
3. **Asigna el formulario** a tus productos o colecciones, en la pestaña *Productos*.
4. Pon el estado en **Activo**.
5. Pulsa **Sincronizar ahora** y espera a que diga *Sincronizado*.
**Sin sincronizar no se ve**
Guardar guarda, pero no publica. Hasta que sincronices, tus clientes no verán el formulario nuevo. Lo mismo cada vez que cambies algo.
---
# Leer la analítica
> Qué significa cada cifra de la pestaña Analítica, qué es la señal «aquí se quedan» y qué tocar en tu formulario según el paso que pierde clientes.
Source: https://docs.getoptical.app/guias/analitica/
Language: es
La pestaña **Analítica** del admin cuenta qué hacen tus clientes con el configurador: cuántos lo abren, cuántos llegan al carrito y en qué paso se quedan los que no. Esta guía explica cada cifra y, sobre todo, qué hacer con ella.
## Dónde está y qué periodo mira
En el menú de la app, **Analítica**. Arriba eliges el periodo: últimos 7, 30 o 90 días. Cada cifra se compara con el periodo anterior de la misma duración, y ese es el número pequeño con la flecha. Las cifras se recalculan como mucho cada diez minutos: si acabas de probar el configurador, dale ese margen antes de buscarte en el embudo.
## Las cuatro cifras de arriba
- **Lo abrieron.** Clientes distintos que abrieron el configurador. Un cliente que lo abre tres veces cuenta una.
- **Llegaron al carrito.** Clientes que terminaron y añadieron su pedido.
- **Conversión.** De los que abren, cuántos terminan. En las tiendas que medimos se mueve entre el 20 y el 30 por ciento; por debajo del 20 casi siempre hay un paso que pierde gente, y el embudo te dice cuál.
- **Tiempo típico.** Lo que tarda un cliente en completarlo, en mediana: la mitad tarda menos, la mitad más. Entre uno y dos minutos es normal con cinco pasos.
Debajo, y solo cuando ha ocurrido, una línea en rojo: **Errores al añadir al carrito: N**, con el desglose por causa — montura agotada, complemento no disponible, límite de stock en el carrito, tienda ocupada. Cada uno es un cliente que terminó el formulario y no pudo comprar. Un «complemento no disponible» repetido es un tratamiento o un accesorio sin stock o en borrador: revísalo en el editor con **Comprobar precios**.
## Día a día
El gráfico enseña aperturas y llegadas al carrito por día, con el periodo anterior en línea discontinua. Sirve para ver si un cambio en el formulario o una campaña movió algo, no para leer un día suelto: con pocas visitas cualquier día parece una tendencia.
## Dónde se quedan
Un embudo por formulario. Cada barra es un paso: cuántos clientes llegaron a él y, en rojo, cuántos cerraron el configurador estando justo ahí. Lo que importa no es el rojo en bruto sino la proporción: un paso al que llegan 10 y pierde 5 es peor que uno al que llegan 500 y pierde 20.
Los pasos se nombran con la etiqueta que les diste en el editor. Un paso que borraste sigue apareciendo mientras tenga datos, marcado como eliminado.
## La señal: «aquí se quedan»
Sobre el embudo de cada formulario, la app te señala **el paso que más pierde** en proporción a los que llegan, y te dice qué tocar. Para no señalar ruido, solo aparece cuando al paso han llegado **al menos 20 clientes** y **se va el 25 por ciento o más** de ellos. Con menos datos verás «todavía pocos datos» y el número de sesiones que llevas; con datos suficientes y ningún paso por encima del umbral, «ningún paso pierde más del 25 por ciento».
La señal trae dos botones: **Editar el formulario**, que abre ese formulario en el editor, y **Cómo mejorarlo**, que trae aquí.
La misma señal, la mayor de todos tus formularios, aparece también en el **Home** de la app, debajo de tus formularios. Puedes descartarla; si otra semana la señal cambia de paso, vuelve a aparecer.
## Qué tocar según el paso que pierde
**Un paso de elección** (tipo de lente, índice, tratamiento, color). Es donde más gente se va, y casi siempre por la misma razón: tiene que decidir algo que no domina, y ve el precio. Deja tres o cuatro opciones y marca la que recomiendas con la etiqueta «Recomendada» (botón **Elegir etiqueta** en la opción; el cliente ve la etiqueta junto al nombre). Añade un texto de ayuda a las que confunden, dales un icono del pack y enseña el precio como suplemento sobre lo anterior, no como un total nuevo. Ver [Crear un formulario](https://docs.getoptical.app/guias/crear-formulario/), [Iconos](https://docs.getoptical.app/guias/iconos/) y [Precios y cobro](https://docs.getoptical.app/guias/precios-y-cobro/).
**El paso de graduación** (gafas, lectura o lentillas). Quien no tiene la receta a mano se va. Haz opcionales la adición y la distancia pupilar, pon un ejemplo de receta en el texto de ayuda y ofrece la alternativa de subir una foto de la receta con un paso de subida de archivo. Ver [Graduación y receta](https://docs.getoptical.app/guias/graduacion/) y [Subida de archivo](https://docs.getoptical.app/guias/subir-receta/).
**El resumen de la receta.** Es donde el cliente ve por primera vez todo junto y el total. Revisa que cada línea tenga un precio que se entienda y que el botón diga exactamente lo que va a pasar.
**La subida de archivo.** Acepta imagen y PDF, di qué formatos y qué tamaño valen, y deja saltarla: si es obligatoria y el cliente no tiene la receta a mano, se va.
**Accesorios y extras.** Son opcionales: no los marques por defecto y enseña el suplemento de cada uno. Si la gente se va justo aquí, lo que sorprende es el precio. Ver [Complementos y accesorios](https://docs.getoptical.app/guias/accesorios-y-addons/).
**Un campo de texto.** Un campo de texto obligatorio frena. Hazlo opcional o convierte la pregunta en opciones.
Después de cada cambio, espera 30 días y vuelve a mirar el mismo embudo. Es la única manera de saber si el cambio sirvió.
## Lo que más eligen
La tabla de abajo cuenta, solo de pedidos terminados, qué opciones se eligieron más veces. Es la respuesta a «¿merece la pena la opción cara?» y a «¿alguien elige esto?». Los pasos de receta no entran nunca.
## Lo que no se mide
Estas cifras son anónimas. La app no guarda ninguna graduación, ningún archivo ni ningún dato del cliente, y las cifras no salen de tu tienda: nadie más las ve. Los datos se conservan 195 días y después se borran solos; el embudo de un periodo que ya no existe no se puede recuperar.
Si quieres cruzar estas cifras con tu propia analítica o tu chat, el configurador emite eventos en el navegador para eso: [Qué hacer con cada evento](https://docs.getoptical.app/desarrolladores/eventos/).
---
# Cuando algo no funciona
> Busca tu síntoma, sigue las comprobaciones en orden y para en cuanto una falle. Sin tecnicismos.
Source: https://docs.getoptical.app/guias/cuando-algo-no-funciona/
Language: es
Busca abajo **lo que ves** y sigue las comprobaciones **en el orden dado**. Están ordenadas de la causa más frecuente a la más rara, así que para en cuanto una falle: esa es.
---
## No veo el botón en la página de producto
El caso más común, y casi siempre es una de las cinco condiciones que hacen falta a la vez.
**1. ¿La Guía de configuración está al 6/6?**
Ábrela en el inicio de la app. Si algún paso está pendiente, ahí tienes la respuesta — sigue ese paso y vuelve.
**2. ¿El formulario está Activo *y* Sincronizado?**
Ajustes del formulario. Hacen falta **las dos** cosas. *Activo* pero *Sin sincronizar* significa que tus cambios aún no han salido a la tienda: pulsa **Sincronizar ahora** y espera al verde.
**3. ¿Este producto tiene formulario asignado?**
Pestaña **Productos** del formulario. Un formulario perfecto sin asignar no aparece en ninguna parte. Si lo asignaste por **colección**, comprueba que el producto está realmente en esa colección y que la colección está **publicada en Tienda online**: las que no lo están no muestran el formulario ([Productos y colecciones](https://docs.getoptical.app/guias/productos-y-colecciones/)).
**4. ¿El bloque está en la plantilla que usa este producto?**
Esta es la que más despista. Si tienes varias plantillas de producto, el bloque hay que añadirlo **en cada una**. Mira en el producto, barra lateral derecha, **Plantilla de tema**, cuál usa — y comprueba que el bloque está en esa.
**5. ¿Estás mirando el tema publicado?**
Los ajustes de tema no se comparten entre temas. Si añadiste el bloque a un borrador, en el tema en vivo no está.
**Atajo**
Cambiar de tema **borra** la incrustación y el bloque, porque son ajustes del tema. Si el botón desapareció justo después de cambiar o actualizar el tema, es eso: la Guía te lo marcará en rojo.
---
## Veo dos botones iguales
Añadiste el bloque dos veces. Pasa con facilidad: el enlace de la Guía **ya deja el bloque puesto** en el editor, así que si además añades otro a mano, quedan dos.
En el editor de temas, sobre la plantilla de producto, borra el que sobre y guarda.
---
## El botón sale, pero al pulsarlo no pasa nada
Casi siempre es que **la incrustación está desactivada**. El botón lo muestra un bloque, pero el formulario lo carga la incrustación: sin ella, hay botón pero no se abre nada.
Ve a la Guía de configuración y comprueba el paso **"Activa la incrustación de la app"**. Si está en verde y sigue sin abrir, escríbenos con el nombre y la versión de tu tema.
---
## Elijo una variante y el carrito recibe otra
Por ejemplo, eliges el color negro y llega el azul.
El formulario lee la variante en el momento de abrirlo **y otra vez al añadir al carrito**, así que cambiar de variante con el formulario abierto es seguro.
Si aun así falla, tu tema anuncia la variante de una forma poco común. Tiene arreglo sin tocar código: en los ajustes del bloque hay un campo para indicárselo. **Escríbenos con la URL del producto** y te decimos exactamente qué poner.
---
## Añado al carrito y el carrito no se entera
El pedido **sí** se ha añadido —compruébalo abriendo el carrito— pero la pantalla no se actualiza sola.
1. Recarga la página y mira el carrito. Si el producto está, es un problema de refresco visual, no de venta.
2. En los ajustes de la incrustación, comprueba que **«Mantener el carrito sincronizado»** está activado.
3. **Tu tema es Dawn y el panel del carrito se abre vacío o en blanco**, aunque al cerrarlo y volver a abrirlo (o al recargar) sí salen las líneas: es un fallo nuestro ya corregido. Asegúrate de tener la última versión de la app (los temas la cargan solos; basta recargar la tienda) y, si sigue igual, escríbenos con el nombre y la versión de tu tema.
4. Si tu tema es poco habitual, en el apartado **Avanzado** de la incrustación hay campos para indicarle dónde está tu carrito. Escríbenos antes de tocarlos: normalmente no hacen falta.
---
## Los tratamientos salen sueltos en el carrito
Deberían verse **debajo de la montura**, indentados, como parte del conjunto.
Cuando salen como líneas independientes, es que tu tema muestra el carrito de una forma que la app no reconoce. **No afecta a la venta**: los precios, el pedido y el checkout son correctos; solo se ve peor.
Escríbenos con el nombre del tema. Suele resolverse con unas líneas en **Custom CSS**.
---
## El cliente puede cambiar la cantidad de un tratamiento
**Es a propósito, no es una avería.** La app coloca las líneas de tratamiento debajo de la montura, pero **no les esconde ni la cantidad ni la papelera**.
El motivo: esconder un botón no impide la acción —quien quiera puede cambiar esa línea igual desde la API del carrito— y esa misma fila la usan otras apps para garantías y seguros de envío; taparles la papelera dejaría a tu cliente con un cargo ajeno que no puede quitar.
Lo que sí está garantizado siempre: **borrar la montura borra todo su conjunto**, lo muestre como lo muestre el tema.
Si lo que quieres es que esas líneas pesen menos visualmente, activa **Compactar las líneas de complementos** en la incrustación de la app. Ver [Diseño y carrito](https://docs.getoptical.app/guias/diseno-y-carrito/).
---
## Los precios del formulario no cuadran con los de la página de producto
1. ¿Estás mirando la **misma variante**? Los precios cambian por variante.
2. ¿Tienes **varios países o monedas** activos? Comprueba desde el mismo país que el cliente.
3. Si tienes descuentos automáticos, recuerda que muchos se aplican **en el checkout**, no en el carrito.
---
## Sale en el idioma equivocado
**El formulario entero en otro idioma:** revisa [Idiomas y textos](https://docs.getoptical.app/guias/traducciones/). Lo más habitual es haber escrito un texto en los campos del paso, que **se aplica a todos los idiomas**.
**Solo el botón:** si escribiste algo en *Texto del botón* (en el bloque del tema o en Diseño › Textos de la interfaz), ese texto se usa tal cual en todos los idiomas. **Déjalo vacío** y se traduce solo.
**Un formulario traído de otra tienda:** al importarlo se ajusta al idioma de tu tienda automáticamente. Si algún campo no tenía traducción, se queda en el idioma de origen — edítalo con el selector de idioma.
---
## Un aviso naranja dice que faltan productos
*"N productos referenciados ya no existen en tu catálogo"*.
Significa que algún tratamiento o accesorio vinculado a una opción se ha borrado de Shopify.
- Si **de verdad los borraste**, pulsa **Quitar referencias eliminadas**.
- Si **te suenan y crees que siguen existiendo**, no pulses nada y escríbenos. Ese botón borra los complementos de las opciones, y si el aviso fuera equivocado perderías configuración.
---
## El cliente ve «X no está disponible ahora mismo»
Al pulsar «Añadir», el panel explica por qué Shopify no aceptó el pedido, en el idioma de la tienda:
- **«La montura X está agotada. Elige otra montura.»** — la variante elegida no tiene stock. El botón de la página de producto debería salir ya como «Agotado»; si no, revisa [el botón del producto](https://docs.getoptical.app/guias/boton-del-producto/#cuando-la-montura-está-agotada).
- **«X no está disponible ahora mismo. Avisa a la tienda para que lo revise.»** — un tratamiento, un color o un accesorio del formulario está sin stock, en borrador, archivado o fuera del canal Tienda online. Es tuyo de arreglar: abre el formulario y, en la pestaña **Pasos**, mira las etiquetas «Agotado», «Borrador» o «No está en Tienda online» (salen solas al abrir; **Comprobar precios** las vuelve a leer).
- **«Ya tienes el máximo disponible de X en el carrito.»** — el cliente ya tiene en el carrito todas las unidades que quedan.
- **«X ya no está disponible. Vuelve atrás y elige otra opción.»** — una opción que el cliente ya había elegido ha dejado de poder venderse: se ha agotado, o su producto está en borrador, archivado, fuera del canal **Tienda online** o eliminado. Sale en cuanto la app lo sabe, sin esperar a «Añadir»: el panel le quita esa respuesta y, si el paso la exige, no le deja seguir hasta que elija otra. Abre el formulario: el editor marca con una etiqueta qué producto es.
- **«No se encontró la variante»** (en el idioma de tu tienda) — un producto vinculado en el formulario no está en el canal **Tienda online**, o se ha borrado. Shopify no dice cuál, y rechaza también la montura. Ya es raro llegar aquí: el panel muestra esas opciones como «Agotado» antes de que nadie las elija, el editor te avisa al abrir el formulario y, si Shopify rechaza el añadido sin explicarlo, el panel vuelve a consultar y nombra la opción en vez de enseñar esta frase. Si la ves, revisa los productos de las opciones elegidas y [ponlos en el canal](https://docs.getoptical.app/empezar/antes-de-empezar/#cómo-poner-un-producto-en-el-canal-tienda-online).
- Cualquier otra frase es la de Shopify tal cual.
Analítica cuenta estos casos en **Errores al añadir al carrito**.
---
## Cambié algo y en la tienda sigue igual
Guardar **no** publica. Pulsa **Sincronizar ahora** en el formulario y espera a que ponga *Sincronizado*.
Si dice *Error de sincronización*, vuelve a intentarlo. Si insiste, escríbenos con el nombre del formulario.
---
## Cuando escribas a soporte
Cuanto más de esto nos mandes, antes lo resolvemos:
- **URL del producto** donde falla (y la contraseña de la tienda si está protegida)
- **Nombre y versión del tema**
- **Qué esperabas y qué pasó**
- Una **captura** o un vídeo corto
- Si sabes hacerlo: activa el **Modo depuración** en los ajustes de la incrustación, repite el fallo, abre la consola del navegador (F12) y cópianos lo que salga
Ese último punto es el que más acelera las cosas: nos dice exactamente por dónde pasó la app antes de fallar.
**[support@getoptical.app](mailto:support@getoptical.app)**
---
# Planes y facturación
> Planes de Optical Form, prueba gratis de 14 días y 0% de comisión.
Source: https://docs.getoptical.app/facturacion/planes/
Language: es
Optical Form cobra un **precio fijo** y **0% de comisión** sobre tus ventas. La facturación es a través de **Shopify App Pricing**: eliges y cambias de plan en la propia página de Shopify, y el cargo aparece en tu factura de Shopify.
## Planes
| Plan | Precio | Incluye |
|---|---|---|
| **Pro** | $49/mes o $490/año | Todo lo que la app hace hoy: gafas graduadas, **lentillas** y configuradores ilimitados |
| **Plus** *(próximamente)* | $99/mes o $990/año | + guardar y reutilizar la graduación, recompra, suscripciones de lentillas y soporte prioritario |
Pagando al año te ahorras dos meses. Todos los planes incluyen **prueba gratis de 14 días**. Los precios están en **USD**.
## Prueba gratis
Los 14 días van asociados a la **suscripción**, no a la instalación: el contador empieza el día que eliges plan en Shopify. Mientras te lo piensas no gastas prueba.
Los 14 días no generan cargo por adelantado. Cancela antes de que terminen y no se te cobra nada.
## Qué pasa desde que instalas
Hay **dos periodos distintos**, y conviene no confundirlos: los **14 días de bienvenida**, que empiezan al instalar, y los **14 días de prueba**, que empiezan al elegir plan. No se solapan ni se restan: puedes usar los primeros enteros y después tener los segundos completos.
| Momento | Qué pasa |
|---|---|
| **Día 0 — instalas** | Todo funciona, **sin elegir plan**: puedes crear y editar formularios, asignarlos y publicarlos en tu tienda. Ya tienes cuatro formularios de ejemplo en borrador. En el Home verás un aviso amarillo con la fecha en que termina la bienvenida y los días que quedan. |
| **Día 3** | Si aún no has elegido plan, te escribimos un correo para recordarte que los días de prueba no han empezado a contar. |
| **Día 11** | Segundo correo, con la fecha en que se acaba la bienvenida. |
| **Día 14 — se acaba la bienvenida** | Tus configuradores dejan de mostrarse en la tienda y los formularios ya no se pueden editar. **No se borra nada**: formularios, pasos, complementos y ajustes se conservan tal cual, y vuelven a publicarse en cuanto elijas plan. |
| **Eliges plan — el día que quieras** | Se abre la página de Shopify y apruebas el cargo. Empiezan tus **14 días de prueba** sin cobro. Cancela antes de que terminen y no pagas nada. |
| **Día 15 de la prueba** | Shopify te cobra $49 (o $490 si elegiste el año) en tu factura de Shopify. |
Dos detalles que ahorran sorpresas:
- **Desinstalar y volver a instalar no reinicia los 14 días de bienvenida**: cuentan desde la primera instalación.
- Shopify recuerda los días de prueba consumidos durante 180 días: si usas 10 días de prueba, cancelas y vuelves dos meses después, te quedan 4, no 14.
Para elegir plan: dentro de la app, en **Plan y facturación**, pulsa **Ver planes y precios**. Se abre la página de Shopify donde apruebas el cargo — es la única puerta al pago. Al aprobarlo, Shopify te devuelve al Home de la app: durante unos segundos verás **«Activando tu plan…»** mientras confirmamos la suscripción con Shopify, y después tu plan activo y tus configuradores publicados de nuevo.
## Agencias y tiendas de desarrollo
Si montas la tienda para un cliente desde una tienda de desarrollo de Shopify Partners, **Pro no te cuesta nada ahí** y el reloj de la bienvenida deja de correr en cuanto lo eliges. Cómo funciona, y qué pasa al pasar a la tienda real, en [Agencias y tiendas de desarrollo](https://docs.getoptical.app/desarrolladores/tiendas-de-desarrollo/).
## Cambiar de plan
Puedes subir, bajar de plan o cancelar en cualquier momento desde Shopify — sin contactar a soporte.
## Sin comisión
No cobramos ningún porcentaje de tus ventas. El precio del plan es lo único que pagas — te quedas el 100% de cada venta.
---
# Integración con el tema
> Cómo Optical Form se instala de forma agnóstica al tema, sus hooks y la agrupación del carrito.
Source: https://docs.getoptical.app/desarrolladores/integracion/
Language: es
Optical Form funciona en **cualquier tema con Online Store 2.0** —los que permiten añadir bloques desde el editor de temas— y no necesita desarrollador para instalarse. Está verificado en **Dawn** y **Horizon**; para temas a medida hay adaptadores y los hooks de abajo. Esta página resume la capa de integración para quien quiera personalizarla. Para los ajustes visuales del bloque y de la incrustación, ver [Botón y carrito (tema)](https://docs.getoptical.app/desarrolladores/boton-y-carrito/).
## Resolución de variante (agnóstica al tema)
El panel y el botón son web components independientes que **no** se re-renderizan al cambiar de variante. Por eso Optical Form resuelve la variante actual **de forma perezosa** (al abrir y al añadir al carrito), con esta cadena de prioridad:
1. Hook del comerciante: `window.OpticalFormHooks.getVariantId(triggerEl)`
2. Selector configurable en el bloque (setting *Variant input selector*)
3. Input estándar del formulario de producto `[name="id"]` (Dawn/Horizon y la mayoría)
4. Parámetro de URL `?variant=`
5. Fallback al valor renderizado por el servidor
## Plan de suscripción (apps de suscripciones)
El configurador no muestra ningún selector de planes: el cliente elige el plan en la página de producto, con la app de suscripciones que tenga la tienda (Shopify Subscriptions, Appstle o cualquier otra), y Optical Form **lleva esa elección** al carrito. Se resuelve al añadir, en este orden:
1. Hook del comerciante: `window.OpticalFormHooks.getSellingPlanId(triggerEl)`
2. Un `[name="selling_plan"]` dentro del formulario de producto **de este producto** (`form[action*="/cart/add"]` cuyo `[name="id"]` es una de sus variantes): radio marcado, `