Zapier and Make

Zapier

Two ways to connect Kwazi with Zapier, without writing code.

There are two ways to connect Kwazi with Zapier:

  • The Kwazi app for Zapier (in development; until it is published, Kwazi shares an invite link). Search for Kwazi when you build a Zap: no addresses or secrets to copy. See below.
  • Webhooks by Zapier, Zapier’s built-in app: works today, on a Zapier plan that includes it. See the rest of this page.

The names of Zapier’s menus below can differ slightly as Zapier changes its editor.

The Kwazi app for Zapier

Connect your site once: its address (https://…), your WordPress username and an application password (Kwazi → Integrations → API & keys). By default only administrators may use one; others can be allowed there.

Kind Name What it does
Trigger (instant) New Contact, Updated Contact, New Organization contact.created, contact.updated, organization.created
Trigger (instant) New Marketing Subscriber, Marketing Unsubscribe marketing.subscribed, marketing.unsubscribed: keep an email tool in step with who said yes
Trigger (instant) New Form Submission form.submitted, optionally for one form; answers also as contact_email, …
Trigger (instant) New Appointment, Appointment Changed appointment.booked; confirmed, declined, moved, place changed, cancelled, completed or no-show, as you choose
Action Create or Update Contact Creates, or updates the contact with the same email address (only filling in what’s empty, or replacing)
Action Update Contact, Add Note to Contact, Create Organization, Book Appointment
Search Find Contact, Find or Create Contact By exact email address
  • Instant triggers make a webhook in Kwazi when you turn the Zap on, named Zapier: …, and delete it when you turn it off. You need the right to manage Integrations. Every Zap with a Kwazi trigger uses one of the 20 webhooks a site can have. Every message is checked against that webhook’s secret; Zapier ignores anything not signed by Kwazi.
  • Actions act as your WordPress user: Kwazi checks every right and field, and its errors show in Zapier as they are. Changes show in the timeline and audit log under the name of the application password.
  • Zapier must be able to reach your site: a site on localhost or behind a login wall doesn’t work.
  • The app’s code is in zapier/ of Kwazi’s repository (spec).

Start a Zap when something happens in Kwazi

Example: every new booking goes to a Google Sheet.

  1. In Zapier, create a Zap. Trigger: Webhooks by Zapier → Catch Hook. Copy the webhook URL Zapier shows (https://hooks.zapier.com/hooks/catch/…).
  2. In WordPress: Kwazi → Integrations → Webhooks → New webhook. Name: Zapier – new bookings. Address: the Zapier URL. Events: appointment.booked. Create it.
  3. Click Send test event in Kwazi, then Test trigger in Zapier. Zapier now knows the fields: event, id, data__appointment__starts_at, data__appointment__service__name …
  4. Add the action (e.g. Google Sheets → Create Spreadsheet Row) and map the fields.

Kwazi sends the event within seconds, signed. Zapier’s Catch Hook does not check the signature; if the Zap does something sensitive, add a Code by Zapier step that checks X-Kwazi-Signature (see webhooks) with your signing secret, or keep the Zapier URL secret.

Create or update a contact from Zapier

Example: a new lead from a Facebook Lead Ad becomes a Kwazi contact.

  1. In WordPress, make an application password for a user who may edit contacts, e.g. named Zapier.
  2. In the Zap, add Webhooks by Zapier → POST:
    • URL: https://your-site.example/wp-json/kwazi/v1/contacts
    • Payload type: json
    • Data: first_name, last_name, email, phone, and source = Facebook
    • Basic auth: your-username|abcd EFGH ijkl MNOP qrst UVWX (Zapier separates username and password with |)
  3. Test the action. Kwazi answers 201 with the new contact.

If a contact with that email address already exists, Kwazi answers 409 kwazi_duplicate with the existing contact’s id in details.id. To update instead, send a Custom Request with method PATCH to /contacts/{id}: Kwazi only fills empty values, unless you add ?mode=overwrite. Every change is in the contact’s timeline and in the audit log, with the name Zapier.

Polling instead of webhooks

When a webhook is not possible, a Webhooks by Zapier → Retrieve Poll trigger can read GET /contacts?updated_since=… with Basic auth. Zapier recognises items by their id. See pagination and polling.

Still stuck?

A real person answers, in plain words. Use the help form, or ask on the WordPress forum.

Ask us a question