La integración con WooCommerce permite conectar tu tienda online con BikeCRM para sincronizar productos, clientes y pedidos de forma automática. Gestiona todo desde un solo lugar y mantén tu inventario actualizado en ambas plataformas.
WooCommerce es una funcionalidad PLUS y la activa el equipo comercial de BikeCRM al contratar el plan (o como excepción manual). Si tu negocio aún no la tiene activa, contacta con soporte. El resto de la configuración la haces tú desde la app.
Abre la página de configuración
En el menú lateral, dentro de la sección Tienda, encontrarás la entrada WooCommerce. Si tu negocio no tiene aún WooCommerce activado, verás una insignia PLUS y un mensaje explicando cómo activarlo.
URL y credenciales de la tienda
Rellena los campos del formulario:
URL de la tienda — la URL completa de tu WooCommerce (por ejemplo, https://mitienda.com/).
Usuario WordPress — tu nombre de usuario de WordPress.
Application password — sigue las instrucciones de generación más abajo; no es tu contraseña de WordPress.
Webhook secret — un texto aleatorio que tú elijas (lo usarás también en WooCommerce, en el siguiente paso). Junto al campo tienes un botón ✨ que genera un secreto fuerte en tu navegador — pulsa, comprueba que aparece en el campo, y continúa. El valor solo viaja a BikeCRM cuando pulses Guardar.
Más abajo en la misma página encontrarás las opciones de IVA y facturación (paso 5) y un editor JSON para configuración avanzada. Rellena primero los campos de conexión y pulsa Guardar. Puedes acceder directamente a la página en https://bikecrm.app/integrations/woocommerce.
Configura los webhooks en WooCommerce
BikeCRM expone dos URLs públicas a las que WooCommerce te debe enviar las notificaciones:
El <slug-de-tu-negocio> es el identificador único de tu negocio en BikeCRM (por ejemplo, mibici, ciclos-perez). No tienes que componer la URL a mano: la página de configuración de WooCommerce de BikeCRM muestra las dos URLs ya completas — con tu slug correcto — y un botón copiar al portapapeles junto a cada una. Por ejemplo, para un negocio con slug mibici:
En tu panel de WooCommerce, ve a Ajustes > Avanzado > Webhooks y crea cuatro webhooks asignando cada tema a la URL correspondiente:
Tema en WooCommerce
URL de entrega
Producto actualizado
URL de productos
Producto eliminado
URL de productos
Pedido creado
URL de pedidos
Pedido actualizado
URL de pedidos
Para cada uno de los cuatro webhooks, comprueba estos campos antes de salir:
Estado: Activo — por defecto WooCommerce los crea como Inactivo; si lo dejas así, no se entrega nada.
Versión de la API: WP REST API Integration v3 — es el formato que entiende BikeCRM.
Secret: el mismo valor que pusiste en BikeCRM (el mismo en los cuatro). WooCommerce firmará cada llamada con ese secreto y BikeCRM verificará la firma — sin coincidencia, la notificación se rechaza.
Pulsa Guardar al pie de cada webhook — los campos no se autoguardan al cambiar de pestaña.
Configura IVA y facturación
En la misma página, activa según corresponda:
Los precios en WooCommerce incluyen IVA — habitual en tiendas B2C en España.
Generar facturas desde BikeCRM para los pedidos online — si quieres que cada pedido WooCommerce genere automáticamente una factura formal en BikeCRM (con su numeración, VeriFactu, etc).
Enviar facturas por email automáticamente al cliente — si además quieres que la factura llegue al comprador automáticamente.
Sincronización inicial
Al final de la página tienes tres botones: Sincronizar productos, Sincronizar clientes, Sincronizar pedidos. Lánzalos una vez para hacer la importación inicial. A partir de ahí los webhooks mantendrán todo al día.
Lánzalos en este orden (los pedidos referencian productos y clientes; importarlos primero crea registros con datos provisionales que después tienen que reconciliarse):
Sincronizar productos — segundos para tiendas pequeñas, minutos para catálogos grandes con muchas variaciones. El botón se queda desactivado mientras se procesa; cuando vuelve a estar activo, ha terminado.
Sincronizar clientes — suele ser rápido salvo que tengas miles de clientes registrados.
Sincronizar pedidos — importa los pedidos históricos no cancelados/borrador. Si ves errores, revisa el apartado de solución de problemas más abajo, no es necesario contactar con soporte.
Antes de dar la integración por terminada, haz estas comprobaciones — son lo que cazaría el 90 % de los problemas de configuración:
Conteo de productos coincide
Después de la sincronización inicial, abre la lista de productos en BikeCRM y compara el conteo con el de WooCommerce. Si tu tienda tiene productos variables, recuerda que cada variación cuenta como un producto en BikeCRM (una camiseta con 4 tallas → 4 productos), así que el número en BikeCRM puede ser mayor.
El precio cambia en tiempo real
En WooCommerce, cambia el precio de un producto cualquiera y guárdalo. En menos de 30 segundos debería actualizarse en BikeCRM. Si no se actualiza, el webhook de Producto actualizado no está bien configurado — vuelve al paso 4 y revisa el log de entrega del webhook en WooCommerce.
Crea un pedido de prueba en WooCommerce
En tu tienda online (o desde el panel de WooCommerce > Pedidos > Añadir nuevo), crea un pedido con un producto barato. Márcalo como pagado. En menos de 30 segundos:
El pedido aparece en BikeCRM con el icono WOO en la lista de pedidos.
El cliente queda asociado correctamente (búscalo en clientes por su email).
El total del pedido coincide exactamente con el de WooCommerce (incluyendo envío y cargos extra).
El stock del producto bajó en ambos lados una sola vez (no doble descuento).
Si activaste facturación gestionada por BikeCRM
El pedido pagado debería tener una factura asociada con la siguiente numeración de tu serie principal. Si tienes VeriFactu activado, comprueba que la factura está sellada y que aparece una nota interna en el pedido de WooCommerce avisando del sellado.
Devolución parcial (opcional pero recomendado)
Desde el pedido en WooCommerce, emite una devolución parcial de una línea. En BikeCRM aparecerá un nuevo pedido de tipo abono (qty negativa), un pago negativo y, si había factura, una factura rectificativa serie 10. Si esto funciona, la integración está completamente operativa.
Un producto simple de WooCommerce se corresponde con un producto en BikeCRM. Se sincronizan nombre, precios (venta y recomendado), stock, SKU, descripción e imagen.
Un producto variable (por ejemplo, una camiseta con tallas S, M, L) se descompone en BikeCRM:
Se crea un producto padre con el nombre del producto
Cada variación se convierte en un producto individual (ej: “Camiseta - Talla M”)
Cada variación tiene su propio stock, precio y SKU
Cliente: se busca o crea automáticamente. Prioridad: ID de WooCommerce → email → teléfono. Si se encuentra por email o teléfono, BikeCRM guarda el ID de WooCommerce en tu ficha de cliente para que futuros pedidos se vinculen al instante.
Productos: cada línea del pedido se vincula al producto correspondiente en BikeCRM.
Envío: el coste de envío entra como una línea adicional etiquetada Envío (<nombre del método>) — por ejemplo, Envío (Flat Rate) — con su IVA correspondiente, de forma que el total de BikeCRM cuadra exactamente con el de WooCommerce.
Cargos extra: cualquier fee definido en WooCommerce (servicio, recargo de pago, etc.) entra también como línea adicional con su nombre original.
IVA por línea: se extrae el tipo de IVA real de cada línea desde los datos fiscales del pedido (no se asume el IVA por defecto del negocio).
Recargo de equivalencia: si el cliente está marcado como sujeto a RE, se aplica automáticamente el recargo correcto (5,2 % / 1,4 % / 0,5 %) a cada línea.
Estado de WooCommerce: se conserva tal cual (ej: completed, processing, o estados personalizados como fedex-delivered).
Método de pago: se registra el método utilizado en la tienda online.
Pago: si el pedido está pagado, se crea automáticamente el registro de pago con la fecha original.
Cuando se emite una devolución en WooCommerce, BikeCRM la importa automáticamente:
Se crea un pago negativo sobre el pedido original con el importe devuelto, de forma que el estado de pago refleja lo que ya se ha reembolsado.
El stock se restaura en BikeCRM (no se reenvía a WooCommerce, ya que WC gestiona su propio stock).
Si el pedido tenía factura, BikeCRM emite también la correspondiente factura rectificativa (abono). Ver Facturas rectificativas para el detalle del flujo y la numeración.
Se admiten devoluciones parciales y múltiples sobre un mismo pedido; cada una guarda el ID de la devolución de WooCommerce como clave de idempotencia para que los reenvíos del webhook no dupliquen.
Modificaciones del pedido tras la primera sincronización
Si modificas un pedido en WooCommerce después de que se haya sincronizado:
Cambio de estado (ej: processing → completed): se actualiza el campo de estado en BikeCRM, sin más cambios.
Edición de líneas en un pedido sin facturar: BikeCRM rehace las líneas en su sitio, manteniendo el mismo identificador de pedido.
Edición de líneas en un pedido ya facturado: BikeCRM emite automáticamente una factura rectificativa y crea un pedido nuevo con el contenido actualizado y su propia factura (ver Facturas rectificativas para el detalle). El pedido original queda marcado con el estado interno superseded-by-<id> apuntando al nuevo, para trazabilidad.
Esta sección describe el comportamiento específico de la facturación en pedidos que llegan desde WooCommerce. Para las reglas generales (modos de generación, numeración de series, VeriFactu, inmutabilidad, envío por email, etc.), consulta la página completa de Sistema de facturación.
Activa la opción Generar facturas desde BikeCRM para los pedidos online en la página de configuración de WooCommerce. A partir de ese momento:
Cada pedido pagado en WooCommerce genera una factura formal en BikeCRM, con la misma numeración que el resto de tus facturas (ver numeración).
Si tienes VeriFactu activado, la factura se firma y se incluye en la cadena de hashes, igual que una factura de TPV o de hoja de servicio.
La factura aparece junto al resto en Facturas y se puede imprimir, descargar o reenviar desde allí.
Para evitar conflictos, desactiva cualquier plugin de WooCommerce que también emita facturas: BikeCRM te avisa automáticamente si detecta uno instalado (ver Evitar doble facturación).
Deja la opción Generar facturas desde BikeCRM para los pedidos online desactivada. BikeCRM importa el pedido pero no genera ninguna factura para él:
El pedido aparece en Tickets de compra con su método de pago y estado de pago, pero sin número de factura.
La facturación legal recae en tu plugin de WooCommerce.
Tus facturas de tienda física (TPV, hojas de servicio) siguen funcionando con normalidad en BikeCRM — no se ven afectadas.
Este modo tiene sentido si llevas años con un flujo de facturación en WooCommerce y no quieres migrar, o si usas un plugin con integraciones específicas que BikeCRM aún no cubre.
Cuando BikeCRM gestiona la facturación, la factura se genera automáticamente al cumplirse estas tres condiciones:
El pedido llega desde WooCommerce (vía webhook o sincronización masiva).
El pedido está pagado (WooCommerce ha marcado date_paid). BikeCRM crea el registro de pago a la vez.
El modo de facturación de tu negocio está en automático o semiautomático (ver Modos de generación).
Si el pedido llega sin pagar (pending, on-hold), BikeCRM lo importa como ticket de compra pero no emite factura todavía. En cuanto WooCommerce marque el pedido como pagado y envíe el siguiente webhook, BikeCRM emitirá la factura.
Cuando haga falta rectificar una factura emitida para un pedido WooCommerce, BikeCRM lo hace automáticamente — el hecho que la dispare en WooCommerce genera la rectificativa correspondiente.
Hecho en WooCommerce
Reacción en BikeCRM
Devolución parcial de un pedido (refund)
Crea un abono con las líneas devueltas (qty negativa) vinculado a la factura original, serie 10, datos legales copiados. También registra el pago negativo y restaura el stock.
Devolución total
Mismo flujo pero cubriendo todas las líneas del pedido.
Varias devoluciones sobre el mismo pedido
Cada una genera su propio abono (se admiten múltiples rectificativas sobre una misma factura cuando el origen es WooCommerce). El ID de la devolución se guarda en el abono como clave de idempotencia — los reenvíos del webhook no la duplican.
Edición de líneas o totales del pedido ya facturado
Abono completo del pedido original + creación de un pedido nuevo con el contenido actualizado y su propia factura. El pedido antiguo queda marcado con estado interno indicando sustitución.
Cambio de estado a cancelled / refunded / failed
Si hay un refund en el webhook, se procesa como devolución (filas arriba). Si no, BikeCRM conserva el estado de WC en el pedido pero no emite abono automático — tendrás que emitirlo a mano desde la factura si procede.
Si además activas Enviar facturas por email automáticamente al cliente, la factura recién emitida se envía al email del comprador tal como aparece en los datos de facturación de WooCommerce. Ver Envío automático para los detalles.
Hay escenarios conocidos que siguen requiriendo intervención manual. Conviene tenerlos presentes:
Pedidos pendientes o fallidos: no generan factura ni movimiento (por diseño — no son ventas aún).
Modificación del importe o cliente de una factura emitida: no es posible. Si necesitas corregirla, emite una rectificativa desde BikeCRM (o edita el pedido en WooCommerce y deja que el flujo automático la cree por ti).
Migración de facturas históricas desde un plugin de WooCommerce a BikeCRM: la importación recrea los pedidos pero no rescata las facturas antiguas que emitió el plugin. Esas quedan fuera de la numeración de BikeCRM y fuera de la cadena de VeriFactu.
WooCommerce puede mostrar precios con IVA incluido o sin él. BikeCRM internamente trabaja con precios sin IVA y necesita saber cómo están configurados tus precios:
En la mayoría de los casos no hace falta configurar nada aquí. BikeCRM lee el tipo de IVA real de cada línea directamente desde los datos fiscales (tax_lines.rate_percent) que envía WooCommerce, así que un pedido con líneas al 21 %, 10 % y 4 % se importa correctamente sin configuración adicional.
El JSON woocommerce_config solo se usa como fallback cuando WooCommerce no incluye el porcentaje de IVA en los datos del pedido (configuraciones inusuales). Puedes editarlo en el campo del mismo nombre dentro de la página de configuración de WooCommerce:
{
"tax_rates": {
"1": 0.21,
"2": 0.10,
"3": 0.04
},
"default_vat": 0.21
}
Donde las claves ("1", "2", "3") son los IDs de los tipos impositivos en WooCommerce y default_vat es el tipo a aplicar cuando ninguno de los otros mecanismos resuelva.
Una vez configurados los webhooks, WooCommerce notifica a BikeCRM en cuanto algo cambia. Lo que ocurre en cada notificación depende del tipo:
Producto actualizado / eliminado — el producto se sincroniza inmediatamente en BikeCRM (precios, stock, nombre, estado de publicación).
Pedido creado — primera sincronización: crea el pedido completo en BikeCRM con todas sus líneas, envío, cargos, IVA por línea, pago y (opcional) factura.
Pedido actualizado — actualiza el estado del pedido, importa cualquier devolución nueva (ver sección de devoluciones más arriba) y, si las líneas o el total han cambiado en WooCommerce, rehace o sustituye el pedido en BikeCRM según corresponda.
Cuando pulsas el botón 🛜 Probar conexión en la página de configuración de WooCommerce, BikeCRM hace una llamada de prueba al API de tu tienda. Estos son los mensajes que pueden aparecer:
Mensaje
Qué significa
Cómo solucionarlo
✅ Conectado a …
Todo bien, sigue con la configuración
—
❌ Faltan datos
No has rellenado URL, usuario o application password
Vuelve al paso 3 y completa los tres campos
❌ La URL debe empezar por http:// o https://
El campo URL no tiene un esquema válido
Usa la URL completa de tu tienda, por ejemplo https://mitienda.com/
❌ No se pudo contactar con la tienda
DNS / red / certificado SSL inválido / tienda en localhost o tras un firewall
Comprueba que la URL es correcta y que la tienda es accesible desde internet (revisa los Prerequisitos al inicio)
❌ La tienda tardó demasiado en responder
Tu WordPress respondió pero tardó más de 15 segundos
Tu hosting puede estar saturado o un plugin pesado bloquea las peticiones REST
❌ Usuario o application password incorrectos
WordPress devolvió 401 Unauthorized
Genera una nueva application password (paso 3); recuerda que no es tu contraseña de WordPress y que el usuario debe tener rol Shop Manager o superior
❌ La URL responde pero no parece tener WooCommerce instalado
La tienda existe pero no tiene WooCommerce activo o el API REST está deshabilitado
Comprueba que WooCommerce está instalado y activo, y que el API REST no está bloqueado por un plugin de seguridad
❌ Error inesperado al contactar con la tienda
Cualquier otra respuesta no-200
Revisa el detalle del error en el mensaje; suele ser un plugin de seguridad bloqueando
En WooCommerce, ve a Ajustes > Avanzado > Webhooks. Comprueba que los webhooks están en estado Activo (no desactivado ni pausado).
Comprueba las credenciales
Asegúrate de que el usuario y la contraseña de aplicación son correctos y tienen permisos de lectura/escritura.
Revisa el estado del producto
Solo se sincronizan productos con estado Publicado en WooCommerce. Los borradores y productos privados no se importan.
Lanza una sincronización masiva
Si los webhooks han fallado, abre la página WooCommerce del menú lateral y pulsa Sincronizar productos para reimportar todo. No necesitas contactar con soporte.
Un producto aparece en WooCommerce pero no en BikeCRM