Pinya HR Integration¶
WFM can import employee absence records from Pinya HR. Import runs automatically every hour via a cron job. The data is used for vacation planning and shift collision detection.
What gets imported¶
Pinya HR provides absence records for employees. WFM imports:
| Field | Description |
|---|---|
| Employee ID | Matched to WFM employees by email |
| From/To dates | Absence start and end dates |
| Absence type | The Pinya absence type (Holiday, Sick day, HO, β¦), used for the type mapping below |
Note
All absence records are imported. Each carries its Pinya absence type, which you can map to a specific WFM request type β see Absence type mapping.
Configure Pinya integration¶
- Go to Settings > Integrations > Applications.
- In the Pinya section, fill in:
| Field | Description |
|---|---|
| Base Url | Pinya API base URL |
| Tenant | Pinya tenant identifier |
| Access Token | Authentication token |
| Exclude Working Time Absences | When enabled, absences marked as working time in Pinya are not imported |
| Offset Date From (months) | How many months into the past to import absences |
| Offset Date To (months) | How many months into the future to import absences |
- Save.
Absence type mapping¶
Each Pinya absence carries a type (Holiday, Sick day, HO, β¦). In the Absence type mapping section you can map each type to a WFM request type, so absences appear with the right label and colour in the schedule.
- Under Default request type, choose the request type used for any absence type you do not map.
- For each Pinya absence type you want to show specifically, add a row: pick the Absence type and the Request type it maps to.
- Click Save.
Only time-off request types are offered as mapping targets. An absence whose type is not mapped falls back to the default request type. The mapping is for display only β an unmapped absence is still imported and still blocks the schedule.
The list of Pinya absence types is filled from the data pulled during the hourly import, so a type appears in the dropdown once it has been imported at least once.
How import works¶
Import runs automatically via cron job every hour. The process:
- Connects to Pinya API using configured credentials.
- Downloads employee list and maps emails to WFM employee IDs.
- Downloads absence records for the configured date range.
- Creates or updates records in WFM database.
- Marks records with source "pinya" for tracking.
Manual import¶
There is no manual import button. Import runs automatically. If you need to trigger an import immediately, contact your administrator.
How imported data is used¶
Shift planning¶
When generating schedules, WFM checks for absence conflicts. If an employee has an imported absence during a scheduled shift:
- The shift is automatically adjusted or split.
- Administrators receive a notification about the conflict.
Vacation fund¶
Imported absences count toward the employee's vacation usage. The vacation fund tracks usage across all sources (Pinya, manual requests, other integrations).
Notifications¶
Workplace administrators receive notifications when an imported absence conflicts with a scheduled shift.
Data matching¶
Employees are matched between Pinya and WFM by email address. Make sure employee emails are consistent across both systems.
If an employee exists in Pinya but not in WFM (no matching email), the absence record is skipped.
Filtering options¶
Exclude Working Time Absences¶
By default (Exclude Working Time Absences disabled), all absence records are imported.
If enabled, records marked as "working time" in Pinya are skipped. Use this if Pinya tracks both absences and working time and you only want absences.
Notes¶
- Import does not create duplicate records - existing records are matched by external ID.
- Imported records are marked with source "pinya" in the database.
- The date range for import is calculated from the current date plus offsets.
- If Pinya credentials are invalid or the API is unavailable, the cron job logs an error and retries next hour.