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.
Guía de integración · Shopify
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.
Crea una notificación webhook de Shopify (Settings → Notifications → Webhooks o vía Shopify Flow) apuntando a tu middleware con el evento orders/paid.
Usa la búsqueda avanzada de agencias para resolver la sede de destino más cercana a la dirección del comprador:
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]);Con la instancia de tu cuenta Shalom Pro conectada, registra el envío con los datos de la orden:
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 ShalomCon 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.