Guía de integración · Shopify

Integrar Shalom con Shopify por API.

En Shopify la integración vive en un pequeño middleware (serverless o VPS): Shopify notifica el evento orders/paid, tu middleware llama a la API de Shalom para crear la guía y luego registra el fulfillment con el número de rastreo. El comprador recibe seguimiento automático desde las notificaciones nativas de Shopify, y si vendes con pago contra entrega (COD), los webhooks de Shalom te avisan de cada entrega o rechazo.

1. Escucha el evento orders/paid

Crea una notificación webhook de Shopify (Settings → Notifications → Webhooks o vía Shopify Flow) apuntando a tu middleware con el evento orders/paid.

2. Mapea la dirección a una agencia

Usa la búsqueda avanzada de agencias para resolver la sede de destino más cercana a la dirección del comprador:

Node.js — buscar agencia
const agencia = await fetch(
  "https://api.shalom-api.lat/agencies/search?q=" + encodeURIComponent(provincia) + "&per_page=1",
  { headers: { "x-api-key": process.env.SHALOM_API_KEY } }
).then((r) => r.json()).then((j) => j.data?.[0]);

3. Crea la guía en Shalom Pro

Con la instancia de tu cuenta Shalom Pro conectada, registra el envío con los datos de la orden:

Node.js — crear guía
const envio = await fetch("https://api.shalom-api.lat/account/register", {
  method: "POST",
  headers: {
    "x-api-key": process.env.SHALOM_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    instanceId: process.env.SHALOM_INSTANCE_ID,
    origen: 7,
    destino: agencia.ter_id,
    destinatario: {
      dni: order.note_attributes.find((a) => a.name === "DNI")?.value,
      nombre: order.shipping_address.name,
      telefono: order.phone || order.shipping_address.phone,
      direccion: order.shipping_address.address1,
    },
  }),
}).then((r) => r.json());

// envio.orderNumber = número de guía Shalom

4. Registra el fulfillment

Con la Admin GraphQL API de Shopify, crea el fulfillment del pedido usando envio.orderNumber como tracking_number. Shopify notificará al comprador con su flujo nativo, y los cambios de estado posteriores los cubre el webhook de Shalom si quieres actualizar el pedido de nuevo.

Continúa con