Webhooks de rastreo: actualiza pedidos cuando cambia un envío

Un webhook de rastreo avisa a tu sistema cuando un envío cambia de estado. En lugar de consultar cada guía repetidamente, tu aplicación recibe un evento firmado, verifica que proviene de SendIt, evita procesarlo dos veces y actualiza el pedido. Así puedes informar al cliente o atender una incidencia desde el flujo que ya usa tu negocio.

01 / Guía

Qué resuelve un webhook de rastreo

Un webhook conecta el cambio del paquete con una acción de negocio. Cuando llega un evento, tu sistema puede actualizar el pedido sin esperar a que una persona abra el portal de la paquetería.

Empieza con pocas acciones y hazlas predecibles. Mostrar el nuevo estado, guardar la hora del cambio y señalar una incidencia suele ser una primera versión suficiente.

  • Actualizar el estado del pedido dentro de tu ecommerce o sistema.

  • Informar al equipo cuando un envío necesita atención.

  • Preparar mensajes para el cliente desde una fuente común.

  • Medir el recorrido sin consultar cada paquetería por separado.

02 / Guía

El recorrido de un cambio de estado

La integración tiene cuatro responsabilidades claras. SendIt entrega el evento; tu receptor comprueba su origen, decide si ya lo procesó y aplica la acción correspondiente en tu sistema.

Flujo de un webhook de rastreo
  1. 01

    Cambia el envío

    SendIt registra un nuevo estado normalizado.

  2. 02

    Llega el webhook

    Tu URL recibe el evento y sus encabezados firmados.

  3. 03

    Verificas y deduplicas

    Compruebas la firma y el identificador del evento.

  4. 04

    Actualizas el pedido

    Tu sistema guarda el estado y ejecuta la acción necesaria.

03 / Guía

Los dos eventos que importan para el seguimiento

Las guías compradas en SendIt notifican los cambios con shipment.tracking.updated. Un número externo registrado mediante un tracker utiliza tracker.updated.

No existe un evento separado para cada resultado final. Para saber si el paquete está entregado o tiene una incidencia, lee data.object.status dentro del evento de actualización.

  • shipment.tracking.updated: cambios de estado de una guía creada en SendIt.

  • tracker.updated: cambios de una guía externa registrada para seguimiento.

  • data.object.status: estado normalizado que debe actualizar tu pedido.

  • livemode: separa los eventos de prueba de los eventos de operación.

04 / Guía

Verifica la firma antes de confiar en el evento

Cada entrega incluye X-SendIt-Signature. La firma se calcula con el secreto de tu endpoint, la marca de tiempo y los bytes originales del cuerpo. Verifica esos bytes antes de convertir el JSON.

El secreto de firma se muestra cuando creas o rotas el endpoint. Guárdalo en tu gestor de secretos y nunca lo expongas en el navegador ni en el repositorio.

Verificar una entrega TypeScript · Node.js
import { createHmac, timingSafeEqual } from "node:crypto";

export function verifySendItWebhook(
  rawBody: Buffer,
  signatureHeader: string,
  secret: string,
  toleranceSeconds = 300,
) {
  const parts = Object.fromEntries(
    signatureHeader.split(",").map((part) => part.split("=", 2)),
  );
  const timestamp = Number(parts.t);

  if (!Number.isFinite(timestamp) ||
      Math.abs(Date.now() / 1000 - timestamp) > toleranceSeconds) {
    throw new Error("Webhook timestamp outside tolerance");
  }

  const expected = createHmac("sha256", secret)
    .update(parts.t + ".")
    .update(rawBody)
    .digest();
  const received = Buffer.from(parts.v1 ?? "", "hex");

  if (expected.length !== received.length ||
      !timingSafeEqual(expected, received)) {
    throw new Error("Invalid webhook signature");
  }

  return JSON.parse(rawBody.toString("utf8"));
}

05 / Guía

Una lista corta para operarlo bien

Una firma válida solo confirma el origen. Tu integración también debe soportar reintentos y evitar que el mismo evento produzca dos acciones.

Usa el webhook como aviso y consulta el recurso de la API cuando una decisión necesite el estado más reciente. Eso mantiene el pedido correcto aunque tu receptor haya estado temporalmente fuera de línea.

  1. 01

    Conserva el cuerpo original

    Lee los bytes sin reserializar antes de verificar la firma.

  2. 02

    Guarda el ID del evento

    Si el mismo id vuelve a llegar, responde correctamente sin repetir la acción.

  3. 03

    Separa prueba y operación

    Usa livemode para impedir que un evento de prueba modifique pedidos reales.

  4. 04

    Responde rápido

    Devuelve una respuesta 2xx y procesa el trabajo más pesado fuera de la recepción.

  5. 05

    Reconcilia lo importante

    Consulta la API cuando necesites confirmar el estado actual del envío.

06 / Guía

Cómo encaja en una integración con SendIt

SendIt utiliza el mismo vocabulario de estados para guías creadas en la plataforma y trackers externos. Tu ecommerce puede traducir ese estado una sola vez y conservar la misma experiencia aunque cambie la paquetería.

La plataforma está en pre-lanzamiento. Puedes revisar el contrato de webhooks, probar eventos sin tocar una operación real y preparar el receptor antes de la apertura.

Siguiente paso

Completa la tarea.

Documentación de webhooksRevisa eventos, firmas, pruebas e historial de entregas. Rastreo de SendItConoce los estados comunes para guías propias y externas. Integrar envíos en un ecommerceDefine dónde conectar pedidos, guías y seguimiento.

Preguntas frecuentes

Respuestas rápidas.

¿Qué evento recibo cuando un paquete se entrega?

Recibes shipment.tracking.updated para una guía de SendIt o tracker.updated para una guía externa. El resultado, incluido DELIVERED, aparece en data.object.status.

¿Un webhook puede llegar más de una vez?

Sí. La entrega admite reintentos, por lo que debes guardar el id del evento y evitar repetir la misma acción.

¿Debo confiar en cualquier solicitud que llegue a mi URL?

No. Verifica X-SendIt-Signature contra el cuerpo original y el secreto del endpoint antes de interpretar el evento.

¿Puedo probar el receptor sin afectar pedidos reales?

Sí. Los eventos de prueba llevan livemode: false para que tu integración los mantenga separados de la operación real.

¿El webhook reemplaza una consulta a la API?

No en todos los casos. Úsalo para reaccionar al cambio y consulta la API cuando una decisión necesite confirmar el estado más reciente.

SendIt

Cotiza, crea guías y rastrea en un solo lugar.

SendIt está en pre-lanzamiento. Únete a la lista para conocer la apertura de la plataforma.

Conocer el rastreo de SendIt

Próximamente

Prueba SendIt desde el primer acceso

Únete a la lista y te avisamos cuando abramos el acceso.

Sin spam · cancela cuando quieras