# Automation for custom apps and objects

> Choose validations, rules, approvals, workflows, functions, or component logic to automate a custom app.

## Overview

Rippling offers several different ways to add automation to custom apps and objects. Automations can help you optimize your data, eliminate manual work, and streamline your processes.

* * *

## Comparison of methods

Below are the available options. Select the appropriate method based on your goals. You can combine methods as needed to suit your purposes.

| Method | Purpose | When it runs | Example |
| --- | --- | --- | --- |
| Validations | Ensure data is clean and valid. | On record save. | Block a new vehicle record from being saved if the VIN is not exactly 17 characters. |
| Rules | Automate data entry or enforce record uniqueness. | On record save. Upon approval, if required. | When saving a record for an opportunity with a contract value of more than $100,000, automatically mark it as an enterprise deal. |
| Approvals | Route records to people for approval. | On record save. | Require approval when the due date on a project deliverable is updated. |
| Workflows | Automatically take action inside or outside of Rippling based on logic you define. | When a record is created or updated. When the workflow trigger event you define occurs. | Send a Slack message when a new HR help desk ticket is created. When you hire someone new, automatically create a record in a custom object to add them as a project team member. |
| Functions | Take action across Rippling using custom JavaScript or TypeScript code. | When manually run on a record or set of records (via actions). When called from a custom app. When called from a workflow. | Calculate tip payouts based on data from an integrated point-of-sale system. |
| Component-level JavaScript or TypeScript | Create interactivity in a custom app using custom JavaScript or TypeScript code. | When a user interacts with the component. | Automatically enable a field in a custom app when a user selects an option in another field. |

To use functions or component-level JavaScript or TypeScript, you must be able to understand and write JavaScript or TypeScript code.

* * *

## Related

-   [Get started with custom apps](https://developer.rippling.com/documentation/rippling-platform/custom-apps/get-started).
-   [Get started with workflows](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/get-started).
-   [Trigger a workflow](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/trigger-workflow).
-   [Get started with functions](https://developer.rippling.com/documentation/rippling-platform/developer/functions/getting-started).
-   [Invoking functions](https://developer.rippling.com/documentation/rippling-platform/developer/functions/invoking-functions).

Source: https://developer.rippling.com/documentation/rippling-platform/custom-apps/automation

> For the complete documentation index, see [llms.txt](https://developer.rippling.com/llms.txt). Public pages have a Markdown version at the same URL with .md added.
