For developers
Your product decides when to message. Custoz does the rest.
Post an event when something happens in your app — a trial starts, an invoice fails, an order ships. Custoz finds or creates the contact and runs the rules your team set up, without you writing a single WhatsApp call.
Events · Last hour
trial_started
Your app · 919876543210
invoice.payment_failed
Your app · rule ran
shopify.order_fulfilled
Webhook · signature verified
trial_started (retry)
Same id, ignored
Retries with the same id never send twice
Two ways in, one pipeline
Whether you control the payload or not, every event ends up in the same place: a contact update and your automation rules.
The events API
POST a small JSON event with a bearer key. Name it, attach up to 50 properties, and get a 202 back once it's stored.
The webhook gateway
Give third-party tools a unique webhook address. Custoz verifies the signature, translates the payload and stores the event.
Safe to retry
Send the same event id again and it's recognised as a duplicate, so network retries never trigger a second message.
Declare your events up front
Publish your list of events and their fields, so your team can build rules and test templates before the first one arrives.
A log you can replay
Every webhook delivery is logged with its outcome. Fix a mapping and replay the request from the dashboard.
Bring your own bot with n8n
Connect an n8n workflow to handle incoming customer messages, with a fallback if it stops responding.
Rule · Trial welcome
When
An event is received: trial_started
If
event.tier is enterprise
Then
Send template “trial_welcome” with {{event.setup_code}}
No code for your team
You send facts. Your team writes the messages.
Event properties become variables your team can drop into templates — an order number, a setup code, a plan name. Change the wording or the timing in Custoz without a release on your side.
- Rules run on “An event is received”
- Properties are available as template variables
- Contacts are created from the event's phone, name, email and company
Custom webhook · Field mapping
order.customer.phone
Phone number
event_type
Event name
order.id
Dedup id
line_items[0].name
Property: product
Any webhook
Map a payload by pointing at it
For a service without a ready-made adapter, capture a real request, then pick which fields hold the phone number, the event name, the dedup id and the properties. JSON and form posts both work.
- HMAC-SHA256 with your own header and prefix, a shared secret header, or unsigned
- Ready-made adapters for Shopify, WooCommerce, Razorpay and Stripe
- Invalid signatures are rejected and logged
Keep building
Your customers are already messaging you. Answer them well.
Bring your WhatsApp number, your team and your FAQs. Custoz does the rest.
No credit card needed.