> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Linking Rippling as a source Canonical URL: https://posthog.com/docs/data-pipelines/sources/rippling > **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.posthog.com` instead of `https://us.posthog.com` or `https://app.posthog.com` (app host for links). ## On this page - [Adding a data source](#adding-a-data-source) - [Available tables](#available-tables) - [Required scopes](#required-scopes) - [Configuration](#configuration) - [Supported tables](#supported-tables) **Beta release** This source is currently in **beta**. It works end to end, but you may still hit rough edges. [Let us know](https://us.posthog.com/#panel=support%3Asupport%3Adata_warehouse%3A%3Atrue) if you do. ![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_9608fcca70) ![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_dark_a92b0e022d) Let AI connect your sources for you Skip the manual setup — run this in your project and the wizard auto-detects your databases and APIs and connects them to PostHog. `npx @posthog/wizard warehouse` ![PostHog Wizard hedgehog](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png) ![](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png)Let AI connect your sources for you The Rippling connector automatically pulls your Rippling workforce and HR data into the PostHog data warehouse. ## Adding a data source 1. Go to the [sources tab](https://app.posthog.com/data-management/sources) of the data pipeline section in PostHog. 2. Click **\+ New source** and then click **Link** next to Rippling. 3. You need a Rippling API token. In your Rippling admin console, go to **Settings** > **Company Settings** > **API Access** and create a scoped API token. Enable the read scope for each dataset you want to sync (see [required scopes](#required-scopes) below). 4. Back in PostHog, enter the token in the **API token** field and click **Next**. 5. Select the tables you want to sync, set the sync method and frequency, then click **Import**. Once the syncs are complete, you can start using Rippling data in PostHog. **Token expiry** Rippling API tokens expire after 30 days of inactivity. If syncs start failing with authentication errors, generate a new token in Rippling and update it in PostHog. ## Available tables | Table | Description | Sync method | | --- | --- | --- | | `workers` | Employee and contractor records | Incremental | | `users` | Rippling platform users | Incremental | | `companies` | Company information | Incremental | | `departments` | Organizational departments | Incremental | | `teams` | Team groupings | Incremental | | `levels` | Job levels and seniority tiers | Incremental | | `work_locations` | Office and work location records | Incremental | | `employment_types` | Employment type definitions (full-time, part-time, etc.) | Incremental | | `compensations` | Compensation and salary data | Incremental | **Incremental** tables sync only new or updated records on each run using `updated_at` or `created_at` cursors. ## Required scopes Rippling API tokens are scoped per dataset. Your token needs the read permission for each table you want to sync. If a scope is missing, that specific table fails with a permissions error while other tables continue to sync normally. | Table | Required scope | | --- | --- | | `workers` | `workers.read` | | `users` | `users.read` | | `companies` | `companies.read` | | `departments` | `departments.read` | | `teams` | `teams.read` | | `levels` | `levels.read` | | `work_locations` | `work-locations.read` | | `employment_types` | `employment-types.read` | | `compensations` | `compensations.read` | ## Configuration | Option | Type | Required | | --- | --- | --- | | `API token` | password | Yes | ## Supported tables | Table | Description | Sync method | Incremental field | Primary key | | --- | --- | --- | --- | --- | | `workers` | A worker (employee or contractor) in the company, with employment details. | Incremental, Full refresh | updated\_at, created\_at | — | | `users` | A user account in the company directory, with contact and identity details. | Incremental, Full refresh | updated\_at, created\_at | — | | `companies` | A company (legal entity) in the Rippling account. | Incremental, Full refresh | updated\_at, created\_at | — | | `departments` | A department within the company used to organize workers. | Incremental, Full refresh | updated\_at, created\_at | — | | `teams` | A team within the company used to group workers. | Incremental, Full refresh | updated\_at, created\_at | — | | `levels` | A job level (seniority tier) used to classify workers. | Incremental, Full refresh | updated\_at, created\_at | — | | `work_locations` | A physical work location (office or site) for the company. | Incremental, Full refresh | updated\_at, created\_at | — | | `employment_types` | An employment type classifying how workers are employed (e.g. full-time, contractor). | Incremental, Full refresh | updated\_at, created\_at | — | | `compensations` | A worker's compensation record, including pay rate and structure. | Incremental, Full refresh | updated\_at, created\_at | — | | `variable_compensation_payouts` | A variable compensation payout (bonus, commission or other one-off pay) scheduled for a worker. | Full refresh | — | — | | `time_entries` | A time entry recording when a worker clocked in and out, with breaks, shifts and pay segments. | Incremental, Full refresh | updated\_at | — | | `leave_requests` | A request by a worker for time off, with its dates, status and review details. | Full refresh | — | — | | `payroll_runs` | A payroll run: one pay period's payroll for a company entity, with its dates and state. | Full refresh | — | — | | `worker_payroll_records` | A worker's payroll record within a payroll run: gross and net pay, earnings, taxes, deductions and garnishments. | Full refresh | — | — |