# Docs - Get started: Concepts and your first project - [Welcome to Buni.ai](/docs/get-started): Buni.ai is a visual studio for conversational apps and automation workflows. Start here to learn what it does and where to go next. - [How Buni.ai works](/docs/get-started/how-buni-works): The core ideas behind Buni.ai, from organizations and projects to flows, state, Draft and Live environments, channels and operations. - [Quickstart](/docs/get-started/quickstart): Build a chatbot that answers from your own documents, test it in the simulator, publish it and put it on your website in about ten minutes. - [Choose a project type](/docs/get-started/choose-a-project-type): Compare Chatbot, USSD, Voice (IVR), Automation and SMS projects by channel, typical use, nodes and how people reach them. - [Glossary](/docs/get-started/glossary): Plain definitions of the terms used across Buni.ai and these docs, from Agent to Version. - Build: Projects, the canvas and each project type - [Build](/docs/build): Create projects, design flows on the canvas and learn what each project type can do. - **Projects** - [Create a project](/docs/build/projects/create-a-project): Create a project by describing it for AI to draft, starting from a template or starting blank, and choose its channel and organization. - [Templates](/docs/build/projects/templates): Start a project from a ready-made flow on the Templates page or in the New project dialog, then adapt it to your use case. - [Project workspace](/docs/build/projects/project-workspace): A tour of the project screen, covering the action bar, the Canvas, Documentation, Logs, Activity, Feedback, Integrations and Settings tabs, and collaboration. - [Documentation tab](/docs/build/projects/documentation-tab): Keep notes, specs and handover docs with the project in a shared rich-text editor, and have Buni write or update them from the flow. - [Simulators](/docs/build/projects/simulators): Test a project's Draft version before anyone else sees it, with the chat simulator, USSD phone emulator, call simulator or automation run panel. - [Environments](/docs/build/projects/environments): How a project's Draft and Live environments work, what Save and Publish change, and which URLs, numbers and tools use each one. - [Publishing](/docs/build/projects/publishing): Publish a project to make its current flow Live, see what publishing does for each project type, copy the live URL and unpublish. - [Version history](/docs/build/projects/version-history): See every saved and published version of a project, compare a version with the current Draft node by node, annotate versions and roll back. - **The canvas** - [The canvas](/docs/build/canvas): How the Buni.ai canvas works - nodes, handles, connections, state, the node palette, sticky notes, frames and comments. - [Build a flow](/docs/build/canvas/building-flows): Plan a flow, place and connect nodes, store and reuse values, and test it, with the differences between USSD, chatbot, voice and automation projects. - [Connections](/docs/build/canvas/connections): Join nodes with connections, understand which handles each node has, and route failures and alternative outcomes to their own paths. - [Variables and templating](/docs/build/canvas/variables): Read state, the previous node's output and secrets in any field with double-brace templates, and use the variable picker to insert them. - [Error handling](/docs/build/canvas/error-handling): Keep a flow working when input is invalid or a service fails, with the Error node, failure paths, retries, Filter and automation error workflows. - [Build with Buni](/docs/build/canvas/ai-assistant): Use Buni, the assistant in the canvas, to answer questions, plan changes, build and fix flows, and undo what it changed. - [Cheat sheet](/docs/build/canvas/cheat-sheet): Quick reference for the canvas - template syntax, router operators, handles, keyboard shortcuts and a pre-publish checklist. - **Project types** - Chatbot - [Chatbot](/docs/build/chatbot): Build a conversational bot on the canvas and run it on WhatsApp, Instagram, Messenger, Telegram, Slack and your website. - [Chatbot quickstart](/docs/build/chatbot/quickstart): Create a chatbot project, teach it one question and its answer, add a fallback, and try it in the simulator. - [Building chatbot flows](/docs/build/chatbot/flow-building): Design intents, collect details with parameters, send replies with buttons, handle unrecognised messages and connect data, AI and people. - [Live chat handoff](/docs/build/chatbot/live-chat-handoff): Hand a chatbot conversation to a person on your team in the Inbox, what the customer sees at each step, and how the chat returns to the bot. - [Testing and publishing](/docs/build/chatbot/testing-and-publishing): Test a chatbot in the simulator, publish it to production, connect its channels, and check how it behaves once it is live. - [Chatbot best practices](/docs/build/chatbot/best-practices): Practical advice for chatbots that understand people, fail gracefully, respect channel limits and hand over to your team cleanly. - [Advanced chatbot features](/docs/build/chatbot/advanced): Serve several languages, use AI and your knowledge base, keep contacts, show a privacy notice, and call a chatbot from your own systems. - USSD - [USSD overview](/docs/build/ussd): Build menu-driven services people dial from any phone, such as *789#, with no data connection or app. - [USSD quickstart](/docs/build/ussd/quickstart): Build an airtime top-up menu with Menu and Router nodes, then dial it in the simulator. - [Menus and sessions](/docs/build/ussd/menus-and-sessions): How USSD menus route replies, navigate, list dynamic data and decide whether a session continues or ends. - [Going live](/docs/build/ussd/going-live): Publish a USSD project, give its Callback URL to your aggregator, and record the short code on the Routes page. - Voice (IVR) - [Voice (IVR) overview](/docs/build/ivr): Answer and place phone calls with a flow built on the canvas, running on your own carrier account. - [Quick start](/docs/build/ivr/quick-start): Build a working phone menu, test it in the browser simulator, then connect it to a real phone number. - [Building call flows](/docs/build/ivr/flow-building): Write prompts for the ear, store what callers enter, branch on it, and call your own systems while the caller waits. - [Carrier setup](/docs/build/ivr/carrier-setup): Bind a phone number to your Voice (IVR) project and point your Twilio, Infobip or Africa's Talking account at its webhook. - [Voice settings](/docs/build/ivr/voice-settings): Set the language, voice, speech recognition, streaming, call limits, AI disclosure and recording policy for a Voice (IVR) project. - [Outbound calls](/docs/build/ivr/outbound-calls): Have a Voice (IVR) flow ring customers, with separate paths for an answer, a voicemail and no answer. - [Streaming audio and barge-in](/docs/build/ivr/streaming-audio): Let callers interrupt a prompt and be understood straight away by streaming call audio on Twilio or Infobip. - [Testing and deployment](/docs/build/ivr/testing-deployment): Test a call flow in the browser simulator, publish it, and review calls, recordings and transcripts once it is live. - [Best practices](/docs/build/ivr/best-practices): Design call flows that respect the caller's time, always offer a person, and survive the calls that go wrong. - Automation - [Automation](/docs/build/automation): Build workflows that start from a schedule, a webhook, a form or an app event, and run without a conversation. - [Automation quickstart](/docs/build/automation/quickstart): Build a workflow that takes a hosted form submission, sends an SMS confirmation and saves the request to a data store. - [Triggers](/docs/build/automation/triggers): Every way to start an automation run - schedules, webhooks, manual runs, hosted forms, failures and app events - and the settings for each. - [Runs and logs](/docs/build/automation/runs-and-logs): Test an automation from the Run panel, then find every run, its payload and a step-by-step trace in the Activity tab. - [Approvals](/docs/build/automation/approvals): How an Approval node pauses a run, who is asked to decide, where they approve or reject, and what happens on timeout. - [Hosted forms](/docs/build/automation/hosted-forms): Publish a web form from a Form trigger, share its test and production links, and submit to it from your own page with the public API. - [Error workflows](/docs/build/automation/error-workflows): Handle failures inside a workflow with failure paths, retries and loop error modes, and start a separate workflow when a run fails. - [Automation best practices](/docs/build/automation/best-practices): Build automations that are safe to retry, respect provider rate limits, wait without holding resources and never process the same item twice. - SMS - [SMS](/docs/build/sms): SMS projects are not available yet. Send text messages today from USSD, chatbot and automation flows with the Messaging node. - Node reference: Every node on the canvas - [Node reference](/docs/nodes): Every node you can place on the canvas, what it does, and which project types offer it. - **Triggers** - [Trigger](/docs/nodes/trigger): The entry point of a chatbot flow. Choose the messaging channels your bot answers on and the welcome message new users see. - [Form Trigger](/docs/nodes/form-trigger): Publishes a hosted web form and starts the automation each time someone submits it. Answers land in state under the output variable. - [Schedule Trigger](/docs/nodes/schedule-trigger): Starts the workflow on a timetable: every hour, day, week or month, or a custom cron expression, in the time zone you choose. - [Webhook Trigger](/docs/nodes/webhook-trigger): Gives the workflow its own URL. Each HTTP request to it starts a run with the request body, with optional request signing and a synchronous response mode. - [Manual Trigger](/docs/nodes/manual-trigger): Starts the workflow when you run it from the editor, with optional JSON input. For testing and for jobs you start by hand. - [Error Trigger](/docs/nodes/error-trigger): Starts the workflow when another run in the same project fails, with the failure's details, so one handler can alert your team. - [Stripe Trigger](/docs/nodes/stripe-trigger): Starts the workflow on Stripe events such as a successful payment, a completed checkout or a new subscription. Buni.ai registers the webhook in Stripe for you. - [GitHub Trigger](/docs/nodes/github-trigger): Starts the workflow on GitHub events in one repository: pushes, pull requests, issues, comments, releases and workflow runs. Buni.ai registers the webhook for you. - [Telegram Trigger](/docs/nodes/telegram-trigger): Starts the workflow on messages, bot commands, button presses, edits and channel posts sent to your Telegram bot. - [Data Store Trigger](/docs/nodes/datastore-trigger): Starts the workflow when a record is created, updated or deleted in one of your data stores. - [Incoming Call](/docs/nodes/call-start): Where every inbound call to an IVR project starts. Plays an optional greeting, then hands the call to the next node. - [Outbound Call](/docs/nodes/outbound-call): Where a call your IVR project places begins, with separate paths for answered, voicemail and no-answer outcomes. - **Conversation** - [Menu](/docs/nodes/menu): Show a numbered list on a USSD screen and wait for the caller to reply with a digit, or end the session with a final screen. - [Reply](/docs/nodes/reply): Send text, an image, buttons, quick replies or a WhatsApp template to the person in a chatbot conversation. - [Form](/docs/nodes/form): Collects several typed answers one question at a time, with validation, retries, review and cancellation, then continues on submit, cancel or failure. - [Intent](/docs/nodes/intent): Recognises what the person wants from your sample utterances and pulls the details you name into parameters. - [Live Chat](/docs/nodes/live-chat): Hands the conversation to a person on your team through the Inbox, and tells the customer what happens if nobody is free. - [Messaging](/docs/nodes/messaging): Send an SMS through Twilio, Africa's Talking or Infobip, or a USSD push message through Infobip, as a step in your flow. - **Voice** - [Play Message](/docs/nodes/play): Speaks a message to the caller, or plays an uploaded or hosted audio file, then moves straight on to the next node. - [Menu (voice)](/docs/nodes/ivr-menu): Plays a menu and branches on the key the caller presses, with separate paths for an unrecognised key and for no input. - [Collect Input](/docs/nodes/gather-input): Asks the caller for keypad digits or speech and saves the answer in a variable for later nodes to use. - [Queue](/docs/nodes/queue): Holds the caller until someone on your team is free, telling them where they stand while they wait. - [Transfer](/docs/nodes/transfer): Connects the caller to a phone number, a SIP endpoint or an available agent, with a fallback path when nobody answers. - [Warm Transfer](/docs/nodes/attended-transfer): Call the person first and tell them who is waiting. They press a key to accept, or the caller comes back to the flow. - [Record](/docs/nodes/record): Record the caller, either as voicemail that ends the call or as a recording the flow continues past. - [Verify Caller](/docs/nodes/verify-otp): Text a one-time code to the caller and mark the call verified when they key it in. Protected AI tools require this. - [End Call](/docs/nodes/hangup): End the call, optionally after a farewell message. - **AI** - [AI Agent](/docs/nodes/ai): Answer, classify or act on a message with a language model that can search your knowledge base and call APIs, integrations and data stores. - [AI Voice Agent](/docs/nodes/ai-voice-agent): Hold a spoken conversation with the caller, with limits on length and cost and a handoff path to a person. - **Logic** - [Router](/docs/nodes/router): Sends the flow down one of several paths based on conditions you define, checked top to bottom, with an optional fallback path. - [Set Fields](/docs/nodes/set-fields): Sets or transforms state variables by assigning a value or expression to each named field, so later nodes can read them. - [Filter](/docs/nodes/filter): Continues the flow only when a condition is true, and stops the run quietly otherwise. - [Function](/docs/nodes/function): Runs your own JavaScript on values from the flow and passes its return value to the next node. - [Loop](/docs/nodes/loop): Repeats the nodes on its body handle once for each item in a list, with optional pacing, then continues with the collected results. - [Parallel](/docs/nodes/parallel): Runs two to five branches of an automation at the same time, then continues once all of them finish, with their results in branch order. - [Wait](/docs/nodes/wait): Pauses the flow for a fixed duration before continuing. In automations the wait is durable, so hour- and day-long waits resume reliably. - [Approval](/docs/nodes/approval): Pauses an automation until someone on your team approves or rejects it, then continues down the matching path. - [Date & Time](/docs/nodes/date-time): Gets the current time, formats and parses dates, adds or subtracts durations, computes differences and finds the start or end of a period. - [Error](/docs/nodes/error): Shows the user a message when their input is invalid, then lets them try again. On voice projects it says the message and ends the call. - **Data** - [Data Store](/docs/nodes/datastore): Creates, reads, updates and deletes records in one of your data stores, and saves the result for later nodes. - [Remove Duplicates](/docs/nodes/remove-duplicates): Removes duplicate items from a list in state, comparing whole items or one field, and keeps the first or last occurrence. - [Contact](/docs/nodes/contact): Creates or updates a contact from flow data, adds them to contact groups and sets custom properties, or retrieves an existing contact. - [Resolve](/docs/nodes/resolve): Records that the flow acted on the user's report, for loop-closure reporting. Reaching the node is the event; there is nothing to configure. - **Integrations** - [API](/docs/nodes/api): Calls any HTTP endpoint with your method, headers, auth and body, captures fields from the response into state, and routes on success or failure. - [Integration](/docs/nodes/integration): Runs one action in a connected service such as Salesforce, HubSpot, Google Sheets or Slack, every time the flow reaches it, without AI. - [Collect Payment](/docs/nodes/collect-payment): Requests a payment by mobile money prompt (MTN MoMo, M-Pesa) or card checkout link (Paystack, Flutterwave, Stripe) on USSD, chat, a call or an automation. - [Respond Webhook](/docs/nodes/respond-webhook): Ends an automation with a status code, headers and body of your choosing, returned to whoever called its webhook or the Trigger API. - Channels: Connect chat apps, SMS, USSD and phone numbers - [Channels](/docs/channels): Every channel and provider Buni.ai connects to, and which project types can reach customers on each. - **Chat** - [WhatsApp](/docs/channels/whatsapp): Connect a chatbot to the WhatsApp Cloud API, configure Meta's webhook, and understand the 24-hour window, button limits and read receipts. - [WhatsApp templates](/docs/channels/whatsapp-templates): Create WhatsApp message templates, submit them to Meta for approval, and use them to reach customers outside the 24-hour window. - [Web chat widget](/docs/channels/web-chat-widget): Embed a chatbot on your website with the chat widget, customise how it looks and behaves, and control it from your page. - [Telegram](/docs/channels/telegram): Connect a chatbot to a Telegram bot with a BotFather token. Buni.ai registers the webhook for you when you publish. - [Messenger and Instagram](/docs/channels/messenger-and-instagram): Connect a chatbot to Facebook Messenger and Instagram direct messages through your Meta app. - [Slack](/docs/channels/slack): Connect a chatbot to a Slack app so people can talk to it in your Slack workspace. - **Telecom** - [USSD codes](/docs/channels/ussd-codes): Connect a USSD short code from your aggregator to a Buni.ai project, and record it on the Routes page. - [SMS providers](/docs/channels/sms-providers): Send SMS from your flows through Twilio, Africa's Talking or Infobip, using your own provider account and credentials. - [Voice carriers](/docs/channels/voice-carriers): Which carriers Voice (IVR) projects work with, and how to bring a phone number onto Buni.ai with the Routes page. - Operate: Inbox, knowledge, contacts and data - [Operate](/docs/operate): Run your published projects day to day - answer customers in the Inbox, keep knowledge and data current, and watch how each project performs. - **Conversations** - Inbox - [Inbox](/docs/operate/inbox): Answer customers who need a person, work USSD and voice reports, and find any conversation across your chatbot, USSD and voice projects. - [Assignments and routing](/docs/operate/inbox/assignments-and-routing): How conversations reach agents, how to accept, decline, reassign or pass a chat back to the bot, and how agents get notified. - [Replying to customers](/docs/operate/inbox/replying): Write replies in the Inbox composer, attach files, use canned responses, and understand typing indicators, read receipts and the WhatsApp 24-hour window. - [AI drafts and translation](/docs/operate/inbox/ai-drafts-and-translation): Let Buni draft Inbox replies from your knowledge base, choose which documents it can use, and chat with customers in another language. - [Notes, tags and customer profile](/docs/operate/inbox/notes-and-profile): Leave private notes for your team, tag conversations, and see who a customer is and how they have contacted you before. - [Resolving conversations](/docs/operate/inbox/resolving): Resolve a conversation, record an outcome that tells the customer what happened, and understand what happens when a customer writes back. - [CSAT surveys](/docs/operate/inbox/csat): Send customers a satisfaction survey built from one of your Forms when an agent resolves a chat, and see the ratings in the Inbox. - [Business hours](/docs/operate/inbox/business-hours): Set a chatbot project's time zone and opening hours so AI nodes know the local date and customers are told when your team is back. - [Inbox analytics](/docs/operate/inbox/analytics): See conversation volume, response times, CSAT and loop closure for your Inbox, by channel and by project. - [Cases](/docs/operate/cases): Track problems that outlive a conversation, review cases raised by an AI voice agent, and close each one by telling the person. - **Knowledge and data** - [Knowledge Base](/docs/operate/knowledge-base): Upload the documents your AI nodes and agents answer from, check how they were indexed, and replace a file without republishing. - [Contacts](/docs/operate/contacts): See everyone who has interacted with your projects, add or edit contacts, and organize them into groups. - [Data Stores](/docs/operate/data-stores): Create tables your flows read and write, define their fields, and view, import, export and edit records. - [Audio](/docs/operate/audio): Keep the recorded prompts your voice flows play, upload or generate audio files, and manage cloned voices. - **Monitoring** - [Routes](/docs/operate/routes): See every phone number and USSD short code that reaches your workspace, and which project and environment each one answers on. - [Logs and activity](/docs/operate/logs-and-activity): Use a project's Logs tab to troubleshoot runs event by event, and its Activity tab to see how people use the project over time. - [Feedback](/docs/operate/feedback): See the ratings people leave in the web chat widget at the end of a conversation, and export them. - [Weekly digest and email notifications](/docs/operate/weekly-digest): What the weekly summary email contains, how to unsubscribe or turn it off, and which other emails Buni.ai sends. - Workspace: Organization, people, billing and security - [Workspace](/docs/workspace): Manage your organization - its settings, people and roles, credentials, billing, audit log and data privacy. - [Organization settings](/docs/workspace/organization): Edit your organization's profile and logo, control emails and data retention, set up outcomes and outbound calling, and switch between organizations. - [Users and roles](/docs/workspace/users-and-roles): Invite people to your organization, choose their role, share projects with them and limit which sections of the app they can use. - [Credentials](/docs/workspace/credentials): Store API keys, tokens and other secrets once, choose which projects can use them, and reference them in flows by name. - [Billing and usage](/docs/workspace/billing-and-usage): Understand the Buni.ai plans and what they limit, manage your subscription, and see what your organization has used. - [Audit log](/docs/workspace/audit-log): See who published projects, changed access, managed connections and API tokens, or assigned roles in your organization. - [Privacy and data](/docs/workspace/privacy-and-data): Tell people how their data is used, control how long transcripts and recordings are kept, and disclose AI and call recording on voice projects. - Developers: Public API and webhooks - [Developers](/docs/developers): Call chatbots, flows and automations from your own systems with the Buni.ai public API, and receive events back. - [Authentication](/docs/developers/authentication): Create a project API token, choose its scopes, send it with each request, and rotate or revoke it. - [Project API settings](/docs/developers/project-api-settings): The API Access tab of a project - keys, endpoint URLs, the External API switch, default policies, callback URL and managed webhooks. - **Calling the API** - [Idempotency](/docs/developers/idempotency): Retry API calls safely with the x-idempotency-key header, so a network timeout never sends a message or runs a workflow twice. - [Rate limits and quotas](/docs/developers/rate-limits-and-quotas): How many API calls you can make per minute and per billing period, the headers that report them, and how to back off. - [Async runs and callbacks](/docs/developers/async-and-callbacks): Queue a bot message, flow or automation, then poll for the result or receive a signed callback at your webhook URL. - [Scheduling](/docs/developers/scheduling): Run a chatbot flow or automation at a set time with runAt or delaySeconds, then cancel or reschedule it before it starts. - [Errors](/docs/developers/errors): Every status code the Buni.ai public API returns, what the error body looks like, and whether to retry. - **Receiving events** - [Inbound webhooks](/docs/developers/inbound-webhooks): Start an automation when any service sends an HTTP request to its Webhook trigger URL, with optional HMAC signing and de-duplication. - [Dead letters and polling](/docs/developers/dead-letters-and-polling): Pull new items from one of your APIs on a timer with polling triggers, and inspect or replay events that could not be delivered. - **Reference** - API reference - [API reference](/docs/developers/api-reference): Every endpoint of the Buni.ai v1 public API, generated from the OpenAPI document pinned to the product source. - Automations - [Trigger an automation (sync)](/docs/developers/api-reference/automations/triggerAutomation): Runs an automation workflow and waits for it to finish. result is whatever the workflow returns. - [Trigger an automation (async or scheduled)](/docs/developers/api-reference/automations/triggerAutomationAsync): Queues an automation run and returns 202 immediately. Add runAt or delaySeconds to schedule it for later; add webhookUrl to be called back when it finishes. - [Webhook trigger URL](/docs/developers/api-reference/automations/webhookTrigger): The URL an automation's Webhook trigger listens on: https://www.buni.ai/api/hooks/t/{endpointToken}. - Bots - [Send a message to a chatbot (async)](/docs/developers/api-reference/bots/invokeBotAsync): Queues a message for a chatbot and returns immediately with 202 and an invocationId. - [Send a message to a chatbot (sync)](/docs/developers/api-reference/bots/sendBotMessage): Sends one user message into a chatbot session and waits for the bot's reply. The message runs against the published (production) bot. - Flows - [Delete a polling trigger](/docs/developers/api-reference/flows/deletePollingTrigger): Removes a polling trigger so it stops polling. Requires the flow:trigger scope. - [List dead-letter events](/docs/developers/api-reference/flows/listDeadLetters): Lists events that could not be delivered to the project's runtime after all retry attempts, newest first, including failed polling cycles and polled items. - [List polling triggers](/docs/developers/api-reference/flows/listPollingTriggers): Returns the polling triggers registered for the project, or one of them when you pass pollKey. Requires the flow:trigger scope. - [Register a polling trigger](/docs/developers/api-reference/flows/registerPollingTrigger): Registers (or updates, when the pollKey already exists) a polling trigger. Buni.ai calls pollEndpoint with GET every intervalMs, starting straight away. - [Replay a dead-letter event](/docs/developers/api-reference/flows/replayDeadLetter): Runs the project's flow again with the stored payload of one dead-letter event. Each event can be replayed once; the outcome is recorded in replayStatus. - [Trigger a chatbot flow (sync)](/docs/developers/api-reference/flows/triggerFlow): Starts a chatbot project's flow from an external event and waits for the result. - [Trigger a chatbot flow (async or scheduled)](/docs/developers/api-reference/flows/triggerFlowAsync): Queues a chatbot flow run and returns 202 immediately. - Invocations - [Get an invocation](/docs/developers/api-reference/invocations/getInvocation): Returns the status, result and step trace of one run. Secrets in payloads and traces are redacted. - [Async run callback](/docs/developers/api-reference/invocations/runCallback): Sent to your webhookUrl when an async run finishes. - [Cancel or reschedule an invocation](/docs/developers/api-reference/invocations/updateInvocation): Changes a run that has not started yet. - Guides: End-to-end recipes - [Guides](/docs/guides): End-to-end recipes that combine projects, nodes and channels to build complete services in Buni.ai. - [Support bot with human handoff](/docs/guides/support-bot-with-handoff): Build a chatbot that answers from your knowledge base with an AI Agent and hands the conversation to a person in the Inbox when asked. - [USSD application](/docs/guides/ussd-application): Build a USSD banking menu that checks a balance and pays a bill through your API, handles failures and texts a receipt. - [Appointment reminder calls](/docs/guides/ivr-appointment-reminders): Call customers the day before their appointment from a scheduled automation, and know what a Voice (IVR) project can and cannot do for outbound calls today. - [Form to WhatsApp message](/docs/guides/form-to-whatsapp-automation): Publish a hosted form and send each person who submits it a WhatsApp template message from an automation. - [Collecting data](/docs/guides/data-collection): Collect validated answers from customers in a chatbot with the Form node, save them to a data store, and choose the right tool for USSD and the web. - [Personalized messages](/docs/guides/personalized-communications): Send each customer an SMS built from their own record, with different wording for each segment, from an automation. - [Handling errors](/docs/guides/error-handling): Add input checks, retries and failure paths to a USSD order-tracking flow, so callers always get a useful screen when something goes wrong. - [Workflow examples](/docs/guides/workflow-examples): Small, complete flows you can copy with their node settings, from a USSD balance check and money transfer to a form-to-SMS automation. - Changelog: What changed, month by month - [Changelog](/docs/changelog): What changed in Buni.ai, month by month, newest first.