Paquete holográfico del que salen rutas de luz hacia varios centros de reparto, integración con transportistas
Software / APIs

Integración con Transportistas: Etiquetas y Seguimiento

Codezone
Codezone Empresa de Desarrollo Web y Software a Medida

La integración con transportistas conecta tu ERP o tu tienda online con la API de cada empresa de paquetería para crear el envío, imprimir la etiqueta, pedir la recogida y recibir el estado del paquete sin teclear nada. Se resuelve conectando con cada transportista o a través de un agregador, según tu volumen. Es parte de nuestros servicios de integración y mantenimiento de software.

Sin ella, alguien copia cada dirección en la web del transportista y luego atiende las llamadas de clientes que preguntan por su paquete. Si vendes en marketplaces, el envío es el paso que sigue a integrar Amazon y Miravia con el ERP y recibir sus pedidos, y cada hora de retraso se nota.

Al terminar sabrás si conectar cada transportista por separado o pasar por un agregador, y podrás estimarlo con el coste de integrar una API a medida en Madrid.

Qué es la integración con transportistas

La integración con transportistas es la conexión por API entre tu sistema de pedidos y los servicios web de las empresas de paquetería, que permite crear envíos, generar etiquetas, solicitar recogidas y recibir eventos de seguimiento de forma automática, guardando cada número de envío y cada estado junto al pedido en tu ERP.

Cada transportista expone su propio servicio para clientes con contrato, y un agregador los unifica bajo un mismo esquema. En Correos, el acceso por API exige contrato directo y credenciales Correos ID incluso a través de un agregador, según la guía de Sendcloud sobre la API de Correos.

Mapa holográfico de rutas luminosas que parten de un almacén central hacia varios nodos de reparto flotantes
Un solo punto de salida y varias redes de reparto conectadas.

Crear envíos, etiquetas y recogidas

Un envío se crea cuando el pedido pasa a preparado: el sistema valida la dirección, elige el servicio según peso y destino, solicita la etiqueta y guarda el número de seguimiento.

Ese cambio de estado lo marca tu software de gestión de pedidos que dispara cada envío, y la etiqueta sale impresa en el puesto de embalaje sin abrir un navegador. La recogida se solicita a diario por almacén o queda programada.

Los puntos de recogida cambian el flujo. El checkout consulta los puntos disponibles para el código postal y guarda el identificador del elegido en el pedido, porque el envío se crea contra ese punto y no contra la dirección del cliente.

Seguimiento: webhooks o sondeo de estado

El seguimiento se recibe por webhook cuando el transportista o el agregador lo ofrecen, y por sondeo periódico cuando solo publican una consulta de estado.

La documentación del webhook de cambio de estado de paquete de Sendcloud sirve de referencia. Cada aviso va firmado con HMAC SHA256 en la cabecera `Sendcloud-Signature`, y la firma se comprueba antes de procesar, como al aplicar OWASP a la verificación de webhooks entrantes. Si tu endpoint falla, Sendcloud reintenta hasta 10 veces con esperas de 5 minutos a 1 hora. El orden de llegada no está garantizado, así que cada aviso trae una marca de tiempo.

El sondeo consulta solo envíos abiertos y espacia las consultas según el estado. Depender de servicios ajenos tiene un coste de mantenimiento, el que se analiza al comparar API propia frente a APIs de terceros en la logística de envíos.

Paquete holográfico translúcido rodeado de anillos de eventos que se encienden uno tras otro en distintos tonos
Cada evento del transportista acaba en un único estado que tu equipo entiende.

Devoluciones y errores de dirección

Una devolución es un envío inverso: el sistema genera una etiqueta de retorno ligada al pedido original y espera el evento de entrega en almacén para abrir la revisión del producto.

Los errores de dirección se atajan antes de crear el envío: un código postal que no casa con la provincia acaba en incidencia, y pedir confirmación en el checkout cuesta menos que un segundo transporte. Si el precio incluye portes, ese cálculo alimenta un configurador de producto con precio cerrado y portes incluidos.

Conexión directa o agregador: cómo decidir

La conexión directa compensa con pocos transportistas y volumen estable; el agregador, cuando trabajas con varios y tu equipo técnico es pequeño.

  • Conexión directa: Encaja con uno o dos transportistas. Pagas cada conector y su mantenimiento cuando el transportista cambia su API.
  • Agregador: Encaja con varios transportistas. Suma una cuota y una dependencia, a cambio de un esquema único y webhooks firmados.
  • Capa propia multitransportista: Encaja cuando eliges transportista por reglas de coste o plazo y atención al cliente necesita estados unificados.

Si tu tienda es Shopify, parte de esto lo cubren sus apps, con los límites que analizamos en las integraciones de Shopify y sus APIs a escala.

Varias corrientes de luz de distintos colores entran en un prisma de cristal y salen como un único haz uniforme
Códigos distintos de cada transportista, un solo modelo de estados.
CodeZone Pro Tip: este módulo traduce los códigos de estado de varios transportistas a un modelo único y avisa al cliente solo en los hitos que le importan.
// Códigos de ejemplo: cada transportista publica los suyos en la documentación de tu contrato
const MAPA = {
  transportistaA: { "01": "CREADO", "05": "EN_TRANSITO", "12": "EN_REPARTO", "20": "ENTREGADO" },
  transportistaB: { LABEL: "CREADO", PICKUP: "RECOGIDO", OUT_FOR_DELIVERY: "EN_REPARTO", DELIVERED: "ENTREGADO" },
};
// Solo molestamos al cliente cuando el cambio le obliga a hacer algo o a estar en casa
const AVISABLES = new Set(["EN_REPARTO", "ENTREGADO", "INCIDENCIA"]);

function normalizar(transportista, codigo) {
  // Un código desconocido no se descarta: pasa a INCIDENCIA para que alguien lo revise
  return MAPA[transportista]?.[codigo] ?? "INCIDENCIA";
}

async function procesarEvento(evento, envio, { guardar, avisar }) {
  // Los webhooks llegan desordenados: un evento anterior al último guardado no retrocede el estado
  if (envio.ultimoEventoEn && new Date(evento.fecha) <= new Date(envio.ultimoEventoEn)) {
    return envio;
  }
  const estado = normalizar(evento.transportista, evento.codigo);
  const actualizado = { ...envio, estado, ultimoEventoEn: evento.fecha };
  await guardar(actualizado);
  if (estado !== envio.estado && AVISABLES.has(estado)) {
    await avisar(envio.clienteId, estado, envio.urlSeguimiento);
  }
  return actualizado;
}

module.exports = { normalizar, procesarEvento };

Para el negocio, atención al cliente ve un único estado sea cual sea el transportista, y un evento tardío ya no devuelve a tránsito un pedido entregado.

El Riesgo de Enterarte del Estado Después que tu Cliente

Sin integración, tu cliente sabe antes que tú que su paquete está en incidencia, y la llamada llega antes que la solución. Cada consulta de seguimiento que atiende una persona es tiempo que no dedica a vender.

Caja holográfica que desciende sobre una plataforma circular iluminada mientras un anillo de luz se cierra a su alrededor
La entrega confirmada cierra el pedido sin intervención manual.

En Codezone empezamos por el transportista que más volumen te mueve y añadimos los demás sobre el mismo modelo de estados.

Si tus envíos aún dependen de copiar y pegar, hablemos de cómo conectar tus transportistas.