Ir al contenido

Integración con WooCommerce

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.

Productos

Bidireccional

  • De WooCommerce a BikeCRM (pull)
  • De BikeCRM a WooCommerce (push)
  • Incluye variaciones de productos

Stock

Automático

  • Las ventas en BikeCRM actualizan stock en WooCommerce
  • Las ventas online no generan doble descuento
  • Prevención de bucles infinitos

Clientes

WooCommerce → BikeCRM

  • Importación de clientes existentes
  • Creación automática con pedidos
  • Vinculación por email o teléfono

Pedidos

WooCommerce → BikeCRM

  • Pedidos online aparecen en BikeCRM
  • Con desglose de IVA por línea
  • Envíos y cargos extra incluidos
  • Las devoluciones generan abonos automáticos
  • Facturación automática opcional
  1. Activación de la integración (equipo comercial)

    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.

  2. 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.

  3. 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.

  4. Configura los webhooks en WooCommerce

    BikeCRM expone dos URLs públicas a las que WooCommerce te debe enviar las notificaciones:

    https://connect.bikecrm.app/webhooks/product/<slug-de-tu-negocio>
    https://connect.bikecrm.app/webhooks/order/<slug-de-tu-negocio>

    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:

    https://connect.bikecrm.app/webhooks/product/mibici
    https://connect.bikecrm.app/webhooks/order/mibici

    En tu panel de WooCommerce, ve a Ajustes > Avanzado > Webhooks y crea cuatro webhooks asignando cada tema a la URL correspondiente:

    Tema en WooCommerceURL de entrega
    Producto actualizadoURL de productos
    Producto eliminadoURL de productos
    Pedido creadoURL de pedidos
    Pedido actualizadoURL 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.
  5. 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.
  6. 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):

    1. 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.
    2. Sincronizar clientes — suele ser rápido salvo que tengas miles de clientes registrados.
    3. 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.

✅ Verifica que la sincronización funciona

Sección titulada «✅ Verifica que la sincronización funciona»

Antes de dar la integración por terminada, haz estas comprobaciones — son lo que cazaría el 90 % de los problemas de configuración:

  1. 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.

  2. 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.

  3. 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).
  4. 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.

  5. 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.

Cuando un producto se actualiza en WooCommerce, BikeCRM lo recibe automáticamente mediante webhooks:

  • Productos simples: se crean o actualizan directamente
  • Productos variables: cada variación se convierte en un producto individual en BikeCRM, agrupados bajo un producto padre
  • Datos sincronizados: nombre, precio, stock, SKU, descripción, imagen

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.

Cuando modificas un producto en BikeCRM, los cambios se envían automáticamente a WooCommerce:

  • Precio de venta y precio recomendado (PVP)
  • Stock (se actualiza con cada venta, compra o ajuste)
  • Nombre y SKU
  • Estado: publicar o poner en borrador desde BikeCRM

Los pedidos realizados en tu tienda WooCommerce aparecen automáticamente en BikeCRM como ventas.

Completado En proceso En espera y cualquier estado personalizado

No se sincronizan:

Pendiente de pago Fallido Cancelado Papelera Borrador

Datos del pedido online

  • 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

Sección titulada «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: processingcompleted): 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.

Los clientes se importan de WooCommerce a BikeCRM. La vinculación se realiza por orden de prioridad:

  1. Por ID de WooCommerce — si el cliente ya fue importado anteriormente
  2. Por email — si coincide con un cliente existente
  3. Por teléfono — si coincide con un cliente existente
  4. Crear nuevo — si no se encuentra coincidencia

Los datos importados incluyen nombre, email, teléfono y dirección de facturación.

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.

¿Quién emite la factura: BikeCRM o WooCommerce?

Sección titulada «¿Quién emite la factura: BikeCRM o WooCommerce?»

Una sola de las dos partes debería emitir la factura de cada pedido online. Elige el modo que encaje con tu negocio:

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).

Cuando BikeCRM gestiona la facturación, la factura se genera automáticamente al cumplirse estas tres condiciones:

  1. El pedido llega desde WooCommerce (vía webhook o sincronización masiva).
  2. El pedido está pagado (WooCommerce ha marcado date_paid). BikeCRM crea el registro de pago a la vez.
  3. 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.

Qué contiene la factura de un pedido WooCommerce

Sección titulada «Qué contiene la factura de un pedido WooCommerce»

La factura se construye a partir de los datos del pedido sincronizado, sin que tengas que rellenar nada a mano:

Contenido de la factura

  • Comprador: nombre, NIF, dirección, ciudad, código postal y país tomados de los datos de facturación de WooCommerce (billing del pedido).
  • Vendedor: los datos legales de tu negocio configurados en BikeCRM.
  • Líneas: una por producto, más líneas separadas para envíos y cargos extra (ver Datos del pedido).
  • IVA: tipo real por línea, extraído de los datos fiscales del pedido.
  • Recargo de equivalencia: aplicado automáticamente si el cliente está marcado como sujeto a RE (5,2 % / 1,4 % / 0,5 % según tipo de IVA).
  • Fecha: la del pedido en WooCommerce (date_created_gmt).
  • Número: siguiendo la numeración normal de tu negocio.

Si tu negocio tiene VeriFactu activado, la factura de un pedido WooCommerce se sella igual que cualquier otra factura:

  • Se extiende la cadena de hashes y se genera el QR correspondiente.
  • La factura pasa a ser legalmente inmodificable (ver Inmutabilidad).
  • BikeCRM deja una nota interna automática en el pedido de WooCommerce avisando de ese sellado:

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 WooCommerceReacció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 totalMismo flujo pero cubriendo todas las líneas del pedido.
Varias devoluciones sobre el mismo pedidoCada 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 facturadoAbono 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 / failedSi 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.

Para el formato y numeración de las rectificativas (serie 10, prefijo CN), ver Facturas rectificativas en la página de facturación.

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:

Si tu WooCommerce muestra precios con IVA incluido (lo más habitual en tiendas B2C en España):

  • Activa la opción Los precios incluyen IVA
  • BikeCRM restará el IVA para calcular el precio base
  • Al enviar precios a WooCommerce, se añadirá el IVA

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.

🔄 Sincronización en tiempo real vs masiva

Sección titulada «🔄 Sincronización en tiempo real vs masiva»

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:

MensajeQué significaCómo solucionarlo
Conectado a Todo bien, sigue con la configuración
Faltan datosNo has rellenado URL, usuario o application passwordVuelve al paso 3 y completa los tres campos
La URL debe empezar por http:// o https://El campo URL no tiene un esquema válidoUsa la URL completa de tu tienda, por ejemplo https://mitienda.com/
No se pudo contactar con la tiendaDNS / red / certificado SSL inválido / tienda en localhost o tras un firewallComprueba que la URL es correcta y que la tienda es accesible desde internet (revisa los Prerequisitos al inicio)
La tienda tardó demasiado en responderTu WordPress respondió pero tardó más de 15 segundosTu hosting puede estar saturado o un plugin pesado bloquea las peticiones REST
Usuario o application password incorrectosWordPress devolvió 401 UnauthorizedGenera 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 instaladoLa tienda existe pero no tiene WooCommerce activo o el API REST está deshabilitadoComprueba 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 tiendaCualquier otra respuesta no-200Revisa el detalle del error en el mensaje; suele ser un plugin de seguridad bloqueando
  1. Verifica que los webhooks estén activos

    En WooCommerce, ve a Ajustes > Avanzado > Webhooks. Comprueba que los webhooks están en estado Activo (no desactivado ni pausado).

  2. Comprueba las credenciales

    Asegúrate de que el usuario y la contraseña de aplicación son correctos y tienen permisos de lectura/escritura.

  3. Revisa el estado del producto

    Solo se sincronizan productos con estado Publicado en WooCommerce. Los borradores y productos privados no se importan.

  4. 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

Sección titulada «Un producto aparece en WooCommerce pero no en BikeCRM»
  • El producto puede estar en estado borrador o privado en WooCommerce
  • Si es un producto variable con muchas variaciones, lanza una sincronización masiva
  • Verifica en la pestaña Movimientos de stock del producto qué cambios se han registrado
  • Comprueba que la venta online se registró correctamente como pedido en BikeCRM
  • Si hay discrepancia, puedes realizar un ajuste manual de stock (quedará registrado en los movimientos)

Un producto eliminado en WooCommerce sigue apareciendo

Sección titulada «Un producto eliminado en WooCommerce sigue apareciendo»
  • Si tienes configurado el webhook de producto eliminado, BikeCRM lo marca automáticamente como eliminado
  • Si no tienes este webhook, el producto se marcará como eliminado la próxima vez que BikeCRM intente sincronizarlo