--- title: "Introduction" url: https://docs.catalyst.zoho.com/en/tutorials/invoice-notifier/python/introduction/ description: "Create an Event Driven Architecture to automate invoice updates from Zoho Books to Zoho Cliq using Event Functions and Catalyst Signals." last_updated: 2026-08-17T12:16:04Z service: All Services type: tutorial related_links: - name: "Project Directory Structure" url: /en/cli/v1/project-directory-structure/introduction/ - name: "Java SDK" url: /en/sdk/java/v1/overview/ - name: "Node.js SDK" url: /en/sdk/nodejs/v2/overview/ - name: "Python SDK" url: /en/sdk/python/v1/overview/ --- # Invoice Notifier ### Introduction In a fast-paced business environment, timely customer onboarding plays a key role in ensuring customer satisfaction. However, Customer Success teams often face delays due to a lack of real-time payment updates from billing applications. This tutorial demonstrates how you can use **Catalyst Signals** to bridge this gap and automate communication between decoupled systems. You will build an event-driven solution that listens to invoice updates from [**Zoho Books**](https://www.zoho.com/in/books/), filters the events based on payment status, and compiles a summary of paid invoices every hour. This summary will then be sent to a [**Catalyst Event Function**](https://docs.catalyst.zoho.com/en/serverless/help/functions/event-functions/), which will forward the report to your [**Zoho Cliq**](https://www.zoho.com/cliq/) channel. ![Invoice Notifier](https://catalyst-docs-development.zohostratus.in/images/tutorials/invoice-notifier/demo.webp) The event automation uses components from the following Catalyst Services: [**Catalyst Signals**](https://docs.catalyst.zoho.com/en/signals): * [**Publisher**](https://docs.catalyst.zoho.com/en/signals/help/publishers/key-aspects/): A primary source of [events](https://docs.catalyst.zoho.com/en/signals/help/events/) where they are generated when any action or change occurs in an application. * [**Rules**](https://docs.catalyst.zoho.com/en/signals/help/rules/key-aspects/): It is a statement that guides the ingestion of incoming events from Publisher to [Target](https://docs.catalyst.zoho.com/en/signals/help/targets/key-aspects/). [**Catalyst Serverless**](https://docs.catalyst.zoho.com/en/serverless/): * [**Event Function**](https://docs.catalyst.zoho.com/en/serverless/help/functions/event-functions/): It is an asynchronous task function that is associated with Catalyst Signals. An Event function is created to execute a task or a set of tasks on the occurrence of a specified event. We will use the [Catalyst web console](https://console.catalyst.zoho.com/) and the [Catalyst Command Line Interface](https://docs.catalyst.zoho.com/en/cli/v1/cli-command-reference/) (CLI) to build this application. You will be given the code for the files to be included in the function components in this tutorial. You will just need to copy the code given here and paste it into the appropriate files as directed. ### Event Flow The architecture of the event flow in this use case is outlined below: - A customer makes a payment, **triggering an invoice update** in Zoho Books. This event is published to Catalyst Signals. - Signals applies a **filter** to include only invoices marked as *Paid*. The filtered event data is then transformed and batched. - **Every hour**, the **batched events** are delivered to a Catalyst Event Function. The function further processes the event data and sends as a **report to a Zoho Cliq channel**. ![Event flow for Invoice Notifier](https://catalyst-docs-development.zohostratus.in/images/tutorials/invoice-notifier/event-flow.webp)