Zeng Book
ProductIndustriesIntegrationsPricingResources
Sign inContact salesTry it free
Introduction
  • Overview
  • Quickstart
API reference
  • Authentication
  • Errors
  • Rate limits
  • Pagination
  • Interactive explorer
Resources
  • Organization
  • Leads
  • Clients
  • Projects
  • Quotations
  • Invoices
Integrations
  • Overview
  • Webhooks
  • Public portal
  • Zapier
  • Make / n8n recipes
  • Xero (coming soon)

Integrations

Make, n8n, and generic HTTP recipes

Recipes for building automation flows using Zeng Book's REST API + webhooks with generic HTTP modules. For the official Zapier app spec — including REST Hooks subscriptions and write actions — see the dedicated Zapier page.

Building on Zapier specifically?
See the Zapier developer guide for the REST Hooks subscription endpoints, action specs, and how to build a private Zapier app today.

What you can do

  • Trigger any flow when a Zeng Book event fires —invoice paid, quotation accepted, project status changed, etc.
  • Act on Zeng Book data on a schedule — pull overdue invoices, post a daily digest, archive old projects to Google Sheets.
  • Bridge Zeng Book and tools without a direct integration — Slack, Notion, Airtable, HubSpot, Pipedrive.

Setup checklist

  1. Generate an API key in Settings → API keys. Store it in your automation tool's secret manager (Zapier "Secret", Make "Connection", n8n "Credential").
  2. For event-triggered flows, register a webhook endpoint pointing at your automation tool's catch-hook URL. Copy the signing secret too if your tool can verify HMAC.
  3. For pull-based flows, use the "HTTP" / "Webhooks by Zapier" module with Authorization: Bearer zb_live_....

Recipe 1 — Slack notification on every paid invoice

A push (webhook-triggered) flow. Latency ~1 second.

  1. In Zapier, create a new Zap with the trigger Webhooks by Zapier → Catch Hook. Copy the catch-hook URL.
  2. In Zeng Book, go to Settings → Webhooks → Add endpoint, paste the URL, and tick invoice.paid.
  3. Trigger a paid invoice in Zeng Book (mark one paid) so Zapier captures a sample.
  4. Add the action Slack → Send Channel Message. Map the message to:
    text
    💰 Invoice {{data__object__number}} marked paid
    Project: {{data__object__title}}
    Total payments: {{data__object__payments}}
  5. Turn on the Zap.
Verifying the signature in Zapier
Zapier's Catch Hook does not natively verify HMAC. For higher-trust flows, route through a small Cloudflare Worker or AWS Lambda that validates the Zb-Signature header (see the verification snippets) before forwarding into Zapier.

Recipe 2 — Nightly overdue-invoice digest in Make

A pull (scheduled) flow. Useful when you want a daily summary rather than an event for each individual change.

  1. In Make, create a new scenario. First module: Schedule → Every day at 08:00 SGT.
  2. Add HTTP → Make a request:
    • URL: https://www.zengbook.com/api/v1/invoices?status=OVERDUE&limit=100
    • Headers: Authorization: Bearer zb_live_...
    • Parse response: JSON.
  3. Iterate data with Flow Control → Iterator.
  4. Aggregate to text or CSV with Tools → Text Aggregator.
  5. Send via Email → Send an Email to your AR inbox, or post to a Slack channel.

Pagination

If you have more than 100 overdue invoices, Make's router can loop while nextCursor is non-null. See pagination for the cursor protocol.

Recipe 3 — n8n: log new clients to Google Sheets

  1. Add a Webhook node. Set the HTTP Method to POST and copy the URL.
  2. In Zeng Book, register the URL as a webhook endpoint subscribed to client.created.
  3. (Optional) Add a Function node before the Google Sheets node that verifies the HMAC signature, using the snippet from verification. Drop the request if the signature is invalid.
  4. Add a Google Sheets → Append Row node mapping data.object.name, data.object.email, etc.

Push vs pull — quick guide

Use casePattern
Notify a team on an eventPush (webhook)
Daily / weekly digestPull (scheduled API call)
Reconciliation with an external systemPull, with event-driven invalidation
Update an integration after migrationPull (one-off backfill)