# Rippling Developer resources

> Build inside Rippling using platform primitives for data, apps, automation, and AI.

Build inside Rippling using platform primitives for data, apps, automation, and AI.

## Overview

Developer resources cover the primitives you use to extend Rippling **for your own company**, bringing in external data, building custom apps, automating workflows, and connecting AI clients to Rippling.

This section is for Rippling customers and builders working inside a company account. If you're building an integration for the Rippling App Shop, see **App Shop Integrations**. For the public REST API reference, see **API**.

* * *

## Where to start

| If you want to… | Start here |
| --- | --- |
| Understand how platform primitives combine into an end-to-end solution | [Custom solutions](https://developer.rippling.com/documentation/rippling-platform/custom-solutions/gettingstarted) |
| Build custom solutions using recommended best practices and design principles | [Best practices](https://developer.rippling.com/documentation/rippling-platform/custom-solutions/best-practices) |
| Decide when to use a transformation, function, or workflow | [Rippling primitives](https://developer.rippling.com/documentation/rippling-platform/custom-solutions/rippling-primitives) |
| Build an end-to-end solution using Rippling platform primitives | [ATS to draft hire](https://developer.rippling.com/documentation/rippling-platform/solution-guides/ats-to-draft-hire-integration) |
| Work with Rippling's data model and objects | [Data Model](https://developer.rippling.com/documentation/rippling-platform/data-model/getting-started) |
| Use a shared account for a team, service, or AI agent | [Service accounts](https://developer.rippling.com/documentation/rippling-platform/users/service-accounts) |
| Group people dynamically for workflows and policies | [Supergroups](https://developer.rippling.com/documentation/rippling-platform/supergroups/getting-started) |
| Bring external data into Rippling | [Pipelines](https://developer.rippling.com/documentation/rippling-platform/pipelines/getting-started) |
| Clean, join, and reshape data with SQL | [Transformations](https://developer.rippling.com/documentation/rippling-platform/transformations/getting-started) |
| Look up SQL functions and syntax | [SQL](https://developer.rippling.com/documentation/rippling-platform/transformations/sql-reference-glossary) |
| Analyze data in the Reports and Dashboards app | [Reports](https://developer.rippling.com/documentation/rippling-platform/reports/getting-started) |
| Surface reports on the Rippling home page | [Dashboards](https://developer.rippling.com/documentation/rippling-platform/dashboards/getting-started) |
| Write and run serverless JavaScript in Rippling | [Functions](https://developer.rippling.com/documentation/rippling-platform/developer/functions/getting-started) |
| Build a custom app or UI in Rippling | [Custom Apps](https://developer.rippling.com/documentation/rippling-platform/custom-apps/get-started) |
| Automate processes with triggers and actions | [Workflows](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/get-started) |
| See which changes wait for approval | [Approvals](https://developer.rippling.com/documentation/rippling-platform/approvals/getting-started) |
| Send custom object events to an external system | [Webhooks](https://developer.rippling.com/documentation/rippling-platform/developer/webhooks/gettingstarted) |
| Build and publish apps from the terminal | [Rippling CLI](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/get-started) |
| Build with the JavaScript SDK | [Rippling SDK](https://developer.rippling.com/documentation/js-sdk/getting-started) |
| Connect an AI client to Rippling | [Rippling MCP](https://developer.rippling.com/documentation/rippling-platform/rippling-mcp/overview) |

* * *

## Learn more

### Custom solutions

Learn how Rippling's platform primitives work together—from ingesting and storing data to automating actions and surfacing them in apps, reports, and dashboards.

-   **[Custom solutions](https://developer.rippling.com/documentation/rippling-platform/custom-solutions/gettingstarted)** — How the primitives fit together
-   **[Rippling primitives](https://developer.rippling.com/documentation/rippling-platform/custom-solutions/rippling-primitives)** — Decide when to use a function, transformation, or workflow
-   **[Best practices](https://developer.rippling.com/documentation/rippling-platform/custom-solutions/best-practices)** — Design reliable, scalable custom solutions
-   **Solution guides**
    -   **[ATS to draft hire](https://developer.rippling.com/documentation/rippling-platform/solution-guides/ats-to-draft-hire-integration)** — Turn accepted ATS offers into draft hires with pipelines, custom objects, transformations, workflows, and functions
    -   **[POS to Time & Attendance](https://developer.rippling.com/documentation/rippling-platform/solution-guides/time-attendance-integration)** — Bring point-of-sale punches into Rippling Time & Attendance with a pipeline, a SQL transformation, a function, and a nightly workflow
    -   **[Kudos employee recognition](https://developer.rippling.com/documentation/rippling-platform/solution-guides/kudos-employee-recognition-app)** — Recognize teammates with custom objects, a custom app, functions, a validation, and a workflow
    -   **[OEWS market data](https://developer.rippling.com/documentation/rippling-platform/solution-guides/oews-market-data-app)** — Pull BLS wage statistics into Rippling with custom settings, functions, custom objects, and a custom app

### Data Model

Use Rippling's standardized data model, including custom objects.

-   **[Get started](https://developer.rippling.com/documentation/rippling-platform/data-model/getting-started)** — How data is modeled in Rippling
-   **[Object types](https://developer.rippling.com/documentation/rippling-platform/data-model/object-types)** — Standard, custom, and other object types
-   **[Custom objects](https://developer.rippling.com/documentation/rippling-platform/custom-objects/getting-started)** — Store custom datasets in Rippling
    -   **[Limits](https://developer.rippling.com/documentation/rippling-platform/custom-objects/custom-object-limits)** — Limits that apply to custom objects
    -   **[Data modeling](https://developer.rippling.com/documentation/rippling-platform/custom-objects/data-modeling)** — Plan objects, fields, and relationships
    -   **[Fields](https://developer.rippling.com/documentation/rippling-platform/custom-objects/fields)** — Default, basic, name, owner, formula, and summary fields
    -   **[Lookups](https://developer.rippling.com/documentation/rippling-platform/custom-objects/lookups)** — Relate custom objects to each other and to Rippling objects
    -   **[API names and IDs](https://developer.rippling.com/documentation/rippling-platform/custom-objects/api-names-and-ids)** — API names and unique record IDs
    -   **[Rules and validations](https://developer.rippling.com/documentation/rippling-platform/custom-objects/rules-and-validations)** — Automate values and block invalid saves
    -   **[Record layouts](https://developer.rippling.com/documentation/rippling-platform/custom-objects/record-layouts)** — Blocks, reports, and dynamic views
-   **[Permissions](https://developer.rippling.com/documentation/rippling-platform/data-model/permissions)** — What data people can see and change
    -   **[People data classifications](https://developer.rippling.com/documentation/rippling-platform/data-model/employee-data-classifications)** — Personal vs. employment data, and sensitivity classifications
    -   **[Assign people data access](https://developer.rippling.com/documentation/rippling-platform/data-model/assign-people-data-permissions)** — Default access and how to grant more
    -   **[Object permissions](https://developer.rippling.com/documentation/rippling-platform/data-model/object-permissions)** — Profiles for custom, live, and big objects
-   **[Data lineage](https://developer.rippling.com/documentation/rippling-platform/data-model/data-lineage)** — Trace dependencies across pipelines and transformations

### Pipelines

Bring external data into Rippling with custom pipelines.

-   **[Get started with pipelines](https://developer.rippling.com/documentation/rippling-platform/pipelines/getting-started)** — Ingest data into the Rippling data model
-   **[Set up a custom pipeline](https://developer.rippling.com/documentation/rippling-platform/pipelines/custom-pipeline-setup)** — Build a custom API pipeline
-   **[Permissions for pipelines](https://developer.rippling.com/documentation/rippling-platform/pipelines/permissions)** — Who can create, view, manage, and use pipeline data
-   **[Pipeline sync management guide](https://developer.rippling.com/documentation/rippling-platform/pipelines/sync-management)** — Incremental and full sync, history, and errors
-   **[Pipeline FAQs](https://developer.rippling.com/documentation/rippling-platform/pipelines/faqs)** — Maintenance, security, multi-account, and Rippling AI

### Transformations

Write SQL against Rippling data and publish the results as objects.

-   **[Get started](https://developer.rippling.com/documentation/rippling-platform/transformations/getting-started)** — Create and publish transformations
-   **[Refresh schedules](https://developer.rippling.com/documentation/rippling-platform/transformations/refresh-schedules)** — Control how often transformation results update

### SQL

Look up SQL syntax, functions, and keywords used in transformations.

-   **[SQL reference glossary](https://developer.rippling.com/documentation/rippling-platform/transformations/sql-reference-glossary)** — Entry point for each function, keyword, and operator in the SQL nav

### Reports

Analyze employee, app, custom, and imported data in the Reports and Dashboards app.

-   **[Get started with reports](https://developer.rippling.com/documentation/rippling-platform/reports/getting-started)** — How reports work, time frames, and how data refreshes
-   **[Joins in reports](https://developer.rippling.com/documentation/rippling-platform/reports/joins)** — Join types, keys, and automatic joins
-   **[Write a custom SQL query in a report](https://developer.rippling.com/documentation/rippling-platform/reports/custom-sql)** — One SQL query that adds fields, then joins them to the report
-   **[Filters and time frames in reports](https://developer.rippling.com/documentation/rippling-platform/reports/filters)** — Data as of, filters, and parameters
-   **[Charts and grouping in reports](https://developer.rippling.com/documentation/rippling-platform/reports/visualization)** — Aggregation, chart types, and currency conversion
-   **[Configure drilldown reports](https://developer.rippling.com/documentation/rippling-platform/reports/drilldowns)** — Fields, filters, and formatting behind an aggregated value
-   **[Apply formatting to numbers or dates](https://developer.rippling.com/documentation/rippling-platform/reports/formatting)** — Display formats for numbers, currencies, and dates
-   **[Report permissions](https://developer.rippling.com/documentation/rippling-platform/reports/permissions)** — Who can create reports and which data they can include
-   **[Share and download reports](https://developer.rippling.com/documentation/rippling-platform/reports/sharing)** — Visibility, access, downloads, and ownership

### Dashboards

Group reports into analytics dashboards on the Rippling home page.

-   **[Get started with dashboards](https://developer.rippling.com/documentation/rippling-platform/dashboards/getting-started)** — What dashboards are and how they relate to reports
-   **[Overview of dashboard filters](https://developer.rippling.com/documentation/rippling-platform/dashboards/filters)** — Dashboard-wide and report-specific filters
-   **[Use filters in AI dashboards](https://developer.rippling.com/documentation/rippling-platform/dashboards/ai-filters)** — Filters Rippling AI adds, and how to add or remove them
-   **[Dashboard sharing and permissions](https://developer.rippling.com/documentation/rippling-platform/dashboards/sharing)** — Visibility, edit access, and transferring ownership

### Functions

Write JavaScript that Rippling saves, deploys, versions, and runs for you.

-   **[Get started](https://developer.rippling.com/documentation/rippling-platform/developer/functions/getting-started)** — Create and deploy functions
-   **[Developer app](https://developer.rippling.com/documentation/rippling-platform/developer/getting-started)** — Tools in the Developer app
-   **[Permissions](https://developer.rippling.com/documentation/rippling-platform/developer/permissions)** — Which permission each Developer tool requires
-   **[API tokens and permissions](https://developer.rippling.com/documentation/rippling-platform/developer/api-tokens)** — Manage REST API tokens and permission profiles
-   **[Custom settings](https://developer.rippling.com/documentation/rippling-platform/developer/custom-settings)** — Save reusable configuration and secrets for functions
-   **[Invoking functions](https://developer.rippling.com/documentation/rippling-platform/developer/functions/invoking-functions)** — Call functions from apps, workflows, and the API
-   **[Hello world](https://developer.rippling.com/documentation/rippling-platform/developer/functions/real-world-example)** — Walk through a complete function

### Custom Apps

Build custom apps on the Rippling platform, including no-code and developer options.

-   **[Get started](https://developer.rippling.com/documentation/rippling-platform/custom-apps/get-started)** — Build custom apps in Rippling
-   **[Access](https://developer.rippling.com/documentation/rippling-platform/custom-apps/access)** — App, page, and data permissions
-   **[Table views](https://developer.rippling.com/documentation/rippling-platform/custom-apps/table-views)** — Customize tables in a custom app
-   **[Automation](https://developer.rippling.com/documentation/rippling-platform/custom-apps/automation)** — Validations, rules, approvals, workflows, and functions
-   **[Blocks and dynamic content](https://developer.rippling.com/documentation/rippling-platform/blocks-dynamic-content)** — Add dynamic content blocks to pages in Rippling
-   **[Function pages](https://developer.rippling.com/documentation/rippling-platform/sdui/getting-started)** — Build coded pages with Rippling functions
    -   **[Hello world](https://developer.rippling.com/documentation/rippling-platform/sdui/hello-world)** — Return an SDUI spec from a function
    -   **[Server round-trips](https://developer.rippling.com/documentation/rippling-platform/sdui/server-round-trips)** — Handle user actions on the server
    -   **[State & data binding](https://developer.rippling.com/documentation/rippling-platform/sdui/state-data-binding)** — Bind UI to function state
    -   **[Components](https://developer.rippling.com/documentation/rippling-platform/sdui/components)** — SDUI components you can use
    -   **[Reference](https://developer.rippling.com/documentation/rippling-platform/sdui/reference)** — Function page API reference

### Workflows

Automate processes that run when something happens in Rippling, on a schedule, or from an external system.

-   **[Get started](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/get-started)** — Triggers, steps, and how workflows fit with other platform primitives
-   **[Permissions](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/permissions)** — What data can trigger a workflow, and what step recipients can see
-   **[Triggers](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/triggers)** — Trigger types, schedules, and basic vs. advanced workflows
-   **[Filter conditions](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/filter-conditions)** — Filter conditions and aggregations
-   **[Variables](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/variables)** — Trigger variables, step output, and custom variables
-   **[Steps](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/steps)** — Query, APIs, custom objects, true/false branches, SFTP, and other steps
-   **[Call an API](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/call-api)** — Send a request to a third-party API or webhook from a workflow
-   **[Trigger from a webhook](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/trigger-workflow)** — An external system starts a workflow with a POST
-   **[Statuses](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/statuses)** — Draft, inactive, and active
-   **[Limits](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/limits)** — Timeouts, query size, bulk iteration, and other caps
-   **[Troubleshooting](https://developer.rippling.com/documentation/rippling-platform/developer/workflows/troubleshooting)** — Failed runs, unexpected triggers, and API errors

### Approvals

Decide who must approve a change before it takes effect.

-   **[Get started with approvals](https://developer.rippling.com/documentation/rippling-platform/approvals/getting-started)** — Conditions, Supergroups, approvers, and approval steps
-   **[How multiple approval policies work together in Rippling](https://developer.rippling.com/documentation/rippling-platform/approvals/multiple-policies)** — Policy order and a single request with multiple steps
-   **[Approvals for custom objects](https://developer.rippling.com/documentation/rippling-platform/approvals/custom-objects)** — Record create, update, delete, and user-initiated policies

### Users and groups

Share access across a team or define a group that stays current as people change.

-   **[Service accounts](https://developer.rippling.com/documentation/rippling-platform/users/service-accounts)** — Create an account for a team, service, or AI agent with stable permissions
-   **[Supergroups](https://developer.rippling.com/documentation/rippling-platform/supergroups/getting-started)** — Build a group from Rippling attributes that updates when those attributes change

### Webhooks

Sync real-time custom object events to an external system.

-   **[Webhooks](https://developer.rippling.com/documentation/rippling-platform/developer/webhooks/gettingstarted)** — Subscribe to create, update, and delete events

### Rippling CLI

Build and publish Developer Program apps from the terminal.

Access to the Rippling CLI is gated behind the **Developer Program**, which is currently in a closed beta.

-   **[Get started](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/get-started)** — Install the CLI, sign in, and create a project
-   **[Install and maintain](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/install-and-maintain)** — Update the CLI, enable shell completion, and uninstall it
-   **[Developer Program](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/developer-program)** — Sign in, apply for access, and manage contexts
-   **[Developer sandboxes](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/sandboxes)** — Create isolated environments for building and testing
-   **[Projects & metadata](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/projects-metadata)** — Create a local project and deploy it
-   **[Functions](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/functions)** — Deploy function code and manage function resources
-   **[Agents](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/agents)** — Run agent evaluations, install skills, and search CLI guidance
-   **[Packages](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/packages)** — Create a package, publish a version, and install it
-   **[Listings](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/listings)** — Create an App Shop listing and publish it
-   **[Platform APIs](https://developer.rippling.com/documentation/rippling-platform/rippling-cli/platform-apis)** — Call platform APIs that have no workflow command

### Rippling SDK

Call the Rippling REST API from JavaScript or TypeScript.

-   **[Get started](https://developer.rippling.com/documentation/js-sdk/getting-started)** — Install the SDK, authenticate, and make a REST request
-   **[Hello world](https://developer.rippling.com/documentation/js-sdk/hello-world)** — Create a custom object record with the SDK
-   **[Common tasks](https://developer.rippling.com/documentation/js-sdk/common-tasks)** — Common SDK tasks with examples
-   **[API reference](https://developer.rippling.com/documentation/js-sdk/api)** — SDK methods for the REST API

### Rippling MCP

Connect AI clients to Rippling through a governed Model Context Protocol interface.

-   **[Overview](https://developer.rippling.com/documentation/rippling-platform/rippling-mcp/overview)** — How Rippling MCP works
-   **[Setup](https://developer.rippling.com/documentation/rippling-platform/rippling-mcp/setup)** — Connect an AI client
-   **[Tools](https://developer.rippling.com/documentation/rippling-platform/rippling-mcp/tools)** — Approved actions available through MCP
-   **[Troubleshooting](https://developer.rippling.com/documentation/rippling-platform/rippling-mcp/troubleshooting)** — Diagnose access and policy issues

Source: https://developer.rippling.com/documentation/rippling-platform/

> 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.
