Back to all posts
EngineeringJuly 22, 20269 min readUpdated October 12, 2026

Aiva Chat + webhooks: custom workflows on every conversation

Aiva Chat webhooks send a signed event to your URL the moment a call ends, a lead arrives, or a booking lands, so you can automate what the integrations don't.

AI
The Aiva Chat team
Aiva Chat
A computer screen displaying lines of code
Photo by Daniil Komov on Unsplash

Google Calendar, HubSpot, Stripe payment links, Twilio: the integrations list covers the core of what a small business connects Aiva Chat to. The core isn't everything. There's always an internal tool, a spreadsheet, a database, or a team chat channel that someone wants Aiva Chat's conversations to reach.

Aiva Chat webhooks are how that happens. When something occurs in a conversation, such as a call ending, a new lead arriving, or an appointment being booked, Aiva Chat sends a signed HTTPS request to a URL you control, and whatever is listening there acts on it.

One limit up front: Aiva Chat has no public API, so you can't reach in and pull arbitrary data on demand. Webhooks are narrower, and for most of what people want they're more useful, because Aiva Chat tells you the moment something happens instead of you having to go and ask.

Whoever ends up maintaining the receiving end should read the sections on signatures and retries closely, since those two details cause most of the duplicate records and silent failures we see.

What are Aiva Chat webhooks?

A webhook is an automated message from one system to another, triggered by an event. Instead of your system repeatedly asking "anything new?", Aiva Chat pushes the news to you when it happens. Twilio's introduction to webhooks describes the same pattern from the phone-network side.

In Aiva Chat, you register a URL and choose which events you care about. From then on, each matching event triggers a POST request with a JSON body containing three fields: event (the event name), timestamp, and data (the details of what happened).

There are more than 40 events in total, including a full set for bookings. A selection:

EventFires whenTypical use
appointment.bookedAn appointment is bookedSync to an internal schedule, start a preparation task
appointment.cancelled / appointment.rescheduledA booking changesFree up a resource, update your own records
appointment.confirmed / appointment.noshowA customer confirms from a reminder, or is marked a no-showTrack attendance in your own records
appointment.requested / appointment.acceptedA booking needs owner approval, or you approve itAlert whoever handles approvals
appointment.paid / appointment.refundedA deposit or payment is taken, or refundedKeep your bookkeeping in step
call.transferredA call is handed to a personAlert the team member who should expect it
call.missed / call.message_takenA call isn't answered, or the AI takes a messageCreate a callback task in your own tool
call.completedA call ends and is loggedStore the transcript in your own database
lead.createdA new caller or website chat visitor leaves detailsAdd to a CRM or list that isn't integrated
sms.received / chat.messageA text arrives or the chat assistant repliesMirror conversations into your system

Webhooks suit businesses that use a tool Aiva Chat doesn't integrate with directly, teams that want their own copy of conversation data, and anyone who wants a specific action to fire the instant something happens.

How Aiva Chat webhooks work

Here's what happens from event to action.

Step 1: Something happens in a conversation

A caller books an appointment on the phone, a website visitor leaves their email in chat, or a call ends. Aiva Chat records it as usual. This works across phone calls and website chat, and sms.received fires when a text arrives on one of your numbers.

Step 2: Aiva Chat builds and signs the request

Aiva Chat assembles the JSON body for that event and signs it with your webhook's secret, using an HMAC SHA-256 signature of the raw body. The signature travels in a request header so your endpoint can confirm the request came from Aiva Chat and wasn't altered.

Step 3: Aiva Chat sends it to your URL

The request goes to the HTTPS address you registered. A simplified appointment.booked body looks like this:

{
  "event": "appointment.booked",
  "timestamp": "2026-09-11T14:05:14.120Z",
  "data": {
    "bookingId": "bk_1042",
    "callerNumber": "+15555550142",
    "appointmentDate": "2026-09-14",
    "appointmentTime": "10:30"
  }
}

Step 4: Your endpoint verifies and acts

Your endpoint checks the signature, responds quickly with a 2xx status, and then does its work: writing a row, sending an alert, starting a task. Slow work should happen after you acknowledge the request, not before.

Step 5: Failures are retried and logged

If your endpoint doesn't answer with a 2xx, Aiva Chat retries automatically, up to three attempts in total. Every attempt appears in the delivery log, and you can resend a failed delivery manually once you've fixed the problem.

Benefits of using Aiva Chat webhooks

Connect tools that aren't on the integrations list

Most small businesses use at least one system Aiva Chat doesn't integrate with directly. Webhooks reach anything with a URL: your own endpoint, or any no-code automation tool that accepts a webhook URL and can pass the event on to other apps.

Real-time instead of batch

Because events arrive as they happen, a callback task can exist seconds after a missed call, rather than after someone exports a report. That speed matters most for leads, where a fast follow-up often decides who gets the business.

Your own copy of the data

Some teams want conversation data in their own database or spreadsheet for reporting, backups, or combining with sales data. Subscribing to call.completed gives you each transcript and call detail as it's logged.

Trustworthy by design

Signed requests mean your endpoint can reject anything that didn't come from Aiva Chat. Secret rotation is built in, so a leaked secret is a two-minute fix rather than a rebuild.

Visibility when something breaks

The delivery log shows each event, status, HTTP code, attempt number, and error. When a downstream system stops updating, you can see whether Aiva Chat sent the event and what your endpoint answered.

Aiva Chat webhook use cases

Four hypothetical setups, each starting from a small annoyance someone got tired of handling by hand.

Missed calls become callback tasks

Problem: A small office uses a task tracker Aiva Chat doesn't integrate with, and missed calls get forgotten. How Aiva Chat handles it: A webhook on call.missed and call.message_taken sends each event to a no-code automation tool's webhook URL, which creates a task with the caller's number and summary. Outcome: Every unanswered call has an owner within seconds. If all you need is a text to the caller and a call-back task inside Aiva Chat, the built-in Missed call text-back rule on the Workflow Rules tab of the Webhooks page does that with no outside tool; it texts from your Twilio number between 8 AM and 9 PM and skips anyone marked do-not-contact.

Leads into a non-HubSpot CRM

Problem: A business uses a CRM other than HubSpot and retypes leads from the dashboard. How Aiva Chat handles it: A lead.created webhook sends name, phone, email, and source to the CRM through a no-code tool's webhook URL or a small endpoint. Outcome: Leads appear where the sales team already works, with no retyping.

Bookings into an internal schedule

Problem: A service business plans its day in an internal tool, while Aiva Chat writes bookings to Google Calendar. How Aiva Chat handles it: An appointment.booked webhook writes each booking into the internal tool, and appointment.cancelled frees the slot. Workflow rules can also trigger on bookings and filter by location if you run several sites. Outcome: Both systems agree without anyone copying entries by hand.

A team alert when a call is transferred

Problem: Staff don't know a transferred caller is coming, so the first seconds of the handoff are awkward. How Aiva Chat handles it: A call.transferred webhook triggers a message in the team's chat tool through a no-code tool's webhook URL, naming the caller and department. Outcome: The person picking up knows who's on the line.

Webhooks vs. no-code tools, custom actions, and built-in integrations

Aiva Chat has four ways to connect to other systems, and they suit different jobs.

Built-in integrationsWebhooks to your endpointWebhooks to a no-code toolCustom actions
DirectionTwo-way where supportedAiva Chat pushes events outAiva Chat pushes events outAiva Chat calls your URL mid-conversation
When it runsAutomaticallyAfter an event happensAfter an event happensDuring a call or chat, when needed
Code requiredNoneYes, an endpointNoneNone, just a URL
Typical useCalendar, HubSpot, Stripe linksDatabase writes, custom logicRouting events into other appsLook up order status, check stock
FlexibilityFixed behaviourHighestHigh, within that tool's appsInputs and URL you define
MaintenanceNoneYours to run and monitorUpkeep in that toolYour URL must stay reliable

Built-in integrations are the simplest and should be your first choice when they cover the need. Connecting Google Calendar or HubSpot takes a few clicks and needs nothing else to maintain.

Webhooks to your own endpoint are the most flexible but carry the most responsibility. You run the code, keep it secure, and watch it like any other production system. A no-code automation tool removes the code and is usually the better choice for non-technical teams, at the cost of being limited to the apps that tool connects to. Tools like Zapier receive these events through their generic webhook trigger, with nothing to install on the Aiva Chat side.

Custom actions work in the opposite direction. Instead of Aiva Chat telling you something happened, the assistant calls your URL during a conversation to look something up or send data, then uses the answer while the caller is still on the line.

How to set up an Aiva Chat webhook

The full reference is in the webhooks guide. Here's the practical sequence.

Step 1: Decide what should happen and when

Write down the outcome you want, like "create a callback task for every missed call," and the event that triggers it. Subscribe only to the events you need; extra events mean extra handling.

Step 2: Prepare a receiving URL

Either create a webhook trigger in a no-code automation tool, which gives you a unique URL, or deploy your own endpoint that accepts a JSON POST over HTTPS. Aiva Chat won't send to private or internal network addresses, so the URL must be public.

Step 3: Create the webhook in Aiva Chat

Under Admin & Developer → Webhooks, click Create Webhook, enter a name and the URL, tick your events, and click Create. Copy the signing secret immediately; it's shown only once.

Step 4: Add signature verification

Give the secret to your endpoint and verify every request's signature before acting on it. In a no-code tool you can skip this step if its webhook URL stays private, though treat that URL like a password.

Step 5: Send a test event

Use Send Test from the webhook's menu. A 2xx result means your endpoint accepted it. In a no-code tool, the test gives you sample data to map fields from.

Step 6: Watch the delivery log

For the first few days, check the delivery log for failures and confirm your downstream system shows what you expect. Afterwards, add your own alerting so a broken endpoint doesn't go unnoticed.

Common webhook mistakes

Skipping signature checks

An endpoint that trusts every request will accept forged events from anyone who finds the URL. Verify the HMAC signature on every request, using the raw body exactly as received.

Treating delivery as exactly-once

Retries resend the same event. An endpoint that inserts a new row for every appointment.booked will create duplicates after a network hiccup. Key writes on a stable identifier, such as the booking ID or call SID plus event name, and ignore repeats.

Doing slow work before responding

If your endpoint calls three other services before answering, it may time out and trigger retries, which compounds the duplicate problem. Acknowledge quickly, then process.

Subscribing to everything

Ticking every event "just in case" floods your endpoint with data you don't use and makes failures harder to spot. Start with the two or three events your outcome needs.

Forgetting to update after rotating the secret

The old secret stops working immediately on rotation. If you rotate without updating your endpoint, every request fails verification. Rotate and update in the same sitting.

Aiva Chat webhook best practices

  • Prefer a built-in integration when one exists. Use webhooks for what they don't cover.
  • Start with a no-code tool if you don't write code. Move to your own endpoint only when you need custom logic.
  • Verify signatures on every request. Store the secret like a password.
  • Make handlers idempotent. Use stable IDs from the payload to ignore repeats.
  • Respond with 2xx fast. Do heavy processing after acknowledging.
  • Use test sends before going live. Confirm field mapping with sample data.
  • Monitor the delivery log and your own logs. Silence doesn't always mean success.

Conclusion

Reach for a webhook only after checking whether a built-in integration or rule already covers the job; when one doesn't, webhooks are the right tool for getting Aiva Chat's events into the system you actually use. They're deliberately narrower than a public API, and we've explained that decision in why Aiva Chat doesn't have a public API yet. For most automation, being told promptly is what's needed.

The decision that matters is who owns the receiving end. A no-code tool's webhook URL needs almost no care. Your own endpoint is production code: if nobody watches it, a failed deploy can quietly stop bookings from reaching your internal schedule for days. If your team doesn't have someone to own that, start with a no-code tool and move later.

Ready to connect Aiva Chat to the rest of your tools?

Pick the one manual copy-paste job that annoys your team most, such as retyping leads into your CRM, and wire just that event to a no-code tool's webhook URL during the trial. Send a test event, map the fields, and make a real test call to watch it arrive.

Webhooks, custom actions, and every built-in integration are on every plan. Start your 14-day free trial without a card, or book a demo and bring the list of tools you'd like Aiva Chat to feed.

EngineeringVoiceML
Share
AI
Written by
The Aiva Chat team
Aiva Chat

Posts from the people building Aiva Chat in Rajkot — how the product works, what we have learned building it, and guides for getting the most out of an AI receptionist.

Rajkot, India · at Aiva Chat since 2024
More posts

FAQ

Common questions.

Still have questions?Contact us

No. A webhook is one-directional and event-shaped: Aiva Chat notifies your URL the moment something happens, such as a call ending or a booking being made. A general-purpose API would let you query Aiva Chat's data on demand whenever you like. Aiva Chat doesn't offer a public API, so webhooks are how its data reaches your own systems automatically.

There are more than 40 signed events. Common ones include call.completed, call.missed, call.transferred, call.summary_ready, sms.received, chat.message, lead.created, appointment.booked, appointment.cancelled, appointment.rescheduled, appointment.confirmed, and appointment.noshow, plus approval, payment, waitlist, pass, and campaign events. Each payload carries the details relevant to that event, such as booking date and caller number for a booking, rather than everything Aiva Chat knows.

Every request is signed with your webhook's secret using an HMAC SHA-256 signature of the raw request body. Your endpoint computes the same signature with the secret and compares it before trusting the payload. Without that check, anyone who discovers your endpoint URL could send a forged event, such as a fake booking, and your system would act on it.

Rotate it from the dashboard. Open the webhook's menu under Admin & Developer, Webhooks, and choose Rotate Secret. Aiva Chat shows the new secret once, and the old one stops working immediately, so update your receiving endpoint straight away. You don't need to delete the webhook or change its events, and the delivery history stays intact.

Yes. Delivery is at-least-once: automatic retries and manual retries resend the same event, so your endpoint may see a repeat. Make your handler idempotent by keying writes on a stable identifier in the payload, such as the booking ID or call SID together with the event name, and treat a repeat as a no-op instead of a new record.

Aiva Chat retries a failed delivery automatically, up to three attempts in total, and your endpoint must answer with a 2xx status quickly to count as delivered. Every attempt appears in the delivery log with its status, HTTP code, and error. From there you can resend a failed delivery manually once your endpoint is back up.

Use a no-code tool when you want events to land in other apps without writing code: any tool that accepts a webhook URL, such as a Zapier catch hook, can receive Aiva Chat's events. Build your own endpoint when something custom must happen instantly, like a database write with your own logic. Both receive the same events, so you can switch later.

In the dashboard under Admin & Developer, then Webhooks. Click Create Webhook, give it a name and an HTTPS URL, tick the events you want, and save the signing secret it shows you. You can send a test event to confirm your endpoint works before any real conversation triggers it. Each account can have up to 25 webhooks.

Like this? Get more.

One email a month. Guides, engineering deep-dives and product updates. No fluff.

4,200+ subscribers. Unsubscribe anytime.