Free cash register

Kash.click, free online POS software since 2011

Follow Us

Help Center

This help will guide you through the setup and usage of our point of sale cash register software.

Search by keyword in the help section:

Webhook management

Create, modify, list and monitor next-generation JSON webhooks.

The endpoints below use the existing API authentication: shopID + key. To send a JSON body, place shopID and key in the URL, then send the webhook parameters in the JSON.

Common authentication

NameNecessaryDescription
shopIDYesYour store ID.
keyYesAPI key for your store.

Available Events

The events field accepts a JSON array, a comma-separated string, or * to listen for all events.

  • customer.created - Customer created
  • customer.updated - Customer updated
  • sale.created - Sale created
  • sale.refunded - Sale refunded
  • sale.paid - Sale paid
  • product.created - Product created
  • product.updated - Product updated
  • stock.low - Stock low
  • stock.out - Stock out
  • order.sent_to_preparation - Order sent to preparation
  • order.preparation_completed - Order preparation completed
  • delivery.started - Delivery started
  • day_closing.created - Day closing created

create a webhook

POST https://kash.click/workers/addWebhook.php

NameNecessaryDescription
urlYesThe target URL is called via POST JSON. It must start with http:// or https://.
eventsYesList of events listened to, for example ['sale.created','customer.created'].
descriptionNoA free internal name, useful for identifying the webhook in the interface.
activeNo1 by default. Set to 0 to create an inactive webhook.
secretNoThe secret share is used to sign deliveries. If empty, Kash.click generates one and returns it only once.
fetch("https://kash.click/workers/addWebhook.php?shopID=[SHOPID]&key=[APIKEY]", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({  url: "https://hooks.zapier.com/hooks/catch/123456/abcdef/",  description: "Zapier production",  events: ["customer.created", "sale.created", "sale.paid", "product.created", "stock.low"],  active: 1 })}).then(r => r.json()).then(console.log);

List the webhooks

GET https://kash.click/workers/getWebhooks.php

Returns the list of active/non-deleted webhooks and the list of available events.

{ "success": true, "result": "OK", "events": {  "sale.created": "Sale created" }, "webhooks": [  {   "id": 12,   "url": "https://example.com/webhook",   "description": "Zapier production",   "events": ["sale.created", "sale.paid"],   "active": 1,   "hasSecret": 1,   "created_at": "2026-07-16T10:00:00Z",   "updated_at": "2026-07-16T10:00:00Z",   "last_success_at": null,   "last_failure_at": null  } ]}

modify a webhook

POST https://kash.click/workers/editWebhook.php

NameNecessaryDescription
idYesWebhook identifier.
urlNoNew target URL.
descriptionNoNew description.
eventsNoNew list of events. Replaces the previous list.
activeNo1 to activate, 0 to deactivate.
secretNoReplace the secret with the provided value.
rotateSecretNoEnter 1 to generate a new secret. The new secret is returned only once.
{ "id": 12, "url": "https://example.com/new-target", "events": ["sale.created", "sale.paid"], "active": 1}

delete a webhook

POST https://kash.click/workers/delWebhook.php

The removal is logical: the webhook is deactivated and marked as deleted.

{ "id": 12 }

Delivery history

GET https://kash.click/workers/getWebhookDeliveries.php

NameNecessaryDescription
webhookIDNoFiltering on a webhook.
statusNopending, success Or failed
limitNoNumber of rows returned. Default 50, maximum 100.
{ "id": 345, "delivery_id": "del_...", "event_id": "evt_...", "type": "sale.created", "webhook_id": 12, "url": "https://example.com/webhook", "status": "failed", "attempts_count": 5, "max_attempts": 5, "created_at": "2026-07-16T10:00:00Z", "next_attempt_at": null, "last_attempt_at": "2026-07-16T16:21:00Z", "http_code": 500, "error": "", "attempts": [  {   "attempt": 5,   "attempted_at": "2026-07-16T16:21:00Z",   "success": 0,   "http_code": 500,   "response": "Internal server error",   "error": ""  } ]}

Restart a delivery

POST https://kash.click/workers/retryWebhookDelivery.php

Re-establishes a pending delivery status with an immediate next attempt.

{ "id": 345 }

Important Notes

  • Responses in the 2xx range are considered a success.
  • Inactive webhooks no longer receive deliveries.
  • The secret is never returned during the list: only at creation or during a rotation.
  • The signature sent to the recipient is documented on the Webhook page.
Register now
Licence Creative Commons This document is made available under the terms of the licence Creative Commons Attribution 4.0 International (CC BY 4.0) .