Organ&co Tonica B2B Organ&co Tonica B2B

Guía de usuario

Canal mayorista para tu tienda Shopify

Español (Argentina) v1.0 wearetonicadev
📷
Las capturas usan el nombre del archivo en assets/{id}.png (ej. settings-email-presupuesto.png). Pendientes: catalogo-coleccion-tabla, inicio-checklist.

Organ&co Tonica B2B — Guía de usuario para merchants

Versión: 1.0 · Idioma: Español (Argentina) · Audiencia: Dueños de tienda, ecommerce managers, equipos de ventas B2B.

1. Introducción

Organ&co Tonica B2B es una aplicación que se instala dentro de tu panel de Shopify Admin y convierte tu tienda en un canal mayorista sin reemplazar nada de lo que ya tenés.

¿Qué resuelve?

Con Organ&co Tonica B2B podés:

  • Crear grupos de clientes (Distribuidores, Hoteleros, Revendedores, etc.) con condiciones distintas.
  • Definir listas de precios con porcentajes de descuento, precios fijos por producto y tramos por cantidad.
  • Gestionar el registro y aprobación de clientes mayoristas desde un formulario configurable.
  • Controlar quién ve cada precio, puede agregar al carrito o cotizar, según el estado del cliente.
  • Restringir colecciones, productos y URLs a clientes B2B aprobados.
  • Generar cotizaciones como borradores de pedido (Draft Orders) en Shopify.
  • Sincronizar los descuentos B2B con el checkout de Shopify.

¿Qué NO hace?

  • No reemplaza Shopify B2B nativo (el módulo de Companies de Shopify Plus).
  • No envía emails automáticos al aprobar un cliente. Para eso, configurá un Shopify Flow con el tag b2b:approved.
  • No diseña ni modifica el tema de la tienda: el merchant activa los bloques y embeds manualmente.
  • No es facturación electrónica: el email de presupuesto que envía es el de Shopify (invoice del borrador).
admin-menu-tonica-b2b
Dónde: Shopify Admin → Apps → Organ&co Tonica B2B. Qué debe verse: menú lateral completo de la app.

2. Requisitos previos

Antes de instalar Organ&co Tonica B2B, verificá que tu tienda cumpla con lo siguiente:

  • Shopify Online Store activo (cualquier plan).
  • Tema 2.0 (o superior) habilitado — necesario para activar los App Embeds y bloques de la extensión.
  • Cuentas de cliente nuevas habilitadas en Shopify si querés usar la sección "Mis cotizaciones" en el perfil del comprador.
  • Acceso de administrador en Shopify para instalar apps y editar el tema.

2.1 Glosario

Antes de arrancar, familiarizate con estos términos que vas a ver en toda la guía:

TérminoSignificado
Grupo de clientesSegmento B2B (ej. Hoteleros). Al aprobar un cliente, Shopify recibe el tag b2b:slug.
Lista de preciosReglas de precio del grupo: % general, precios especiales, tramos por cantidad.
Visible para el usuarioOpción en cada descuento: si está off, el cliente solo ve el precio final (sin tachado ni leyenda).
Precio especial / overridePrecio fijo o % por producto, variante o colección.
Descuento por volumenTramos por cantidad con % o precio fijo adicional.
Perfil B2BSolicitud de alta mayorista de un cliente (pendiente / aprobado / rechazado / suspendido).
VisitanteNo inició sesión en la tienda.
RetailLogueado pero sin perfil B2B aprobado.
PendienteSe registró como B2B y espera la aprobación del merchant.
AprobadoB2B activo con grupo asignado; ve precios mayoristas y puede cotizar.
Cotización / presupuestoBorrador de pedido creado desde el Quote Drawer.
Quote DrawerPanel lateral de la tienda donde el cliente arma y envía su presupuesto.
URL restringidaRuta de la tienda solo accesible para clientes aprobados.
Intranet B2BModo de confinamiento donde el cliente aprobado solo navega dentro de las URLs permitidas.
Badge AutoMarca en las URLs del grupo que indica que la app las creó automáticamente.

3. Primeros pasos — checklist de 10 pasos

Seguí este orden para poner en marcha el canal B2B:

  1. ☐ Instalá Organ&co Tonica B2B desde el Partner Dashboard o el enlace de instalación.
  2. ☐ Abrí la app → sección Inicio (esto registra webhooks y configura la app en tu tienda).
  3. ☐ En Configuración: activá la app, definí la moneda y los días de vigencia de cotizaciones.
  4. ☐ Creá tu primer Grupo de clientes (ej. Distribuidores).
  5. ☐ Creá una Lista de precios y asociala al grupo.
  6. ☐ En Acceso y visibilidad: configurá la matriz de estados (quién ve precios, quién cotiza).
  7. ☐ Activá Descuentos B2B → Sincronizar todos (para que los precios apliquen en checkout).
  8. ☐ Configurá el Formulario de registro con los campos que necesitás.
  9. ☐ En el editor de tema: activá B2B Mode y Quote Drawer como App Embeds.
  10. ☐ Probá el flujo completo: registro → aprobación → cotización.
Tip: Podés probar cualquier configuración de precios desde el Simulador antes de publicarla.
inicio-stats
App → Inicio. Checklist de configuración y tarjetas de resumen del canal B2B.

4. Inicio

La pantalla de Inicio es el punto de partida cada vez que entrás a la app.

Qué encontrás:

  • Banner de pendientes: si hay clientes esperando aprobación, aparece un aviso con enlace directo a Aprobaciones.
  • Checklist de configuración: muestra qué pasos del setup están completos y cuáles faltan.
  • Tarjetas estadísticas: cantidad de grupos, listas de precios, clientes pendientes y aprobados.
  • Accesos rápidos: Borradores, Clientes, Acceso y visibilidad, Simulador.
  • Instrucciones de tema: guía rápida para activar los bloques B2B en el editor de tema.
inicio-stats
Dónde: App → Inicio. Qué debe verse: tarjetas con números de grupos, listas, pendientes y aprobados.

Qué pasa en la tienda:

  • Sin completar el checklist, el canal B2B puede estar incompleto: sin precios B2B visibles, sin cotizador activo, etc.

5. Configuración

Encontrás esta sección en el menú lateral de la app.

Interruptor global

El toggle de activación enciende o apaga todo el canal B2B en la tienda. Al desactivarlo, la tienda vuelve a funcionar como retail normal para todos los usuarios, pero no se borran ninguno de los datos (grupos, listas, perfiles B2B).

settings-toggle
Dónde: App → Configuración. Qué debe verse: interruptor global en posición on/off.

Cotizaciones

CampoFunción
Días de vigenciaCuántos días tiene validez un presupuesto enviado.
MonedaMoneda en que se muestran los precios B2B.

Icono del cotizador

Configurá si el botón para abrir el Quote Drawer aparece en el header, flotante o ambos, y el texto de accesibilidad del ícono.

Quote Drawer

Define el título del panel lateral (ej. "Mi presupuesto").

Pedido rápido

Activá o desactivá el enlace de pedido rápido (carga masiva por SKU) en la barra B2B.

Email de presupuesto

CampoFunción
Auto-envíoEnviar el email de Shopify automáticamente al crear el borrador.
Link de pagoIncluir o no el link de pago en el email.
BCC staffEmails del equipo que reciben copia del presupuesto.
Asunto y mensajeTexto personalizable del email.
settings-email-presupuesto
Dónde: App → Configuración → sección Email presupuesto. Qué debe verse: campos de asunto, mensaje y BCC.

Mis cotizaciones

Si tus clientes usan Cuentas de cliente nuevas de Shopify, ingresá aquí el ID de la página de Mis cotizaciones para que el login y post-login los lleven directo ahí.

settings-mis-cotizaciones-id
Dónde: App → Configuración. Qué debe verse: campo para ingresar el ID de página de cotizaciones.

Qué pasa en la tienda:

  • App desactivada = todos ven la tienda como retail.
  • Email off = no llega mail de Shopify al cliente cuando el merchant crea el borrador.

6. Grupos de clientes

Los grupos son el corazón de la segmentación B2B. Cada grupo tiene sus propias reglas de precio, acceso y comportamiento en la tienda.

Listado de grupos

La pantalla principal muestra todos los grupos con: nombre, slug, % de descuento base, estado (activo/inactivo) y cantidad de clientes.

grupos-lista
Dónde: App → Grupos de clientes. Qué debe verse: tabla con grupos, slug, % descuento y estado.

Crear o editar un grupo

CampoDescripción
NombreEj. Distribuidores (visible en el admin).
SlugIdentificador único en minúsculas, ej. distribuidores. Se usa como tag en Shopify: b2b:distribuidores.
Etiqueta en storefrontTexto opcional que ve el cliente en la barra B2B.
% descuento grupoPorcentaje base para el descuento automático en checkout. Ponelo en 0 si no querés descuento general y usás solo overrides o tramos.
Plazo de pagoInformativo, aparece en cotizaciones.
Pedido mínimoInformativo.
ActivoUn grupo inactivo no recibe nuevas asignaciones.

Detalle del grupo

Dentro de cada grupo encontrás:

Clientes del grupo: listado de clientes aprobados con ese grupo. Podés buscar por nombre o email, importar en masa por tag, o quitar clientes individualmente.

URL del catálogo del grupo: la ruta de la colección principal de ese grupo, ej. /collections/hoteleros. Es obligatoria si usás redirecciones automáticas o el Catálogo por colección. Sin esta URL configurada, las redirecciones no funcionan.

URLs y redireccionamiento: reglas de URL específicas para ese grupo (bloquear o redirigir). Las generadas automáticamente desde Catálogo por colección muestran el badge Auto.

grupo-detalle-urls
Dónde: App → Grupos → detalle de un grupo. Qué debe verse: sección URLs con reglas y el campo URL de catálogo.
grupo-badge-auto
Dónde: Listado de URLs del grupo. Qué debe verse: una regla con badge azul "Auto" indicando que fue creada por la app.

Qué pasa en la tienda:

  • Al aprobar a un cliente y asignarle este grupo, recibe el tag b2b:slug en Shopify.
  • Ve los precios de la lista de precios asociada al grupo.
  • Accede al catálogo del grupo y es redirigido fuera de colecciones restringidas.

7. Listas de precios

Cada lista se asocia a un único grupo y define cómo se calculan los precios para esos clientes.

Configuración general

CampoFunción
NombreIdentificación interna de la lista.
GrupoSegmento B2B al que aplica.
Tipo / valor / direcciónDescuento general (% o monto fijo) sobre el precio de lista.
Visible para el usuarioSi está desmarcado (default): el cliente ve solo el precio final, sin precio tachado ni texto de descuento. Si está marcado: ve el precio anterior tachado y la leyenda del descuento.
ActivaLista inactiva = no aplica en la tienda.
price-list-editor
App → Listas de precios → editor. Ajuste general y checkbox Visible para el usuario.

Exclusiones

Productos o colecciones que no reciben el descuento general de esta lista.

Precios especiales (producto o colección)

Overrides que ganan sobre el ajuste general:

  • Producto / variante: precio fijo o % para un SKU concreto.
  • Colección: precio fijo o % para todos los productos de una colección.

Cada override tiene su checkbox Visible para el usuario (default: desmarcado). En la tabla podés cambiarlo sin volver a cargar el precio.

Descuentos por volumen

Grupos de tramos (5+, 10+, 20+ cajas, etc.) con alcance:

  • Toda la lista (GLOBAL)
  • Colecciones, productos o variantes seleccionadas

Un grupo = un alcance + varios tramos. El checkbox Visible para el usuario aplica a todo el grupo (default: marcado).

quantity-breaks
App → Listas de precios → descuentos por volumen. Grupo con tramos y visibilidad para el cliente.

Duplicar lista

Desde el detalle: Duplicar lista → formulario precargado → elegir grupo destino → Guardar copia. Copia exclusiones, overrides y tramos. Luego sincronizá Descuentos B2B.

⚠️ Importante: los precios en tienda los calcula la app. Para que el descuento también aplique en checkout, sincronizá en Descuentos B2B (cap. 8).

Qué pasa en la tienda:

  • Con descuento invisible, el cliente ve solo el precio B2B recalculado (sin tachado ni “% off”).
  • Con descuento visible, ve precio tachado + leyenda.
  • La tabla Descuentos por volumen en la PDP solo aparece si el producto tiene tramos configurados.
  • Los precios B2B también se muestran en grillas de colección (embed B2B Collection Prices).

8. Descuentos B2B

Esta sección muestra el estado de sincronización entre tus listas de precios y el sistema de descuentos automáticos de Shopify.

¿Qué son los descuentos sincronizados?

Cuando un cliente B2B aprobado llega al checkout, Shopify aplica automáticamente el descuento de su grupo gracias a un "descuento automático" vinculado al tag b2b:slug. Organ&co Tonica B2B crea y actualiza esos descuentos por vos.

Pantalla de descuentos

La tabla muestra cada grupo con:

  • % efectivo aplicado en checkout.
  • Estado: Sincronizado, Pendiente sincronización, Sin descuento.
discounts-sync
Dónde: App → Descuentos B2B. Qué debe verse: tabla con grupos, % efectivo y estado de sync.

Cuándo sincronizar

Sincronizá siempre que:

  • Cambiés el % de descuento de un grupo.
  • Modifiques una lista de precios.
  • Agregues o quitás tramos por cantidad.

Podés sincronizar todos los grupos a la vez o uno por uno desde la pantalla.

⚠️ Los precios fijos por variante (overrides) no se replican exactamente en el checkout vía descuentos automáticos. Para casos de precio exacto, usá el flujo de cotización/borrador.

Qué pasa en la tienda:

  • Sin sincronizar: el precio B2B aparece en la tienda pero el checkout cobra el precio retail.
  • Sincronizado: el checkout aplica el descuento automáticamente para clientes con el tag del grupo.

9. Aprobaciones

Esta es la bandeja de entrada de todos los clientes que se registraron como B2B.

Filtros disponibles

Filtrá por estado: Pendiente · Aprobado · Rechazado · Suspendido.

aprobaciones-pendientes
Dónde: App → Aprobaciones → filtro Pendiente. Qué debe verse: lista de solicitudes con datos del cliente.

Acciones sobre un cliente

Aprobar: elegís el grupo al que lo asignás. El cliente pasa a estado Aprobado y recibe el tag B2B en Shopify.

aprobaciones-modal-grupo
Dónde: App → Aprobaciones → modal de aprobación. Qué debe verse: selector de grupo y botón confirmar.

Rechazar: el perfil queda rechazado. El cliente no tiene acceso B2B.

Suspender: revocás el acceso sin borrar el perfil. Podés reactivarlo después.

También podés realizar acciones masivas: seleccionás varios clientes y aprobás/rechazás/suspendés de una vez.

aprobaciones-detalle
Dónde: App → Aprobaciones → ficha de un cliente. Qué debe verse: datos del formulario (empresa, CUIT, etc.) y opciones de acción.

Qué pasa en la tienda:

  • Cliente pendiente: no ve catálogo B2B, ve mensaje de espera.
  • Cliente aprobado: barra B2B visible, precios mayoristas, acceso al cotizador.
  • Cliente suspendido: pierde acceso B2B inmediatamente.
Nota sobre emails: Organ&co Tonica B2B no envía un email automático al aprobar. Para notificar al cliente, configurá un Shopify Flow que se dispare con el tag b2b:approved.

10. Formulario de registro

Configurá cómo y qué datos pedís a quienes quieran registrarse como clientes B2B.

Presentación del formulario

Elegí dónde se muestra el formulario:

  • Drawer: se abre como panel lateral al hacer click en el botón de registro.
  • Incrustado en página: se muestra dentro de una página de la tienda (ej. /pages/registro-b2b).

Campos configurables

Activá y marcá como obligatorios los campos que necesitás:

  • Nombre y apellido (obligatorio siempre)
  • Empresa (recomendado para B2B)
  • CUIT (clave para clientes en Argentina)
  • Teléfono
  • Dirección
  • Tipo de cliente (selector con los grupos disponibles)
  • Campos personalizados adicionales
register-form-campos
Dónde: App → Formulario de registro. Qué debe verse: lista de campos con toggles de visible/obligatorio.

Auto-aprobación

Si activás esta opción, los clientes que completen el formulario quedan aprobados automáticamente (sin revisión manual). Útil si no necesitás validar empresa por empresa.

Textos

Personalizá el texto del botón de envío y el mensaje que ve el cliente al completar el formulario exitosamente.

storefront-registro
Dónde: Storefront de la tienda. Qué debe verse: formulario de registro B2B con campos de empresa y CUIT.

11. Acceso y visibilidad

Esta sección tiene tres pestañas que controlan el comportamiento B2B en toda la tienda.


Pestaña 1 — Por estado de cliente

Definí qué puede hacer cada tipo de visitante en la tienda.

access-matriz-estado
Dónde: App → Acceso y visibilidad → Pestaña "Por estado de cliente". Qué debe verse: matriz con toggles por estado.
EstadoVer preciosAgregar al carritoCotizarUso típico
VisitanteConfigurableNoNoPúblico general
RetailNoCompra minorista normal
PendienteNoNoNoEspera aprobación
AprobadoPrecios B2BNo*Mayorista cotiza

\* En el modelo B2B típico: el aprobado cotiza y el merchant convierte la cotización en pedido.

Qué pasa en la tienda:

  • Según esta configuración, la app muestra u oculta precios, el botón de carrito y el botón de cotización.
  • Los cambios aplican en tiempo real sin necesidad de deploy.

Pestaña 2 — Catálogo por colección

Controlá qué grupos tienen acceso a cada colección del catálogo.

catalogo-coleccion-modal
App → Acceso y visibilidad → Catálogo por colección. Tabla de colecciones y modal de configuración por grupo.

Para cada colección elegís uno de estos modos:

ModoSignificado
Todos los gruposSin restricción. Cualquier cliente B2B aprobado puede verla.
Solo estos gruposSolo los grupos seleccionados tienen acceso. El resto es redirigido al catálogo de su grupo.
Oculta para estos gruposLos grupos seleccionados no la ven. El resto sí puede acceder.

Al guardar, la app crea automáticamente las reglas de redirección en cada grupo afectado. Esas reglas aparecen en el grupo con el badge Auto.

⚠️ Para que las redirecciones funcionen, cada grupo debe tener configurada su URL de catálogo (en Grupos de clientes → detalle del grupo).

Sección avanzada: al final de la pestaña encontrás reglas puntuales por producto individual (colapsado por defecto).

catalogo-coleccion-avanzado-producto
Dónde: App → Acceso y visibilidad → sección avanzada. Qué debe verse: listado de overrides por producto/variante.

Qué pasa en la tienda:

  • Las colecciones configuradas como restringidas no aparecen en grillas para grupos sin acceso.
  • Si un cliente intenta entrar por URL directa, es redirigido al catálogo de su grupo.

Pestaña 3 — Por URL e intranet

URLs restringidas:

Ingresá rutas de la tienda (ej. /pages/b2b-landing, /collections/hoteleros) que solo clientes B2B aprobados pueden ver. Cualquier otro perfil ve una pantalla de "Acceso restringido" con botones de login y registro B2B.

Podés configurar el mensaje que aparece en esa pantalla y un banner de beneficios (hasta 6 tarjetas) debajo del gate.

access-urls-gate
Dónde: App → Acceso y visibilidad → Pestaña URLs. Qué debe verse: campo de paths restringidos y editor de mensaje.
storefront-acceso-restringido
Dónde: Storefront. Qué debe verse: pantalla "Acceso restringido" con botones de login y registro B2B.

Intranet B2B:

El modo intranet confina al cliente B2B aprobado dentro de un conjunto de rutas permitidas. Si intenta navegar fuera de esas rutas, es redirigido a la URL de inicio B2B.

access-intranet
Dónde: App → Acceso y visibilidad → sección Intranet. Qué debe verse: toggle de activación y configuración de rutas permitidas.
Nota: las rutas de colección creadas automáticamente desde "Catálogo por colección" se gestionan solas. En "Por URL" solo agregás rutas extra como páginas o secciones adicionales.

12. Simulador

El simulador te permite probar cómo se ven los precios sin entrar a la tienda.

Cómo usarlo:

  1. Elegí el grupo de clientes.
  2. Buscá el producto.
  3. Ingresá la cantidad.
  4. El simulador muestra el precio retail y el precio B2B resultante, con el desglose de tramos si aplica.
simulador-resultado
Dónde: App → Simulador. Qué debe verse: resultado con precio retail, precio B2B y desglose de tramos.

Usalo siempre que cambiés listas de precios o tramos por cantidad para verificar que los cálculos sean correctos antes de publicar.


13. La tienda: qué ve tu cliente

Por estado

EstadoExperiencia
Visitante en URL restringidaPantalla de gate: "Esta sección es exclusiva para clientes B2B. Iniciá sesión o registrate."
RetailPrecios normales y carrito según configuración. Sin acceso a cotizador.
PendienteBanner "Tu solicitud está en revisión". Sin precios B2B ni cotizador.
AprobadoBarra B2B visible, precios mayoristas en PDP y grillas, botón "Agregar a cotización".
storefront-topbar-aprobado
Dónde: Storefront, cliente aprobado logueado. Qué debe verse: barra B2B con nombre de grupo y links de acceso.
storefront-precio-b2b-pdp
Dónde: Página de producto, cliente aprobado. Qué debe verse: precio B2B destacado junto al precio tachado retail.
storefront-pendiente-banner
Dónde: Storefront, cliente pendiente. Qué debe verse: banner o mensaje indicando que la solicitud está en revisión.

Cotizador (Quote Drawer)

El Quote Drawer es el panel lateral desde donde el cliente B2B arma y envía su presupuesto.

Paso a paso:

  1. El cliente navega el catálogo y hace click en "Agregar a cotización" en un producto.
  2. Abre el drawer desde el ícono del header o el botón flotante.
  3. Revisa las líneas (productos, cantidades, precios B2B).
  4. Toca "Enviar presupuesto".
  5. El sistema crea un borrador de pedido en Shopify. Si el auto-envío está activo, también llega el email.
  6. El cliente ve el mensaje de éxito (configurable en Configuración).
storefront-botón-cotizar-pdp
Dónde: Página de producto, cliente aprobado. Qué debe verse: botón "Agregar a cotización" junto al botón de carrito.
storefront-drawer-abierto
Dónde: Storefront con Quote Drawer abierto. Qué debe verse: listado de líneas con producto, cantidad y precio B2B.
storefront-drawer-exito
Dónde: Storefront, tras enviar el presupuesto. Qué debe verse: mensaje de confirmación configurable.

Pedido rápido

El enlace de pedido rápido aparece en la barra B2B para clientes aprobados. Abre una pantalla donde pueden cargar productos en cantidad por SKU sin navegar el catálogo.

storefront-quick-order
Dónde: Storefront, cliente aprobado → Pedido rápido. Qué debe verse: formulario de carga masiva por SKU.

14. Tema y bloques

Para que Organ&co Tonica B2B funcione en la tienda, el merchant debe activar los App Embeds y en algunos casos agregar bloques en las plantillas.

App Embeds

Ruta: Tienda online → Personalizar → App embeds (ícono de puzzle).

EmbedFunción
B2B ModeMotor principal: policy, precios, gate de acceso, barra B2B, bloqueo de paths.
Quote DrawerPanel lateral de cotización.
B2B Collection PricesMuestra precios B2B en las tarjetas de grilla de colección.
B2B GuardPreviene el "flash" de contenido antes de cargar la policy (recomendado para intranet).
B2B NavigationMenú específico para clientes B2B (usa el menú de Shopify que vos configures).
theme-embeds-lista
Dónde: Editor de tema → App embeds. Qué debe verse: lista de embeds de Organ&co Tonica B2B con toggles de activación.

Configuración del embed B2B Mode

El embed de B2B Mode tiene ajustes propios en el editor de tema:

  • Colores de la barra B2B.
  • Textos del gate de acceso restringido.
  • ID de página "Mis cotizaciones" (debe coincidir con lo que configuraste en Configuración).
  • URL de la página de registro B2B.
theme-b2b-mode-settings
Dónde: Editor de tema → App embeds → B2B Mode → panel de settings. Qué debe verse: campos de color, texto e ID de página.

Bloques en plantillas

Para algunos casos necesitás agregar bloques específicos dentro de plantillas:

BloquePlantillaPara qué
Add to Quote ButtonProductoBotón "Agregar a cotización" en la PDP.
Formulario registro B2BPáginaSi usás el formulario incrustado en una página fija.
B2B PricingProducto B2BBloque de precio B2B en PDP (si usás plantilla alternativa).
theme-bloque-quote-button
Dónde: Editor de tema → plantilla de producto → sección de producto. Qué debe verse: bloque "Add to Quote Button" agregado.

15. Mis cotizaciones (cuentas de cliente)

Si tus clientes usan las cuentas de cliente nuevas de Shopify, podés activar la extensión "Mis cotizaciones" que les muestra un historial de sus presupuestos.

Cómo activarla

  1. Hacé deploy de la app (desde tu equipo técnico: npm run deploy).
  2. En Shopify Admin: Configuración → Checkout → Personalizar (editor de Checkout and accounts).
  3. Navegá a Cuentas de cliente.
  4. Activá la extensión Mis cotizaciones.
  5. (Opcional) Activá Mis cotizaciones (enlace) en el perfil, o agregá el enlace de navegación manualmente.
customer-account-mis-cotizaciones
Dónde: Cuenta del cliente (cuentas nuevas). Qué debe verse: lista de cotizaciones/borradores con estado y link.
checkout-editor-extension
Dónde: Shopify Admin → editor de cuentas de cliente. Qué debe verse: extensión "Mis cotizaciones" activa.

Qué ve el cliente

  • Listado de todos sus borradores enviados desde el Quote Drawer.
  • Estado de cada cotización (borrador, enviado, completado).
  • Link para ver el detalle y el invoice.
Requisito: los borradores deben tener visibleToCustomer: true para aparecer en esta extensión. La app lo configura automáticamente al crearlos desde el Quote Drawer.

16. Flujos del día a día

16.1 Nuevo registro → aprobación

  1. Revisá la sección Aprobaciones (hay un banner si hay pendientes).
  2. Abrí la ficha del cliente y verificá empresa y CUIT.
  3. Hacé click en Aprobar y elegí el grupo.
  4. (Opcional) Configurá un Flow en Shopify con el tag b2b:approved para enviarle un email de bienvenida al cliente.

16.2 Cotización recibida

  1. En Shopify Admin: Pedidos → Borradores.
  2. Abrí el borrador del cliente y revisá las líneas y precios B2B.
  3. Convertilo en pedido o ajustá manualmente si es necesario.
  4. Enviá la factura si no salió automáticamente (botón "Enviar factura" en el borrador).
  5. El cliente lo puede ver en Mis cotizaciones en su cuenta.
shopify-draft-order-admin
Dónde: Shopify Admin → Pedidos → Borradores. Qué debe verse: un borrador con precios B2B y botón de factura.

16.3 Cambiar precios

  1. En App → Listas de precios: editá el porcentaje, override o tramo deseado.
  2. O en Grupos de clientes: cambiá el % base del grupo.
  3. En Descuentos B2B → Sincronizar grupo (o todos).
  4. Verificá el resultado en el Simulador.

16.4 Suspender un cliente

  1. En App → Aprobaciones: buscá al cliente.
  2. Abrí su ficha → Acción → Suspender.
  3. El cliente pierde acceso B2B inmediatamente; el perfil queda guardado.
  4. Podés reactivarlo con Aprobar en cualquier momento.

17. Preguntas frecuentes

¿Por qué no veo los precios B2B en la tienda?

Verificá que: (1) la app esté activa en Configuración, (2) el cliente esté Aprobado con grupo asignado, (3) el embed B2B Mode esté activado en el editor de tema.

¿Por qué no puedo cotizar?

La opción de cotizar se activa en Acceso y visibilidad → estado Aprobado → columna "Cotizar". También verificá que el embed Quote Drawer esté activo y que el botón esté en la plantilla de producto.

¿Por qué el catálogo pide login?

La URL está en la lista de URLs restringidas. Solo clientes aprobados pueden entrar. Si no era la intención, revisá Acceso y visibilidad → Por URL.

¿Llega un email cuando el cliente se registra?

No automáticamente. Organ&co Tonica B2B no envía emails propios. Configurá un Shopify Flow que se dispare con el tag b2b:approved para notificar al cliente cuando lo aprobás.

¿Desactivar la app borra los grupos y datos?

No. El interruptor global solo oculta el canal B2B en la tienda. Todos los grupos, listas de precios y perfiles se conservan.

¿Cuál es la diferencia entre cotización y pedido?

Una cotización es un borrador de pedido. El cliente envía el presupuesto desde el Quote Drawer y el merchant lo convierte en pedido cuando hay acuerdo. El cliente no paga directamente desde el drawer.

¿Por qué el precio en la tienda es diferente al que aparece en el checkout?

Porque los Descuentos B2B no están sincronizados. Hacé click en Descuentos B2B → Sincronizar luego de cada cambio de precios.

¿Qué es el badge "Auto" en las URLs del grupo?

Son rutas creadas automáticamente por la app cuando configurás el Catálogo por colección. Indican que la redirección la gestiona la app y no debés borrarlas manualmente.

¿Qué hace "Visible para el usuario" en listas de precios?

Controla si el cliente nota el descuento. Desmarcado: solo precio final. Marcado: precio tachado + texto (ej. “5% off” o “Descuento por volumen”). El descuento se aplica igual en ambos casos.

¿Por qué no aparece la tabla "Descuentos por volumen" en un producto?

Solo se muestra cuando hay tramos de volumen configurados para ese producto, variante o colección. Si solo tiene descuento general o precio especial, no aparece el bloque.


18. Apéndice técnico: para tu equipo técnico

Esta página resume lo que el equipo de desarrollo necesita saber para instalar, mantener y extender Organ&co Tonica B2B. No contiene jerga de negocio: está pensada para devs.

Stack: Remix 2.15 + Prisma + PostgreSQL + Shopify App Remix + Polaris. Theme extension en extensions/quoting-drawer.

Hosting: Railway (app principal) o Vercel (producción alternativa). Base de datos en Railway Postgres o Neon.

Deploy: npm run deploy publica la configuración de Shopify y las extensiones (tema + Customer Accounts). El hosting se actualiza por separado (push → Railway, o Vercel CI).

Variables de entorno requeridas: SHOPIFY_API_KEY, SHOPIFY_API_SECRET, SHOPIFY_APP_URL (igual al application_url del toml activo), DATABASE_URL, DATABASE_URL_UNPOOLED, SCOPES, NODE_ENV=production.

Primer install en una tienda nueva: después de migrar la base de datos, reinstalar la app en la tienda para recrear la sesión OAuth.

Webhooks: app/uninstalled, app/scopes_update, draft_orders/create (shop-specific, se registran en afterAuth).

Customer Account UI: tras deploy, activar manualmente en Shopify Admin → Configuración → Checkout → editor de cuentas de cliente.

App proxy: /apps/tonica-b2b/{application_url}/api/. El subpath depende del shopify.app*.toml activo en el deploy.

Documentación técnica: consultar los archivos AI-CONTEXT.md, TONICA-B2B-SYSTEM-DOCUMENTATION.md y DEPLOYMENT-AND-OPS.md en el repositorio.


Organ&co Tonica B2B — wearetonicadev. Para soporte técnico, contactar al equipo de desarrollo.