Linking Factorial as a source
This source is currently in alpha. The interface and available tables may change.
The Factorial connector syncs your HR, time-off, attendance, payroll, and recruiting data into PostHog, so you can analyze it alongside your product data.
Prerequisites
You need a Factorial account with access to create an API key that has read access to your company's data.
Adding a data source
- In PostHog, go to the Sources tab of the data pipeline section.
- Click + New source and click Link next to this source.
- Enter your credentials (see Configuration below) and click Next.
- Select the tables you want to sync, choose a sync method and frequency, then click Import.
Once the syncs are complete, you can start querying this data in PostHog.
When linking Factorial, you'll need:
- API key – create an API key in your Factorial account under Settings > API keys (or Integrations > Public API). The key grants read access to your company's data across every supported table.
Sync modes
Each table can be synced in one of several modes, depending on what the source supports:
- Webhook (when available) – the source pushes changes to PostHog in real time. Fastest freshness, lowest ongoing cost, and the only mode that reliably captures updates and deletes.
- Incremental – only new or updated rows are synced on each run, using a cursor field (such as an
updated_attimestamp). Cheaper than a full refresh, but deletes aren't captured. - Append only – new rows are appended using a cursor field; existing rows are never updated. Ideal for immutable, append-only tables like event logs.
- Full refresh – the whole table is reloaded on every sync. Use it when a table has no reliable cursor or when you need deletions reflected.
See sync methods for a full explanation of how each mode works and how to choose between them.
This source is full refresh only.
Configuration
| Option | Type | Required |
|---|---|---|
API key | password | Yes |
Supported tables
| Table | Description | Sync method | Incremental field | Primary key |
|---|---|---|---|---|
employees | People employed at the company, with their personal and employment details. | Full refresh | — | — |
teams | Teams used to group employees within the company. | Full refresh | — | — |
team_memberships | Join records mapping employees to the teams they belong to. | Full refresh | — | — |
locations | Workplaces/locations the company operates from, including their time zones. | Full refresh | — | — |
legal_entities | Legal entities (companies) configured in the account. | Full refresh | — | — |
contract_versions | Versions of an employee's contract; the latest holds the current job title, salary, and working hours. | Full refresh | — | — |
leaves | Individual time-off / absence records for employees. | Full refresh | — | — |
leave_types | Types of time off / absence configured for the company (e.g. holiday, sick leave). | Full refresh | — | — |
allowances | Time-off allowance counters (the buckets of days/hours employees can take). | Full refresh | — | — |
attendance_shifts | Attendance shifts: clock-in/clock-out records for employees. | Full refresh | — | — |
expenses | Employee expenses submitted for reimbursement. | Full refresh | — | — |
payroll_supplements | Payroll supplements (one-off additions or deductions applied to payroll). | Full refresh | — | — |
flexible_time_records | Flexible time records logged against projects (project time tracking). | Full refresh | — | — |
projects | Projects used for time tracking. | Full refresh | — | — |
candidates | Candidates in the applicant tracking system (ATS). | Full refresh | — | — |
job_postings | Job postings published in the applicant tracking system (ATS). | Full refresh |