Kaizen ShiftProposal System · Help

Automation webhooks

Fire a webhook to GoHighLevel / Zapier / Make / your own server when invoice events happen. Configure at /kz-admin/account, "Automation webhooks" panel.

Events

EventFires when
Invoice paidInvoice flips to paid — Stripe webhook, manual Mark Paid, or QB Payments
Invoice sentSend action fires successfully
Invoice viewedCustomer opens the public invoice URL for the first time
Invoice overdueDaily cron flips status to overdue (set the cutoff via the invoice's due date)

Each event can fire to a different webhook URL, or you can use one URL and branch by event type using the X-Kz-Event header.

Payload shape

POST request, JSON body. Same shape across all events:

{
  "event": "invoice_paid",
  "fired_at": "2026-04-27T15:23:01.000Z",
  "account_id": "uuid",
  "invoice": {
    "id": "uuid",
    "invoice_number": "INV-2026-0042",
    "client_name": "Sky Tower Condo Corp",
    "client_email": "sky@example.com",
    "client_address": "...",
    "issued_at": "2026-04-15T...",
    "due_at": "2026-05-15T...",
    "paid_at": "2026-04-27T...",
    "subtotal": 500.00,
    "tax_amount": 25.00,
    "total": 525.00,
    "currency": "CAD",
    "status": "paid",
    "payment_method": "e-transfer",
    "notes": "..."
  },
  "tenant": {
    "slug": "ians-maintenance",
    "display_name": "Ian's Building Maintenance"
  }
}

payment_method is included on invoice_paid so your downstream automation can branch (e.g. "Stripe paid → send digital receipt; e-transfer paid → send paper copy reminder").

Headers

Use these for routing if you point multiple events at the same URL.

Timeouts

We give your endpoint 5 seconds to respond with a 2xx status. Anything else (timeout, 4xx, 5xx) is logged but doesn't block the invoice flow. We don't retry — design your endpoint to be quick and idempotent.

GoHighLevel example

In GHL: Automation → Workflows → NewTrigger: Webhook. Copy the trigger URL. Paste it in our Invoice paid field. Save.

Now any GHL workflow downstream of that trigger fires when an invoice is paid. Common pattern: send a confirmation SMS, move contact to "active customers" pipeline, schedule follow-up.

Zapier / Make

Both let you create a "Webhook by Zapier" / "Webhook" trigger that gives you a unique URL. Same drill — paste the URL in our settings.

Your own server

Any HTTPS endpoint. Verify the request authenticity by checking X-Kz-Account-Id matches an account you expect to receive events from. (We'll add HMAC signing in a future iteration.)

Test it

There's no built-in test fire button yet. Easiest test: create a draft invoice for $1 with your own email as the client. Send it. Mark paid manually. Webhook fires.

Or: contact us — we can fire a test event from the admin side.