HALPIIHALPIIAPI del bot de pedidosv1
Referencia (probar) Descargar OpenAPI Ir a mi panel
Empezar

API del bot de pedidos

Con esta API tu sistema (ERP, caja, tienda en línea) se integra de punta a punta con tu bot de WhatsApp: lee y actualiza los pedidos, le manda al cliente su boleta o factura, mantiene al día la carta, lo agotado y el stock, pausa el bot cuando hace falta, lee tus clientes y ventas y maneja promociones, zonas de delivery y horarios. Con los avisos (webhooks) el bot le manda a tu sistema cada novedad al instante, firmada.

  • Dirección base: https://bot.halpii.com
  • Todo va y viene en JSON (UTF-8), por HTTPS.
  • Cada llamada lleva una clave de API que creas en tu panel.
  • {negocio} es el identificador de tu negocio: lo ves en tu panel, en Conecta tu sistema.
  • Para empezar sin riesgo, usa una clave de prueba (hk_test_…) y la referencia para probar cada ruta desde el navegador.

Abrir la referencia para probar cada ruta → (con tu clave de prueba, desde el navegador).

¿Prefieres no programar? Ve a Google Sheets o a Make, Zapier y n8n. El archivo OpenAPI 3 sirve para importarlo en Postman, Insomnia o tu generador de clientes.

Empezar

Autenticación y claves

Envía tu clave en la cabecera Authorization: Bearer hk_live_…. Las claves se crean en tu panel: Configurar mi bot → Conecta tu sistema → Tu sistema → Tus claves de API → + Crear clave.

Permisos

leer«Solo leer»

Todas las rutas GET: pedidos, carta, clientes, resumen, promociones, zonas y locales.

escribir«Leer y cambiar»

Todo lo de «leer», más POST, PUT, PATCH y DELETE: estados, pagos, comprobantes, carta, agotados, stock, pausa, promociones, zonas y horarios.

Cómo se guardan

  • La clave se muestra completa una sola vez, al crearla. Cópiala y guárdala en tu sistema (en una variable de entorno, nunca en el código ni en una página web).
  • HALPII guarda solo su huella: no se puede volver a ver. Si la pierdes, elimínala y crea otra.
  • Puedes tener varias claves (por ejemplo, una por sistema) y ver cuándo se usó cada una por última vez.
  • Al eliminar una clave, deja de funcionar al instante.
Empezar

Errores

La API responde con los códigos HTTP de siempre y un JSON con una sola forma: {"error": {"codigo", "mensaje", "campo", "detalles", "id_peticion"}}. codigo es fijo (para tu programa), mensaje se lee en llano, campo dice qué dato corregir y detalles trae una fila por producto con problema. id_peticion es el mismo valor de la cabecera X-Request-Id que lleva cada respuesta: dánoslo si nos escribes.

400

parametro_invalido, json_invalido, idempotencia_invalida.

401

clave_invalida: falta la clave, no existe, fue eliminada o no tiene el permiso. Por seguridad no se dice cuál.

402

plan_vencido: tu prueba o tu plan terminó. La API funciona mientras tu bot atiende (prueba vigente o plan al día); al renovar en tu panel vuelve sola, con las mismas claves. Pasa también con las claves de prueba. plan_sin_api: tu plan no incluye la API.

403

api_bloqueada: HALPII suspendió el acceso a la API de tu cuenta por mal uso (términos, 27.9). Escríbenos a contacto@halpii.com. cuenta_desactivada: tu cuenta está desactivada.

404

negocio_desconocido, pedido_no_encontrado, promocion_no_encontrada, local_no_encontrado.

405

metodo_no_permitido: la cabecera Allow dice los métodos de esa ruta.

409

carta_de_sistema (tu carta llega de restaurant.pe), negocio_de_archivo, sin_stock, no_aplica.

413

cuerpo_muy_grande: más de 3 MB.

422

carta_invalida, producto_no_encontrado, promocion_invalida, datos_invalidos, idempotencia_distinta.

429

demasiadas_peticiones: ver Límites.

500

error_interno: intenta de nuevo; si sigue, escríbenos con el id_peticion.

Las 4 rutas de la primera versión (listar pedidos, CSV, cambiar el estado y marcar el pago) conservan su forma de siempre para no romper a quien ya las usa: {"error": "estado inválido", "validos": […]} u {"ok": false}.

Empezar

Claves de prueba

En tu panel, al crear una clave, marca «Clave de prueba»: empieza con hk_test_ y sirve para construir y probar tu integración sin tocar nada real. Nunca cambia pedidos reales, ni la carta real, ni le escribe a un cliente real.

RutaCon clave de prueba
Pedidos (leer, estado, pago, entrega, comprobante)Solo los pedidos del «Chat de prueba» de tu panel. Los reales responden 404. No se manda WhatsApp: la respuesta trae mensaje_al_cliente.
Carta, agotados, stock, promociones, zonas y horariosSimulación: se valida exactamente igual y responde lo que pasaría con "simulado": true, sin guardar nada.
Pausar y abrirPausa solo el «Chat de prueba»: tu WhatsApp sigue atendiendo.
ClientesUn cliente de ejemplo (el chat de prueba no crea clientes).
ResumenSolo los pedidos del «Chat de prueba».
Avisos (webhooks)Los pedidos de prueba también generan avisos, con "canal": "Chat de prueba" o "prueba": true: no los guardes como ventas.

Para tener pedidos de prueba, haz uno en Probar mi bot de tu panel.

Empezar

Límites, idempotencia y paginación

Límite de uso

Cada clave puede hacer 120 llamadas por minuto. Si te pasas, la respuesta es 429 con la cabecera Retry-After (segundos que debes esperar). Cada respuesta trae X-RateLimit-Limit y X-RateLimit-Remaining. ¿Necesitas más? Usa los avisos (webhooks) en vez de preguntar seguido, o escríbenos.

Idempotency-Key

En POST, PUT, PATCH y DELETE puedes mandar la cabecera Idempotency-Key (por ejemplo, un UUID). Si la red se corta y repites la llamada con la misma clave, el bot no la vuelve a hacer: te devuelve la misma respuesta (con Idempotent-Replayed: true) durante 24 horas. La misma clave con otra ruta u otro cuerpo responde 422 idempotencia_distinta.

Paginación por cursor

Las listas aceptan limite y cursor en la consulta y responden siguiente. Para la página siguiente manda cursor=<siguiente>; cuando siguiente es null, ya no hay más.

Pedidos

Listar pedidos

GET/api/v1/{negocio}/pedidos

Los últimos pedidos (hasta 500), con el estado y el estado del pago al día. Cada pedido tiene el mismo formato que datos del aviso pedido.creado. Permiso: leer.

Parámetros

negociotexto · en la rutaobligatorio

El identificador de tu negocio.

desdenúmero · en la consultaopcional

Solo los pedidos con número mayor a este: el último que ya tienes en tu sistema.

Errores

401 la clave no existe, fue eliminada o no tiene permiso404 el negocio no existe
Pedidos

Pedidos en CSV

GET/api/v1/{negocio}/pedidos.csv

La hoja completa de pedidos en CSV (UTF-8), la misma que descargas en tu panel. Permiso: leer.

Errores

401 la clave no existe, fue eliminada o no tiene permiso404 el negocio no existe
Pedidos

Ver un pedido

GET/api/v1/{negocio}/pedidos/{numero}

Todo el pedido: productos con sus opciones, cliente, entrega, pago con su historial, estado con su historial, lo que mandó tu sistema (tiempo, repartidor, comprobante) y el enlace de seguimiento. Permiso: leer.

Parámetros

numeronúmero · en la rutaobligatorio

El número del pedido.

Con clave de prueba: solo pedidos del «Chat de prueba».

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso404 pedido_no_encontrado el pedido no existe (o es real y usas una clave de prueba)
Pedidos

Actualizar la entrega

PATCH/api/v1/{negocio}/pedidos/{numero}

Tiempo estimado, repartidor, enlace de seguimiento de tu delivery y una nota. El cliente lo ve en su enlace de seguimiento y el bot le escribe por WhatsApp (si tienes activos los avisos de estado): dentro de las 24 h desde su último mensaje, un mensaje; después, con tu plantilla aprobada de avisos de estado (si no tienes, no se manda). Permiso: escribir.

Parámetros

numeronúmero · en la rutaobligatorio

El número del pedido.

tiempo_estimadotexto o número · en el cuerpoopcional

«20 min» o minutos (1 a 1440).

repartidorobjeto · en el cuerpoopcional

{"nombre", "telefono"}; null lo quita.

seguimiento_externotexto · en el cuerpoopcional

Enlace https:// del seguimiento de tu delivery.

notatexto · en el cuerpoopcional

Hasta 300 letras.

avisarsí/no · en el cuerpoopcional

false = solo se guarda, sin escribir al cliente.

Con clave de prueba: solo pedidos del «Chat de prueba»; no se manda WhatsApp y la respuesta trae mensaje_al_cliente.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál404 pedido_no_encontrado el pedido no existe (o es real y usas una clave de prueba)
Pedidos

Cambiar el estado de un pedido

POST/api/v1/{negocio}/pedidos/{numero}/estado

Tu sistema avisa que el pedido avanzó. El cliente lo ve al instante en su enlace de seguimiento y, si el negocio activó los avisos, el bot le escribe por WhatsApp. Permiso: escribir.

Parámetros

negociotexto · en la rutaobligatorio

El identificador de tu negocio.

numeronúmero · en la rutaobligatorio

El número del pedido, el mismo que ve tu cliente.

estadotexto · en el cuerpoobligatorio

Uno de: recibido, preparando, en_camino, entregado, cancelado.

Errores

401 la clave no existe, fue eliminada o no tiene el permiso «escribir»400 estado inválido (la respuesta trae la lista de estados válidos)404 el pedido no existe
Pedidos

Marcar el pago

POST/api/v1/{negocio}/pedidos/{numero}/pago

Confirma o rechaza el pago, por ejemplo cuando tu sistema ve el depósito. Con pagado el cliente recibe la confirmación por WhatsApp y, si conectaste un sistema de caja, el pedido se le manda. Permiso: escribir.

Parámetros

negociotexto · en la rutaobligatorio

El identificador de tu negocio.

numeronúmero · en la rutaobligatorio

El número del pedido.

estadotexto · en el cuerpoobligatorio

Uno de: pagado, rechazado, pendiente, por_revisar, no_aplica.

referenciatexto · en el cuerpoopcional

Tu número de operación (hasta 80 letras).

Errores

401 la clave no existe, fue eliminada o no tiene el permiso «escribir»400 estado de pago inválido o el pedido no existe404 el negocio no existe
Pedidos

Enviar el comprobante

POST/api/v1/{negocio}/pedidos/{numero}/comprobante

Tu facturador ya emitió la boleta o factura: el bot se la manda al cliente por WhatsApp (el PDF como documento dentro de las 24 h; después, con tu plantilla de avisos de estado y el enlace) y la muestra en su seguimiento. El PDF va por enlace o como archivo en base64 (hasta 2 MB); también puedes mandar solo el número. Permiso: escribir.

Parámetros

numeronúmero · en la rutaobligatorio

El número del pedido.

numerotexto · en el cuerpoobligatorio

El número del comprobante, por ejemplo B001-123.

tipotexto · en el cuerpoopcional

boleta, factura o nota_venta.

pdf_urltexto · en el cuerpoopcional

Enlace https:// al PDF.

pdf_base64texto · en el cuerpoopcional

El PDF en base64 (hasta 2 MB). No junto con pdf_url.

Con clave de prueba: solo pedidos del «Chat de prueba»; se guarda y sale en su seguimiento, sin WhatsApp.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál404 pedido_no_encontrado el pedido no existe (o es real y usas una clave de prueba)
Carta y stock

Ver la carta

GET/api/v1/{negocio}/carta

La carta que está usando el bot: productos con su código, categoría, precio y foto, tallas/colores con el stock al día, opciones (término, tamaño, extras) con su precio y lo agotado. Permiso: leer.

Parámetros

limitenúmero · en la consultaopcional

De 1 a 500 (200 si no lo mandas).

cursortexto · en la consultaopcional

El siguiente de la página anterior.

Con clave de prueba: la misma carta (solo lectura).

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso
Carta y stock

Reemplazar la carta

PUT/api/v1/{negocio}/carta

Manda la carta completa. Se revisa con las mismas reglas que el Excel del panel: si hay errores no se guarda nada y cada error dice qué producto corregir (detalles[].indice); con "saltar_errores": true se guardan solo los buenos. Las fotos van por enlace https://. Los nombres de opciones, tallas y colores no llevan comas. Si tu carta llega de restaurant.pe, responde 409 carta_de_sistema: se cambia allí. Permiso: escribir.

Parámetros

productoslista · en el cuerpoobligatorio

Cada uno: nombre, precio y, si quieres, codigo (tu SKU), categoria, detalle, otros_nombres, foto, variantes [{talla, color, stock}] y opciones [{grupo, obligatorio, opciones: [{nombre, precio, codigo}]}]. Hasta 1500.

saltar_erroressí/no · en el cuerpoopcional

Guardar solo los productos sin error.

Con clave de prueba: simulación: revisa todo igual y responde la vista previa con "simulado": true, sin guardar.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál409 carta_de_sistema tu carta llega de tu sistema de caja422 carta_invalida la carta tiene errores (mira detalles)
Carta y stock

Agotados

POST/api/v1/{negocio}/carta/agotados

Marca productos (por codigo o nombre) y opciones (por su codigo, o por producto + opcion) como agotados, o desmárcalos con "agotado": false. El bot deja de ofrecerlos al instante y, si se los piden, dice que se acabaron. Con "reemplazar": true queda agotado solo lo que mandas. Si algo no está en tu carta: 422 y no cambia nada. Permiso: escribir.

Con clave de prueba: simulación, sin guardar.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál422 producto_no_encontrado algo no está en tu carta (mira detalles)
Carta y stock

Stock

PUT/api/v1/{negocio}/stock

Las unidades de cada producto y talla/color (tiendas). Solo para lo que lleva stock en tu carta (variantes con stock); el bot descuenta solo con cada venta y no vende lo que no hay. Todo o nada: si una fila no calza, 422 y no cambia nada. Permiso: escribir.

Parámetros

stocklista · en el cuerpoobligatorio

Cada fila: codigo o producto, talla, color y cantidad (0 a 100 000). Hasta 2000.

Con clave de prueba: simulación, sin guardar.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál409 sin_stock tu carta no lleva stock422 producto_no_encontrado una fila no calza con tu carta
Clientes y ventas

Listar clientes

GET/api/v1/{negocio}/clientes

Tus clientes de WhatsApp (los de «Mis clientes»): pedidos, total gastado, ticket, último pedido, lo que más piden, si aceptan promociones, etiqueta y nota. Del más reciente al más antiguo. Permiso: leer.

Parámetros

limitenúmero · en la consultaopcional

De 1 a 100 (50 si no lo mandas).

cursortexto · en la consultaopcional

El siguiente de la página anterior.

vistatexto · en la consultaopcional

todos, frecuentes, dormidos, nuevos o promos.

textotexto · en la consultaopcional

Buscar por nombre o celular.

Con clave de prueba: un cliente de ejemplo.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál
Clientes y ventas

Resumen de ventas

GET/api/v1/{negocio}/resumen

Ventas, pedidos, ticket promedio, anulados, pagados en el chat, sin pagar, medios de pago, ventas por día y lo más pedido entre dos fechas (hora de Lima, hasta 92 días). Los anulados no suman y lo del «Chat de prueba» no cuenta: las mismas cifras del Inicio de tu panel. Permiso: leer.

Parámetros

desdefecha · en la consultaopcional

AAAA-MM-DD (hoy si no la mandas).

hastafecha · en la consultaopcional

AAAA-MM-DD (hoy si no la mandas).

Con clave de prueba: solo los pedidos del «Chat de prueba».

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál
Bot

Pausar y abrir el bot

POST/api/v1/{negocio}/bot/pausa
POST/api/v1/{negocio}/bot/abrir

Pausa temporal (cocina llena, sin repartidores): el bot responde un mensaje amable y no toma pedidos hasta la hora que digas (como mucho 7 días) o hasta que llames a /bot/abrir. Quien ya habla con una persona sigue con ella. Tu panel muestra «Bot en pausa desde tu sistema». Permiso: escribir.

Parámetros

minutosnúmero · en el cuerpoopcional

De 5 a 10 080. O manda hasta.

hastafecha y hora · en el cuerpoopcional

ISO 8601, por ejemplo 2026-11-02T09:00:00-05:00.

motivotexto · en el cuerpoopcional

Se le dice al cliente (hasta 120 letras).

mensajetexto · en el cuerpoopcional

Lo que dirá el bot (si no, uno amable de fábrica).

Con clave de prueba: pausa solo el «Chat de prueba» de tu panel.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál
Promociones, zonas y locales

Promociones

GET/api/v1/{negocio}/promociones
POST/api/v1/{negocio}/promociones
PATCH/api/v1/{negocio}/promociones/{id}
DELETE/api/v1/{negocio}/promociones/{id}

Las promociones que el bot ofrece en el chat: un producto de tu carta (producto) o varios a un precio de paquete (productos + precio, menor que la suma normal), con días, horas y fechas opcionales. PATCH cambia solo lo que mandas (por ejemplo "activa": false). Se valida igual que en el panel (hasta 30). Permiso: leer para listar y escribir para lo demás.

Parámetros

titulotexto · en el cuerpoobligatorio

Hasta 60 letras, distinto de tus productos.

producto / productos + preciotexto / lista · en el cuerpoobligatorio

Uno de los dos.

dias, hora_desde, hora_hasta, desde, hasta, activa, texto · en el cuerpoopcional

Cuándo vale y lo que dice el bot.

Con clave de prueba: simulación, sin guardar.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál404 promocion_no_encontrada no hay una promoción con ese id422 promocion_invalida no cumple las reglas
Promociones, zonas y locales

Zonas de delivery

GET/api/v1/{negocio}/zonas
PUT/api/v1/{negocio}/zonas

Si haces delivery y recojo, el pedido mínimo, el modo (distritos, distancia o sin_costo), las zonas con su costo y los tramos por kilómetro. PUT cambia solo lo que mandas (zonas reemplaza la lista). Se valida igual que en el panel. Permiso: leer / escribir.

Parámetros

delivery, recojo_en_localsí/no · en el cuerpoopcional

pedido_minimonúmero · en el cuerpoopcional

En soles.

zonaslista · en el cuerpoopcional

[{"nombre": "Miraflores", "costo": 5}]

modo, tramos, sin_costo · en el cuerpoopcional

Por distancia: tramos [{hasta_km, costo, sin_costo_desde}]. Sin costo: sin_costo {alcance, distritos, km}.

Con clave de prueba: simulación, sin guardar.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál409 no_aplica tu bot agenda citas422 datos_invalidos no cumple las reglas
Promociones, zonas y locales

Locales y horarios

GET/api/v1/{negocio}/locales
PUT/api/v1/{negocio}/locales/{id}/horario

El horario general (id principal) y cada local con su dirección, ubicación, WhatsApp y horario. Para cambiar un horario usa su id: los días que no mandas quedan igual. Formatos: 10:00-22:00, 12:00-15:00, 18:00-23:00 o cerrado. Permiso: leer / escribir.

Parámetros

idtexto · en la rutaobligatorio

principal o el id del local (GET /locales).

horarioobjeto · en el cuerpoobligatorio

{"lunes": "10:00-22:00", …} (con o sin tildes).

Con clave de prueba: simulación, sin guardar.

Errores

401 clave_invalida la clave no existe, fue eliminada o no tiene permiso400 parametro_invalido un dato con formato incorrecto: campo dice cuál404 local_no_encontrado no hay un local con ese id422 datos_invalidos un horario no se entiende
Avisos (webhooks)

Eventos

En tu panel (Conecta tu sistema → Tu sistema) pones la dirección de tu sistema y el bot le hace un POST con un JSON cada vez que pasa algo:

pedido.creado

El cliente confirmó el pedido.

pedido.estado

Cambió el estado (recibido, preparando, en_camino, entregado, cancelado).

pago.comprobante

El cliente mandó la captura de su Yape o Plin (falta revisarla).

pago.confirmado

El pago quedó confirmado (Mercado Pago, Culqi o «Pago recibido» en el panel).

entrega.solicitada

Hay que mandar un repartidor (va a la dirección de tu delivery si pusiste una). Trae cobrar_al_entregar: lo que el repartidor debe cobrar.

cliente.pide_persona

El cliente pidió hablar con una persona (o el bot no le entendió dos veces): trae su nombre, celular, el último mensaje y lo que llevaba en el carrito.

pedido.cancelado

El pedido quedó anulado (llega además del pedido.estado de siempre): trae el estado anterior, quién lo anuló (origen) y cómo estaba el pago.

pedido.sin_pagar

El pedido sigue con el cobro pendiente 30 minutos después de confirmarlo (llega una sola vez por pedido).

Cabeceras

  • X-Halpii-Evento: el evento.
  • X-Halpii-Id: único por aviso; úsalo para no procesar dos veces lo mismo.
  • X-Halpii-Intento: 1, 2, 3… si es un reintento.
  • X-Halpii-Firma: ver Comprobar la firma.

El botón «Mandar pedido de prueba» del panel manda un aviso con "evento": "prueba" y un pedido inventado con la misma forma de pedido.creado más "prueba": true: acéptalo con 2xx y no lo guardes como venta.

Avisos (webhooks)

Comprobar la firma

Así sabes que el aviso viene de tu bot y que nadie te manda pedidos falsos. La cabecera es X-Halpii-Firma: t=<segundos unix>,v1=<firma>, donde la firma es HMAC-SHA256(clave de firma, "<t>.<cuerpo tal cual llegó>") en hexadecimal.

  1. Copia la clave de firma en tu panel (Conecta tu sistema → Tu sistema).
  2. Calcula la firma con el cuerpo crudo (antes de convertirlo a JSON).
  3. Rechaza si no coincide o si t tiene más de 5 minutos.

Si regeneras la clave de firma en el panel, la anterior deja de valer al instante: ponle la nueva a tu sistema.

Avisos (webhooks)

Reintentos

  • Tu sistema debe responder un código 2xx en menos de 10 segundos.
  • Si no responde o da otro código, el bot reintenta a los 10 s, 30 s, 2 min, 10 min, 30 min, 1 h, 2 h, 4 h, 8 h y 8 h (unas 24 horas).
  • Los 4xx (salvo 408, 409, 425 y 429) se dejan de intentar a la tercera vez.
  • Lo que no se pudo entregar queda en tu panel (Historial de envíos) con un botón Reintentar. El pedido nunca se pierde: siempre está en tu panel.
  • Puede llegar el mismo aviso dos veces: usa X-Halpii-Id para no duplicar.
Sin programar

Google Sheets

Cada pedido llega como una fila nueva a tu hoja de Google, y la fila se actualiza cuando lo marcas «En camino» o «Pago recibido». Todo desde tu panel, en Conecta tu sistema → Google Sheets o Excel:

  1. Crea una hoja en blanco y abre Extensiones → Apps Script.
  2. En el panel pulsa «Copiar el script» (ya trae tu clave) y pégalo; guarda.
  3. Implementar → Nueva implementación → Aplicación web, «Ejecutar como: Yo» y «Quién tiene acceso: Cualquier persona».
  4. Pega en el panel la dirección que termina en /exec y pulsa Probar.

Cada pedido llega firmado con la clave del script: nadie más puede escribir en tu hoja. Si prefieres Excel, en el panel descargas tus pedidos en Excel o CSV cuando quieras.

Sin programar

Make, Zapier y n8n

Páginas que conectan tus aplicaciones sin programar: «cuando llegue un pedido, haz esto». En tu panel, Conecta tu sistema → Make, Zapier o n8n:

  1. Crea el «gancho» que recibe el pedido: en Make, Webhooks → Custom webhook; en Zapier, Webhooks by Zapier → Catch Hook; en n8n (en tu servidor o en n8n.cloud), un nodo Webhook con método POST.
  2. Pega su dirección en el panel y pulsa «Mandar pedido de prueba»: así aprenden cómo viene cada pedido.
  3. Arma el resto con esos campos (una fila en tu hoja, tu facturador, un aviso a tu repartidor) y separa por evento; descarta prueba.

En la misma pantalla puedes poner la dirección de tu app de delivery y elegir cuándo avisarle.