Cancel bookings on absence automatically and create absences from bookings in Personio.
Personio is an all-in-one HR software for personnel management, recruiting, payroll, and absence management. With the integration, anny can detect absences from Personio and react to them.With Personio, you can in anny:
Automatically cancel bookings when employees are marked as absent in Personio
Create absences in Personio when employees book specific resources in anny (for example, home office)
Configure absence rules individually per absence type and resource
The integration is especially handy when your team manages hybrid workspaces through anny and absences are maintained centrally in Personio.
Bookings are cancelled automatically when a sick note exists in Personio. Employees don’t have to cancel bookings manually, and blocked resources are freed up.
Track home office days
Bookings of a specific resource automatically create an absence in Personio. This way, home office days are recorded in the HR system, without maintaining data twice.
Vacation with resource release
On approved vacation in Personio, all bookings within the vacation period are cancelled. Meeting rooms and desks become available for other employees.
Authentication runs via OAuth with a client ID and client secret that you generate in Personio. This authorizes anny to read employee data and absences and to create absences. If the credentials become invalid (for example, because they were deleted in Personio), synchronization pauses until you successfully verify the authentication in anny again.
Data
Direction
Frequency
Absences (cancellation rules)
Personio → anny
Hourly (automatic) or manual
Absences (creation rules)
anny → Personio
On booking (real time)
Synchronization only checks absences that start on the current day. Future absences (for example, a vacation next week) are only detected and processed on the relevant day, not in advance.
In the sidebar, open Account → Apps & Integrations, choose the Personio tile under All Apps and Integrations, and click Set up. You open an existing integration under Your apps.
2
Generate API credentials in Personio
Log in to Personio and navigate to Settings > Integrations > API credentials.
Define which absence types cancel bookings automatically.
1
Add a new rule
In the Cancellation of bookings through absences section, click Add.
2
Select the absence type
Choose one or more absence types from Personio (for example, sick leave, vacation).
3
Add a restriction (optional)
Without a restriction, the rule applies to all resources. Via Add restriction, you can limit the rule to a resource, group, or category. If you choose a resource with sub-resources, the rule applies to its sub-resources. For multiple restrictions, create multiple rules.
4
Confirm
Save the rule with Confirm. With Synchronize, you can trigger synchronization immediately, otherwise it runs automatically every hour.
Once a rule is active, anny cancels the affected person’s confirmed bookings automatically. The cancellation applies even after the cancellation deadline has passed, and the name of the absence type appears as the cancellation reason. For multi-day absences, all bookings across the entire absence period are cancelled immediately.
By default, even unapproved absence requests in Personio trigger a cancellation. With the Only cancel accepted absences switch, you limit cancellation to approved absences.
Define which resource booking automatically creates an absence in Personio.
1
Add a new rule
In the Creation of absences through bookings section, click Add.
2
Choose the trigger in anny
Choose the resource, group, or category whose booking should trigger an absence (for example, the “Home office” resource). For resources with sub-resources, choose the parent resource: bookings of the sub-resources count, a rule directly on a sub-resource does not apply.
3
Choose the absence type in Personio
Choose the absence type that should be created in Personio (for example, “Home office”).
4
Confirm
Save the rule with Confirm.
Once the rule is active, every confirmed booking of the chosen resource creates an absence in Personio. There, the absence goes through the normal approval process and carries the comment “automatically created by anny”. If you cancel the booking, anny deletes the created absence again; if you reschedule it, the absence is automatically recreated.The assignment to the half-day happens automatically:
Booking time
Created absence
End time before 3:00 PM
First half of the day
Start time from 12:00 PM
Second half of the day
Entirely between 12:00 PM and 3:00 PM
Second half of the day
Start before 12:00 PM and end from 3:00 PM
Full day
For multi-day bookings, the assignment applies to the first or last day of the absence.
If you deactivate the integration, no new synchronizations are performed. Existing rules stay saved but inactive. When you delete, all rules and the connection configuration are removed.
You can do both in the integration under Account → Apps & Integrations → Your apps: deactivate via the toggle in the page header, delete via the three dots → Delete.
Synchronization runs automatically once an hour. You can trigger it manually at any time via the Synchronize button.
Are future absences taken into account too?
No. The integration only checks absences that start on the current day. Future entries (for example, a vacation in two weeks) are only processed on their start day.
What happens if an absence in Personio is not yet approved?
By default, unapproved absence requests also lead to automatic cancellation of the affected bookings. With the Only cancel accepted absences switch, you can limit this to approved absences. Note: if a request is later declined, bookings that were already cancelled stay cancelled.
Which Personio scopes do I need exactly?
You need four scopes: Read employees, Read/edit absences, Read/edit attendances, and Read/edit webhooks. Without these permissions, anny cannot retrieve or create absences.
Can I limit cancellation to specific resources?
Yes. When creating a rule, you can set a resource, group, or category via Add restriction; for multiple restrictions, create multiple rules. Without a restriction, the rule applies to all resources.
Bookings are not cancelled even though an absence is entered in Personio
Check whether all four API scopes are set correctly (especially “Read employees” and “Read/edit absences”). Also make sure the employee is registered in Personio with the same email address as in anny. If the Only cancel accepted absences switch is active, check whether the absence in Personio has already been approved. Also note: only confirmed bookings are cancelled.
Synchronization only cancels on a manual click
Check whether the integration is active (toggle in the page header of the integration page). If it is active, the sync runs automatically every hour. Note that only absences starting on the current day are checked.
The absence in Personio is not created
Make sure the “Read/edit absences” scope is active and the rule is configured correctly. Important for sub-resources: the rule must point to the parent resource (or its group or category), not to the sub-resource itself. Also check whether the booking person exists in Personio with the same email address.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"anny","colors":{"primary":"#3c69ef","light":"#6789ef","dark":"#2055f3"},"logo":{"light":"https://mintcdn.com/anny-85c98540/ijC9sfplIYStpnep/images/anny-lockup-hell-inline.svg?fit=max\u0026auto=format\u0026n=ijC9sfplIYStpnep\u0026q=85\u0026s=7d8ad75aba0be5dcd6f5dacf0edc35b1","dark":"https://mintcdn.com/anny-85c98540/ijC9sfplIYStpnep/images/anny-lockup-dunkel-inline.svg?fit=max\u0026auto=format\u0026n=ijC9sfplIYStpnep\u0026q=85\u0026s=29c002d1a13f15f47ef5866bf557bb87","href":"https://anny.co"},"favicon":{"light":"https://mintcdn.com/anny-85c98540/ijC9sfplIYStpnep/images/anny-icon-flach.svg?fit=max\u0026auto=format\u0026n=ijC9sfplIYStpnep\u0026q=85\u0026s=989439e987cd6b526bb0bfe00fb24856","dark":"https://mintlify.s3.us-west-1.amazonaws.com/anny-85c98540/favicon.svg"},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/annyco","instagram":"https://www.instagram.com/anny.company?hl=de","youtube":"https://www.youtube.com/@anny.company"}},"icons":{"library":"fontawesome"},"integrations":{"gtm":{"tagId":"GTM-TTDNBZTD"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"languages":[{"language":"de","default":true,"href":"welcome"},{"language":"en","href":"en/welcome"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"anny-85c98540","hasAudioNarration":false,"actualSubdomain":"anny-85c98540","customDomains":["docs.anny.co"],"gitSource":{"type":"github","owner":"anny-co","repo":"knowledge-base","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"1f41460b-bdb9-4260-ad58-b369ce010cbf","liveDeploymentHistoryId":"6ae35cd20184476a8fdbceef","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae35cd20184476a8fdbceef"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae35cd20184476a8fdbceef","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"de","tag":"Developers","count":617},{"language":"de","tag":"Admin API","count":348},{"language":"de","tag":"Admin","count":167},{"language":"en","tag":"Admin","count":163},{"language":"de","tag":"Customer API","count":122},{"language":"de","tag":"Data models","count":121},{"language":"de","tag":"Scalar reference catalog","count":99},{"language":"en","tag":"Integrations","count":44},{"language":"de","tag":"Integrationen","count":43},{"language":"de","tag":"Orders \u0026 Billing","count":43},{"language":"de","tag":"Service Configuration","count":41},{"language":"de","tag":"Booking Management","count":37},{"language":"en","tag":"Your Organization","count":26},{"language":"en","tag":"Getting Started","count":22},{"language":"en","tag":"Booking Options \u0026 Services","count":17},{"language":"en","tag":"Access \u0026 Smart Locks","count":15},{"language":"en","tag":"Use Cases","count":15},{"language":"en","tag":"anny AI","count":11},{"language":"en","tag":"Security \u0026 Login","count":11},{"language":"en","tag":"End Users","count":10},{"language":"default","tag":"Changelog","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"en/personio","slug":"/en/personio","pageMetadata":{"title":"Connect Personio with anny","sidebarTitle":"Personio","description":"Cancel bookings on absence automatically and create absences from bookings in Personio.","public":true,"href":"/en/personio"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Cancel bookings on absence automatically and create absences from bookings in Personio.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Heading,Step,Steps,Table,Tip,Visibility,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Visibility)_missingMdxReference(`Visibility`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://www.personio.de/`,children:`Personio`}),` is an all-in-one HR software for personnel management, recruiting, payroll, and absence management. With the integration, anny can detect absences from Personio and react to them.`]}),`\n`,_jsx(_components.p,{children:`With Personio, you can in anny:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Automatically cancel bookings when employees are marked as absent in Personio`}),`\n`,_jsx(_components.li,{children:`Create absences in Personio when employees book specific resources in anny (for example, home office)`}),`\n`,_jsx(_components.li,{children:`Configure absence rules individually per absence type and resource`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The integration is especially handy when your team manages hybrid workspaces through anny and absences are maintained centrally in Personio.`}),`\n`,_jsx(Heading,{level:`2`,id:`typical-use-cases`,children:`Typical use cases`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Use case`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Automatic cancellation on sick leave`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.strong,{children:`Bookings are cancelled automatically when a sick note exists in Personio.`}),` Employees don’t have to cancel bookings manually, and blocked resources are freed up.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Track home office days`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.strong,{children:`Bookings of a specific resource automatically create an absence in Personio.`}),` This way, home office days are recorded in the HR system, without maintaining data twice.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Vacation with resource release`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.strong,{children:`On approved vacation in Personio, all bookings within the vacation period are cancelled.`}),` Meeting rooms and desks become available for other employees.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`how-the-personio-connection-works`,children:`How the Personio connection works`}),`\n`,_jsx(_components.p,{children:`Authentication runs via OAuth with a client ID and client secret that you generate in Personio. This authorizes anny to read employee data and absences and to create absences. If the credentials become invalid (for example, because they were deleted in Personio), synchronization pauses until you successfully verify the authentication in anny again.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Data`}),_jsx(_components.th,{children:`Direction`}),_jsx(_components.th,{children:`Frequency`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Absences (cancellation rules)`}),_jsx(_components.td,{children:`Personio → anny`}),_jsx(_components.td,{children:`Hourly (automatic) or manual`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Absences (creation rules)`}),_jsx(_components.td,{children:`anny → Personio`}),_jsx(_components.td,{children:`On booking (real time)`})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Synchronization only checks absences that start on the current day. Future absences (for example, a vacation next week) are only detected and processed on the relevant day, not in advance.`})}),`\n`,_jsx(Heading,{level:`2`,id:`connect-personio`,children:`Connect Personio`}),`\n`,_jsx(Heading,{level:`3`,id:`requirements`,children:`Requirements`}),`\n`,_jsx(_components.p,{children:`Before you connect Personio, make sure you have the following:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In Personio: admin access with permission to create API credentials under `,_jsx(_components.strong,{children:`Settings > Integrations > API credentials`})]}),`\n`,_jsxs(_components.li,{children:[`In Personio: the following API scopes must be enabled:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Read employees`}),`\n`,_jsx(_components.li,{children:`Read/edit absences`}),`\n`,_jsx(_components.li,{children:`Read/edit attendances`}),`\n`,_jsx(_components.li,{children:`Read/edit webhooks`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`In anny: admin role in the organization`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`set-up-the-connection`,children:`Set up the connection`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the integration`,children:_jsxs(_components.p,{children:[`In the sidebar, open `,_jsx(_components.strong,{children:`Account`}),` → `,_jsx(_components.strong,{children:`Apps \u0026 Integrations`}),`, choose the `,_jsx(_components.strong,{children:`Personio`}),` tile under `,_jsx(_components.strong,{children:`All Apps and Integrations`}),`, and click `,_jsx(_components.strong,{children:`Set up`}),`. You open an existing integration under `,_jsx(_components.strong,{children:`Your apps`}),`.`]})}),_jsxs(Step,{title:`Generate API credentials in Personio`,children:[_jsxs(_components.p,{children:[`Log in to Personio and navigate to `,_jsx(_components.strong,{children:`Settings > Integrations > API credentials`}),`.`]}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add new credentials`})]}),`\n`,_jsx(_components.li,{children:`Enter a name, for example “anny API key”`}),`\n`,_jsxs(_components.li,{children:[`Choose the integration `,_jsx(_components.strong,{children:`Other`})]}),`\n`,_jsx(_components.li,{children:`Enable the scopes: Read employees, Read/edit absences, Read/edit attendances, Read/edit webhooks`}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Generate new credentials`})]}),`\n`]})]}),_jsx(Step,{title:`Verify authentication in anny`,children:_jsxs(_components.p,{children:[`Enter the generated client ID and client secret into the `,_jsx(_components.strong,{children:`Client ID`}),` and `,_jsx(_components.strong,{children:`Client Secret`}),` fields in anny and click `,_jsx(_components.strong,{children:`Verify authentication`}),`.`]})}),_jsx(Step,{title:`Configure rules`,children:_jsx(_components.p,{children:`After successful authentication, set up the rules you want (see Settings \u0026 options).`})})]}),`\n`,_jsx(_components.p,{children:`Once the connection is active, you can configure cancellation rules and absence creation rules.`}),`\n`,_jsx(Heading,{level:`3`,id:`settings-\u0026-options`,children:`Settings \u0026 options`}),`\n`,_jsx(_components.p,{children:`The Personio integration offers two rule types that are configured independently of each other.`}),`\n`,_jsx(Heading,{level:`4`,id:`cancellation-of-bookings-through-absences`,children:`Cancellation of bookings through absences`}),`\n`,_jsx(_components.p,{children:`Define which absence types cancel bookings automatically.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Add a new rule`,children:_jsxs(_components.p,{children:[`In the `,_jsx(_components.strong,{children:`Cancellation of bookings through absences`}),` section, click `,_jsx(_components.strong,{children:`Add`}),`.`]})}),_jsx(Step,{title:`Select the absence type`,children:_jsx(_components.p,{children:`Choose one or more absence types from Personio (for example, sick leave, vacation).`})}),_jsx(Step,{title:`Add a restriction (optional)`,children:_jsxs(_components.p,{children:[`Without a restriction, the rule applies to all resources. Via `,_jsx(_components.strong,{children:`Add restriction`}),`, you can limit the rule to a resource, group, or category. If you choose a resource with sub-resources, the rule applies to its sub-resources. For multiple restrictions, create multiple rules.`]})}),_jsx(Step,{title:`Confirm`,children:_jsxs(_components.p,{children:[`Save the rule with `,_jsx(_components.strong,{children:`Confirm`}),`. With `,_jsx(_components.strong,{children:`Synchronize`}),`, you can trigger synchronization immediately, otherwise it runs automatically every hour.`]})})]}),`\n`,_jsx(_components.p,{children:`Once a rule is active, anny cancels the affected person’s confirmed bookings automatically. The cancellation applies even after the cancellation deadline has passed, and the name of the absence type appears as the cancellation reason. For multi-day absences, all bookings across the entire absence period are cancelled immediately.`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`By default, even unapproved absence requests in Personio trigger a cancellation. With the `,_jsx(_components.strong,{children:`Only cancel accepted absences`}),` switch, you limit cancellation to approved absences.`]})}),`\n`,_jsx(Heading,{level:`4`,id:`automatic-creation-of-absences`,children:`Automatic creation of absences`}),`\n`,_jsx(_components.p,{children:`Define which resource booking automatically creates an absence in Personio.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Add a new rule`,children:_jsxs(_components.p,{children:[`In the `,_jsx(_components.strong,{children:`Creation of absences through bookings`}),` section, click `,_jsx(_components.strong,{children:`Add`}),`.`]})}),_jsx(Step,{title:`Choose the trigger in anny`,children:_jsx(_components.p,{children:`Choose the resource, group, or category whose booking should trigger an absence (for example, the “Home office” resource). For resources with sub-resources, choose the parent resource: bookings of the sub-resources count, a rule directly on a sub-resource does not apply.`})}),_jsx(Step,{title:`Choose the absence type in Personio`,children:_jsx(_components.p,{children:`Choose the absence type that should be created in Personio (for example, “Home office”).`})}),_jsx(Step,{title:`Confirm`,children:_jsxs(_components.p,{children:[`Save the rule with `,_jsx(_components.strong,{children:`Confirm`}),`.`]})})]}),`\n`,_jsx(_components.p,{children:`Once the rule is active, every confirmed booking of the chosen resource creates an absence in Personio. There, the absence goes through the normal approval process and carries the comment “automatically created by anny”. If you cancel the booking, anny deletes the created absence again; if you reschedule it, the absence is automatically recreated.`}),`\n`,_jsx(_components.p,{children:`The assignment to the half-day happens automatically:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Booking time`}),_jsx(_components.th,{children:`Created absence`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`End time before 3:00 PM`}),_jsx(_components.td,{children:`First half of the day`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Start time from 12:00 PM`}),_jsx(_components.td,{children:`Second half of the day`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Entirely between 12:00 PM and 3:00 PM`}),_jsx(_components.td,{children:`Second half of the day`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Start before 12:00 PM and end from 3:00 PM`}),_jsx(_components.td,{children:`Full day`})]})]})]}),`\n`,_jsx(_components.p,{children:`For multi-day bookings, the assignment applies to the first or last day of the absence.`}),`\n`,_jsx(Heading,{level:`2`,id:`limitations`,children:`Limitations`}),`\n`,_jsx(_components.p,{children:`The Personio integration does not support:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Forward-looking checks: absences are only detected on the current day, not in advance (for example, no cancelling of vacations entered for next week)`}),`\n`,_jsx(_components.li,{children:`Real-time synchronization for cancellations: bookings are checked hourly, not in real time`}),`\n`,_jsx(_components.li,{children:`User provisioning or deprovisioning: employees are not created or removed in anny automatically`}),`\n`,_jsx(_components.li,{children:`Automatic restoration: cancelled bookings stay cancelled, even if the absence in Personio is later declined or deleted`}),`\n`,_jsx(_components.li,{children:`Error notifications: if creating an absence in Personio fails, anny does not retry and does not notify admins`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`disconnect`,children:`Disconnect`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`If you deactivate the integration, no new synchronizations are performed. Existing rules stay saved but inactive. When you delete, all rules and the connection configuration are removed.`})}),`\n`,_jsxs(_components.p,{children:[`You can do both in the integration under `,_jsx(_components.strong,{children:`Account`}),` → `,_jsx(_components.strong,{children:`Apps \u0026 Integrations`}),` → `,_jsx(_components.strong,{children:`Your apps`}),`: deactivate via the `,_jsx(_components.strong,{children:`toggle`}),` in the page header, delete via the `,_jsx(_components.strong,{children:`three dots`}),` → `,_jsx(_components.strong,{children:`Delete`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`How often does anny sync absences from Personio?`,id:`how-often-does-anny-sync-absences-from-personio`,children:_jsxs(_components.p,{children:[`Synchronization runs automatically once an hour. You can trigger it manually at any time via the `,_jsx(_components.strong,{children:`Synchronize`}),` button.`]})}),_jsx(Accordion,{title:`Are future absences taken into account too?`,id:`are-future-absences-taken-into-account-too`,children:_jsx(_components.p,{children:`No. The integration only checks absences that start on the current day. Future entries (for example, a vacation in two weeks) are only processed on their start day.`})}),_jsx(Accordion,{title:`What happens if an absence in Personio is not yet approved?`,id:`what-happens-if-an-absence-in-personio-is-not-yet-approved`,children:_jsxs(_components.p,{children:[`By default, unapproved absence requests also lead to automatic cancellation of the affected bookings. With the `,_jsx(_components.strong,{children:`Only cancel accepted absences`}),` switch, you can limit this to approved absences. Note: if a request is later declined, bookings that were already cancelled stay cancelled.`]})}),_jsx(Accordion,{title:`Which Personio scopes do I need exactly?`,id:`which-personio-scopes-do-i-need-exactly`,children:_jsx(_components.p,{children:`You need four scopes: Read employees, Read/edit absences, Read/edit attendances, and Read/edit webhooks. Without these permissions, anny cannot retrieve or create absences.`})}),_jsx(Accordion,{title:`Can I limit cancellation to specific resources?`,id:`can-i-limit-cancellation-to-specific-resources`,children:_jsxs(_components.p,{children:[`Yes. When creating a rule, you can set a resource, group, or category via `,_jsx(_components.strong,{children:`Add restriction`}),`; for multiple restrictions, create multiple rules. Without a restriction, the rule applies to all resources.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Bookings are not cancelled even though an absence is entered in Personio`,id:`bookings-are-not-cancelled-even-though-an-absence-is-entered-in-personio`,children:_jsxs(_components.p,{children:[`Check whether all four API scopes are set correctly (especially “Read employees” and “Read/edit absences”). Also make sure the employee is registered in Personio with the same email address as in anny. If the `,_jsx(_components.strong,{children:`Only cancel accepted absences`}),` switch is active, check whether the absence in Personio has already been approved. Also note: only confirmed bookings are cancelled.`]})}),_jsx(Accordion,{title:`Synchronization only cancels on a manual click`,id:`synchronization-only-cancels-on-a-manual-click`,children:_jsx(_components.p,{children:`Check whether the integration is active (toggle in the page header of the integration page). If it is active, the sync runs automatically every hour. Note that only absences starting on the current day are checked.`})}),_jsx(Accordion,{title:`The absence in Personio is not created`,id:`the-absence-in-personio-is-not-created`,children:_jsx(_components.p,{children:`Make sure the “Read/edit absences” scope is active and the rule is configured correctly. Important for sub-resources: the rule must point to the parent resource (or its group or category), not to the sub-resource itself. Also check whether the booking person exists in Personio with the same email address.`})})]}),`\n`,_jsx(Visibility,{for:`agents`,children:_jsxs(_components.blockquote,{children:[`\n`,_jsx(_components.p,{children:`Important information for agents:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Sync clarification: what counts as “today” is based on the organization’s time zone. Absences without an end date are treated as ending 5 years after the start.`}),`\n`,_jsx(_components.li,{children:`Cancellation clarification: only confirmed bookings are cancelled; cancellation conditions/deadlines are bypassed; the name of the Personio absence type is stored as the cancellation reason.`}),`\n`,_jsx(_components.li,{children:`“Only cancel accepted absences” switch: for Personio, OFF by default (open requests also cancel).`}),`\n`,_jsx(_components.li,{children:`Creation rules react to: a new booking as well as a change of status, period, or resource. Other changes (for example, participant count, forms) do not update the absence. On changes, the absence is deleted and recreated.`}),`\n`,_jsx(_components.li,{children:`User matching: email matching without case sensitivity; after the first hit, anny remembers the person’s Personio person ID.`}),`\n`,_jsx(_components.li,{children:`Credentials: after successful authentication, the Client ID/Client Secret fields are locked and cannot be changed directly.`}),`\n`,_jsx(_components.li,{children:`Distinction: no synchronization of attendances or working times, no calendar synchronization, no SSO. Personio is not a calendar integration.`}),`\n`,_jsx(_components.li,{children:`Relationships: the HRworks integration has identical rule logic and interface, but different authentication (API key instead of OAuth with client ID + client secret). No plan/feature gating for Personio.`}),`\n`,_jsxs(_components.li,{children:[`UI paths/labels: Sidebar > Account > Apps \u0026 Integrations (`,_jsx(_components.code,{children:`/apps`}),`) > new: All Apps and Integrations > Personio > Set up, existing: Your apps > Personio; toggle, action menu (three dots), and Save in the detail page header; sections “Cancellation of bookings through absences” and “Creation of absences through bookings” (the article heading “Automatic creation of absences” is historical); table columns “Absence type” and “Restriction” (without a restriction: “None”); modal “Create rule”/“Edit rule” with the selections “Personio absence types” and “Selection in anny:”; buttons “Add”, “Confirm”, “Add restriction”, “Synchronize” (shows “Synchronized” afterwards).`]}),`\n`]}),`\n`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Connect Personio with anny","sidebarTitle":"Personio","description":"Cancel bookings on absence automatically and create absences from bookings in Personio.","public":true,"href":"/en/personio"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Typical use cases","slug":"typical-use-cases","depth":2,"children":[]},{"title":"How the Personio connection works","slug":"how-the-personio-connection-works","depth":2,"children":[]},{"title":"Connect Personio","slug":"connect-personio","depth":2,"children":[{"title":"Requirements","slug":"requirements","depth":3,"children":[]},{"title":"Set up the connection","slug":"set-up-the-connection","depth":3,"children":[]},{"title":"Settings \u0026 options","slug":"settings-\u0026-options","depth":3,"children":[]},{"title":"Cancellation of bookings through absences","slug":"cancellation-of-bookings-through-absences","depth":4,"children":[]},{"title":"Automatic creation of absences","slug":"automatic-creation-of-absences","depth":4,"children":[]}]},{"title":"Limitations","slug":"limitations","depth":2,"children":[]},{"title":"Disconnect","slug":"disconnect","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"anny-85c98540","siteName":"anny","title":"Connect Personio with anny - anny","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"de":{"href":"/personio","matchLevel":1},"en":{"href":"/en/personio","matchLevel":0}}},"lastModified":"2026-10-15T15:30:32.864Z","originalFileLocation":"en/personio.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Cancel bookings on absence automatically and create absences from bookings in Personio.\">\u003cmeta data-mint-head name=\"application-name\" content=\"anny\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Connect Personio with anny - anny\">\u003cmeta data-mint-head property=\"og:description\" content=\"Cancel bookings on absence automatically and create absences from bookings in Personio.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"anny\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.anny.co/en/personio\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://anny-85c98540.mintlify.app/_mintlify/api/og/v2?division=HR\u0026amp;title=Connect+Personio+with+anny\u0026amp;description=Cancel+bookings+on+absence+automatically+and+create+absences+from+bookings+in+Personio.\u0026amp;theme=624ef238bb99e61a4a526947\u0026amp;signature=80a39756962caa7609cd54df5ff0e05dc49afdd6a16f890bdb3f98dd23518579\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Connect Personio with anny - anny\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Cancel bookings on absence automatically and create absences from bookings in Personio.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://anny-85c98540.mintlify.app/_mintlify/api/og/v2?division=HR\u0026amp;title=Connect+Personio+with+anny\u0026amp;description=Cancel+bookings+on+absence+automatically+and+create+absences+from+bookings+in+Personio.\u0026amp;theme=624ef238bb99e61a4a526947\u0026amp;signature=80a39756962caa7609cd54df5ff0e05dc49afdd6a16f890bdb3f98dd23518579\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/anny-85c98540/iaQtrTBWt00eE3Px/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"anny\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3c69ef\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.anny.co/en/personio\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/personio.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.anny.co/en/personio\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://docs.anny.co/personio\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.anny.co/personio\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.anny.co/#organization\",\"name\":\"anny\",\"url\":\"https://docs.anny.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/anny-85c98540/ijC9sfplIYStpnep/images/anny-lockup-hell-inline.svg?fit=max\u0026auto=format\u0026n=ijC9sfplIYStpnep\u0026q=85\u0026s=7d8ad75aba0be5dcd6f5dacf0edc35b1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.anny.co#website\",\"name\":\"anny\",\"url\":\"https://docs.anny.co\",\"publisher\":{\"@id\":\"https://docs.anny.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.anny.co/en/personio#webpage\",\"url\":\"https://docs.anny.co/en/personio\",\"name\":\"Connect Personio with anny\",\"description\":\"Cancel bookings on absence automatically and create absences from bookings in Personio.\",\"dateModified\":\"2026-10-15T15:30:32.864Z\",\"isPartOf\":{\"@id\":\"https://docs.anny.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.anny.co/en/personio#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.anny.co/en/personio#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Integrations\",\"item\":\"https://docs.anny.co/en/calendar-integrations\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Connect Personio with anny\",\"item\":\"https://docs.anny.co/en/personio\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.anny.co/en/personio#article\",\"headline\":\"Connect Personio with anny\",\"name\":\"Connect Personio with anny\",\"description\":\"Cancel bookings on absence automatically and create absences from bookings in Personio.\",\"url\":\"https://docs.anny.co/en/personio\",\"mainEntityOfPage\":{\"@id\":\"https://docs.anny.co/en/personio#webpage\"},\"dateModified\":\"2026-10-15T15:30:32.864Z\",\"publisher\":{\"@id\":\"https://docs.anny.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.anny.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"anny\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"anny","nav":{"global":null,"languages":[{"language":"de","default":true,"pages":[{"title":"de","href":"/personio"}]},{"language":"en","tabs":[{"tab":"Admin","groups":[{"group":"Getting Started","public":true,"pages":[{"title":"Welcome to anny","sidebarTitle":"Welcome","href":"/en/welcome"},{"title":"Getting Started with anny","sidebarTitle":"Getting Started","href":"/en/getting-started"},{"group":"Use Cases","public":true,"pages":[{"title":"Getting Started – Desk Sharing","sidebarTitle":"Desk Sharing","href":"/en/getting-started-desk-sharing"},{"title":"Getting Started – Universities","sidebarTitle":"Universities","href":"/en/getting-started-universities"},{"title":"Getting Started – Coworking","sidebarTitle":"Coworking","href":"/en/getting-started-coworking"},{"title":"Getting Started – Room Booking","sidebarTitle":"Room Booking","href":"/en/getting-started-room-booking"},{"title":"Getting Started – Courses","sidebarTitle":"Courses","href":"/en/getting-started-courses"},{"title":"Getting Started – Events","sidebarTitle":"Events","href":"/en/getting-started-events"},{"title":"Getting Started – Appointment Scheduling","sidebarTitle":"Appointment Scheduling","href":"/en/getting-started-appointments"},{"title":"Getting Started – Dive Schools","sidebarTitle":"Dive Schools","href":"/en/getting-started-dive-schools"},{"title":"Getting Started – Sailing Schools","sidebarTitle":"Sailing Schools","href":"/en/getting-started-sailing-schools"},{"title":"Getting Started - Visitor Registration","sidebarTitle":"Visitor Registration","href":"/en/visitor-management"},{"title":"Getting Started - Parking Booking","sidebarTitle":"Parking Booking","href":"/en/getting-started-parking"},{"title":"Getting Started - Fleet Management","sidebarTitle":"Fleet Management","href":"/en/getting-started-fleet"},{"title":"Getting Started - Equipment Rental","sidebarTitle":"Equipment Rental","href":"/en/getting-started-equipment-rental"},{"title":"Getting Started - Waiting Area","sidebarTitle":"Waiting Area","href":"/en/getting-started-waiting-area"},{"title":"Getting Started - Memberships","sidebarTitle":"Memberships","href":"/en/getting-started-memberships"}]}]},{"group":"Your Organization","public":true,"pages":[{"group":"Account Settings","public":true,"pages":[{"title":"Account Settings","sidebarTitle":"Account settings","href":"/en/account-settings"},{"title":"Introduction to the Admin Area","sidebarTitle":"Admin Area Introduction","href":"/en/admin-area-intro"},{"title":"Data Privacy \u0026 Deletion Periods","sidebarTitle":"Data Privacy \u0026 Deletion Periods","href":"/en/data-privacy"},{"title":"Master organizations","sidebarTitle":"Master organizations","href":"/en/master-organizations"}]},{"group":"Your anny Contract","public":true,"pages":[{"title":"Manage your anny plan","sidebarTitle":"Manage anny plan","href":"/en/anny-plan"}]},{"group":"Team \u0026 Permissions","public":true,"pages":[{"title":"Manage Admin Users and Roles","sidebarTitle":"Roles \u0026 Permissions","href":"/en/roles-and-permissions"},{"title":"Set admin notifications","sidebarTitle":"Admin notifications","href":"/en/admin-notifications"}]},{"group":"Security \u0026 Login","public":true,"pages":[{"title":"Single Sign-On (SSO) Overview","sidebarTitle":"SSO Overview","href":"/en/sso-overview"},{"title":"Microsoft SAML SSO","sidebarTitle":"Microsoft SAML SSO","href":"/en/microsoft-saml-sso"},{"title":"Google Workspace SSO","sidebarTitle":"Google Workspace SSO","href":"/en/google-workspace-sso"},{"title":"Generic SAML 2.0 SSO","sidebarTitle":"Generic SAML 2.0","href":"/en/generic-saml-sso"},{"title":"OAuth2 SSO","sidebarTitle":"OAuth2 SSO","href":"/en/oauth2-sso"},{"title":"OpenID Connect (OIDC) SSO","sidebarTitle":"OpenID Connect SSO","href":"/en/openid-connect-sso"},{"title":"SCIM (User Provisioning)","sidebarTitle":"SCIM (User Provisioning)","href":"/en/scim-user-provisioning"},{"title":"Federated SAML","sidebarTitle":"Federated SAML","href":"/en/federated-saml"},{"title":"Attribute Mapping","sidebarTitle":"Attribute Mapping","href":"/en/attribute-mapping"},{"title":"Two-Factor Authentication","sidebarTitle":"Two-Factor Authentication","href":"/en/two-factor-authentication"},{"title":"SSO Key Rollover","sidebarTitle":"SSO Key Rollover","href":"/en/sso-key-rollover"}]},{"group":"Booking Page \u0026 Embedding","public":true,"pages":[{"title":"Set Up Your Booking Page Layout","sidebarTitle":"Booking Page Layout","href":"/en/booking-page-layout"},{"title":"Embed the anny Booking Page as a Widget on Your Website","sidebarTitle":"Widget embed","href":"/en/embed-booking-page"},{"title":"Widget Embedding - Advanced","sidebarTitle":"Advanced embedding","href":"/en/widget-embed-advanced"},{"title":"Widget Agent Skill","sidebarTitle":"Widget Agent Skill","href":"/en/widget-agent-skill"},{"title":"Track Bookings with UTM Links","sidebarTitle":"UTM Tracking","href":"/en/utm-tracking"},{"title":"Embed the anny Booking Page in Wix","sidebarTitle":"Wix","href":"/en/embed-wix"},{"title":"Embed the anny Booking Page in Google Sites","sidebarTitle":"Google Sites","href":"/en/embed-google-sites"},{"title":"Embed the anny booking page in WordPress","sidebarTitle":"WordPress","href":"/en/embed-wordpress"}]}]},{"group":"Resources \u0026 Availability","public":true,"pages":[{"group":"General Information","public":true,"pages":[{"title":"Configure a Resource","sidebarTitle":"Configure resources","href":"/en/configure-resources"},{"title":"Groups","sidebarTitle":"Groups","href":"/en/groups-and-categories"},{"title":"Resource status","sidebarTitle":"Resource status","href":"/en/resource-status"}]},{"group":"Schedules","public":true,"pages":[{"title":"Schedules","sidebarTitle":"Schedules","href":"/en/schedules"},{"title":"Available Slots","sidebarTitle":"Available Slots","href":"/en/available-slots"}]},{"group":"Availability Logic","public":true,"pages":[{"title":"Waitlist","sidebarTitle":"Waitlist","href":"/en/waitlist"},{"title":"Exclusive Time Slots","sidebarTitle":"Exclusive Time Slots","href":"/en/exclusive-time-slots"},{"title":"Create and Manage Global Blockers","sidebarTitle":"Global Blockers","href":"/en/global-blockers"},{"title":"Dynamic Capacity Planning with On-Demand Resources","sidebarTitle":"Dynamic Capacity Planning","href":"/en/dynamic-capacity-planning"}]},{"title":"Create Interactive 3D Floor Plans in anny","sidebarTitle":"Maps \u0026 Interactive Floor Plans","href":"/en/maps-and-floor-plans"}]},{"group":"Booking Options \u0026 Services","public":true,"pages":[{"group":"Options \u0026 Services","public":true,"pages":[{"title":"Booking Option","sidebarTitle":"Booking Option","href":"/en/configure-booking-option"},{"title":"Service-First Flow","sidebarTitle":"Service-First Flow","href":"/en/service-first-flow"},{"title":"Combine multiple services","sidebarTitle":"Booking sequences","href":"/en/booking-sequences"},{"title":"Dynamic Pricing","sidebarTitle":"Dynamic Pricing","href":"/en/dynamic-pricing"}]},{"group":"Booking Types","public":true,"pages":[{"title":"About Recurring Bookings","sidebarTitle":"Recurring Bookings","href":"/en/recurring-bookings"},{"title":"Booking Series","sidebarTitle":"Booking Series","href":"/en/booking-series"}]},{"group":"Extensions","public":true,"pages":[{"title":"Smart Availability","sidebarTitle":"Smart Availability","href":"/en/smart-availability"},{"title":"Products \u0026 additional options","sidebarTitle":"Products \u0026 additional options","href":"/en/add-ons"},{"title":"Custom Forms","sidebarTitle":"Custom Forms","href":"/en/custom-forms"},{"title":"Legal Documents","sidebarTitle":"Legal Documents","href":"/en/legal-documents"},{"title":"Participant Management","sidebarTitle":"Participant Management","href":"/en/participant-management"},{"title":"Personalization","sidebarTitle":"Personalization","href":"/en/personalization"},{"title":"Certificates","sidebarTitle":"Certificates","href":"/en/certificates"},{"title":"Minimum and Maximum Selection","sidebarTitle":"Min \u0026 Max Selection","href":"/en/min-max-selection"},{"title":"Service Schedules","sidebarTitle":"Service Schedules","href":"/en/service-schedules"}]},{"group":"Changes \u0026 Cancellation","public":true,"pages":[{"title":"Modify Bookings","sidebarTitle":"Modify Bookings","href":"/en/modify-bookings"},{"title":"Cancellation Policy","sidebarTitle":"Cancellation Policy","href":"/en/cancellation-policy"}]}]},{"group":"Booking Management","public":true,"pages":[{"title":"Plan and manage bookings in the calendar","sidebarTitle":"Calendar","href":"/en/calendar"},{"title":"Booking Rules","sidebarTitle":"Booking Rules","href":"/en/booking-rules"},{"title":"Tags","sidebarTitle":"Tags","href":"/en/tags"},{"title":"Inquiries \u0026 inquiry forms","sidebarTitle":"Inquiries","href":"/en/inquiries"},{"group":"Communication","public":true,"pages":[{"title":"Activity Log","sidebarTitle":"Activity Log","href":"/en/activity-log"},{"title":"Notifications and appointment reminders","sidebarTitle":"Notifications","href":"/en/configure-notifications"},{"title":"Mobile notifications","sidebarTitle":"Mobile notifications","href":"/en/mobile-notifications"},{"title":"Broadcasting","sidebarTitle":"Broadcasting","href":"/en/broadcasting"}]}]},{"group":"CRM","public":true,"pages":[{"title":"Manage Customers","sidebarTitle":"Customers","href":"/en/manage-customers"},{"title":"Manage Companies","sidebarTitle":"Companies","href":"/en/manage-companies"},{"title":"Member Management (Communities)","sidebarTitle":"Member Management (Communities)","href":"/en/communities"}]},{"group":"Payment Processing","public":true,"pages":[{"group":"Online Payment","public":true,"pages":[{"title":"Set Up Stripe Connect","sidebarTitle":"Stripe Connect","href":"/en/stripe-connect-setup"},{"title":"Online Payments \u0026 Fees","sidebarTitle":"Online Payments \u0026 Fees","href":"/en/online-payments"},{"title":"SEPA direct debit for subscriptions","sidebarTitle":"SEPA direct debit","href":"/en/sepa-direct-debit"},{"title":"Manage Your Stripe Connect Profile","sidebarTitle":"Stripe Support","href":"/en/stripe-support"}]},{"group":"POS","public":true,"pages":[{"title":"Set Up Card Readers \u0026 Tap to Pay in the POS App","sidebarTitle":"POS App Setup","href":"/en/pos-app-setup"},{"title":"Manage Bookings and Payments in the POS App","sidebarTitle":"POS App Bookings \u0026 Payments","href":"/en/pos-app-bookings-and-payments"}]}]},{"group":"Invoicing","public":true,"pages":[{"group":"Invoices","public":true,"pages":[{"title":"Invoicing","sidebarTitle":"Invoicing","href":"/en/invoicing"},{"title":"Pay by Invoice (Pay-Later)","sidebarTitle":"Pay by Invoice","href":"/en/pay-later"},{"title":"Edit and Finalize Invoice Drafts","sidebarTitle":"Invoice draft","href":"/en/invoice-drafts"},{"title":"Correct or Cancel an Invoice","sidebarTitle":"Correct invoice","href":"/en/invoice-corrections"},{"title":"Customer Balances \u0026 Collective Invoices","sidebarTitle":"Customer balances","href":"/en/customer-balances-and-collective-invoices"}]},{"group":"Accounting","public":true,"pages":[{"title":"Accounting with anny","sidebarTitle":"Accounting","href":"/en/accounting"},{"title":"Forward invoices to DATEV","sidebarTitle":"Invoice forwarding","href":"/en/datev-import"}]}]},{"group":"Subscriptions, Packages \u0026 Vouchers","public":true,"pages":[{"title":"Booking Quotas","sidebarTitle":"Booking Quotas","href":"/en/booking-quotas"},{"title":"Subscriptions \u0026 Memberships","sidebarTitle":"Subscriptions \u0026 Memberships","href":"/en/subscriptions-and-memberships"},{"group":"Booking Packages","public":true,"pages":[{"title":"Booking Packages \u0026 Codes","sidebarTitle":"Booking Packages","href":"/en/booking-codes"},{"title":"Value Vouchers","sidebarTitle":"Value Vouchers","href":"/en/value-vouchers"},{"title":"Vouchers \u0026 VAT","sidebarTitle":"Vouchers \u0026 VAT","href":"/en/voucher-taxation"}]},{"title":"Discount Codes","sidebarTitle":"Discount Codes","href":"/en/discount-codes"}]},{"group":"Check-In","public":true,"pages":[{"title":"Check-In \u0026 Check-Out","sidebarTitle":"General Information","href":"/en/check-in-overview"},{"title":"Presence in booking details","sidebarTitle":"Booking details","href":"/en/check-in-booking-details"},{"group":"Check-In Terminal","public":true,"pages":[{"title":"Set Up a Check-In Terminal","sidebarTitle":"Setup","href":"/en/check-in-setup"},{"title":"Getting Started – University Library (Check-In)","sidebarTitle":"University Library","href":"/en/check-in-university"},{"title":"Getting Started – Ticketing \u0026 Events (Check-In)","sidebarTitle":"Ticketing \u0026 Events","href":"/en/check-in-ticketing-events"}]},{"group":"Customer display","public":true,"hidden":true,"pages":[{"title":"Customer display","sidebarTitle":"Customer display","href":"/en/customer-display"}]},{"group":"Quick Access","public":true,"pages":[{"title":"Queuing System","sidebarTitle":"Queues","href":"/en/queuing-system"}]}]},{"group":"Analytics \u0026 Data","public":true,"pages":[{"title":"Dashboards","sidebarTitle":"Dashboards","href":"/en/dashboards"},{"title":"(Automatic) Exports","sidebarTitle":"Exports","href":"/en/automatic-exports"}]},{"group":"Displays \u0026 Terminals","public":true,"pages":[{"group":"Display App","public":true,"pages":[{"title":"anny Display App","sidebarTitle":"Display App","href":"/en/display-app"},{"title":"Connect tapirx with anny","sidebarTitle":"tapirx","href":"/en/tapirx-setup"},{"title":"Connect Joan with anny","sidebarTitle":"Joan","href":"/en/joan-setup"},{"title":"Install the anny Display App on the Philips 10BDL4551T","sidebarTitle":"Philips","href":"/en/philips-setup"}]},{"title":"URL Display Boards","sidebarTitle":"URL Display Boards","href":"/en/url-display-boards"}]},{"group":"Integrations","public":true,"pages":[{"group":"Calendar Sync","public":true,"pages":[{"title":"Calendar integrations","sidebarTitle":"Calendar integrations","href":"/en/calendar-integrations"},{"group":"Personal Calendars","public":true,"pages":[{"title":"Connect Outlook Calendar with anny","sidebarTitle":"Outlook","href":"/en/outlook"},{"title":"Connect Google Calendar with anny","sidebarTitle":"Google","href":"/en/google"},{"title":"Connect ICS Calendar with anny","sidebarTitle":"ICS Calendar","href":"/en/ics-calendar"}]},{"group":"Workspace","public":true,"pages":[{"title":"Connect Microsoft 365 with anny","sidebarTitle":"Microsoft 365","href":"/en/m365-workspace"},{"title":"Connect Google Workspace with anny","sidebarTitle":"Google Workspace","href":"/en/google-workspace"}]}]},{"group":"Microsoft Apps","public":true,"pages":[{"title":"Connect the Outlook Add-In with anny","sidebarTitle":"Outlook Add-In","href":"/en/outlook-add-in"},{"title":"anny MS Teams App","sidebarTitle":"MS Teams App","href":"/en/ms-teams-app"}]},{"group":"Video Meetings","public":true,"pages":[{"title":"anny Video Calls","sidebarTitle":"anny Video Calls","href":"/en/anny-video-calls"},{"title":"Connect Zoom with anny","sidebarTitle":"Zoom","href":"/en/zoom"},{"title":"Connect Microsoft Teams with anny","sidebarTitle":"Microsoft Teams","href":"/en/ms-teams"},{"title":"Connect Purpleview with anny","sidebarTitle":"Purpleview","description":"Connect Purpleview with anny and automatically send video consultation links with every confirmed booking.","href":"/en/purpleview"}]},{"group":"HR","public":true,"pages":[{"title":"Connect Personio with anny","sidebarTitle":"Personio","href":"/en/personio"},{"title":"Connect HRworks with anny","sidebarTitle":"HRworks","description":"Cancel bookings on absence automatically and create absences from bookings in HRworks.","href":"/en/hrworks"}]},{"group":"CRM","public":true,"pages":[{"title":"Connect HubSpot with anny","sidebarTitle":"HubSpot","href":"/en/hubspot"}]},{"group":"Marketing \u0026 Tracking","public":true,"pages":[{"title":"Connect Google Analytics \u0026 Google Ads with anny","sidebarTitle":"Google Analytics \u0026 Google Ads","href":"/en/google-analytics"},{"title":"Connect LinkedIn Ads with anny","sidebarTitle":"LinkedIn Ads","href":"/en/linkedin-ads-tracking"},{"title":"Connect TikTok Ads with anny","sidebarTitle":"TikTok Ads","href":"/en/tiktok-ads-tracking"},{"title":"Connect Meta Ads with anny","sidebarTitle":"Meta Ads","href":"/en/meta-ads-tracking"}]},{"group":"Access \u0026 Smart Locks","public":true,"pages":[{"title":"Smart Lock Integrations","sidebarTitle":"Smart Locks Overview","href":"/en/smart-locks-overview"},{"title":"Connect KleverKey with anny","sidebarTitle":"KleverKey","href":"/en/klever-key"},{"title":"Connect SALTO KS with anny","sidebarTitle":"SALTO KS","href":"/en/salto-ks"},{"title":"Connect Nuki with anny","sidebarTitle":"Nuki","href":"/en/nuki"},{"group":"Dormakaba","public":true,"pages":[{"title":"Connect dormakaba Exos 9300 with anny","sidebarTitle":"dormakaba Exos 9300","href":"/en/dormakaba-exos-9300"},{"title":"Connect dormakaba resivo with anny","sidebarTitle":"Resivo","href":"/en/dormakaba-resivo"},{"title":"Connect dormakaba exivo with anny","sidebarTitle":"dormakaba exivo","href":"/en/dormakaba-exivo"}]},{"title":"Connect UniFi with anny","sidebarTitle":"UniFi","href":"/en/unifi"},{"title":"Connect Keycafe with anny","sidebarTitle":"Keycafe","href":"/en/keycafe"},{"title":"Connect EVVA AirKey with anny","sidebarTitle":"EVVA AirKey","href":"/en/evva-airkey"},{"title":"Connect Tapkey with anny","sidebarTitle":"Tapkey","href":"/en/tapkey"},{"title":"Connect Glutz eAccess with anny","sidebarTitle":"Glutz eAccess","href":"/en/glutz-eaccess"},{"title":"Connect Custom Remote Open with anny","sidebarTitle":"Custom Remote Open","href":"/en/custom-remote-open"},{"title":"Connect Comydo with anny","sidebarTitle":"Comydo","href":"/en/comydo"},{"title":"Connect Arivo with anny","sidebarTitle":"Arivo","href":"/en/arivo"}]},{"group":"Partner \u0026 Booking Channels","public":true,"pages":[{"title":"Connect Urban Sports Club with anny","sidebarTitle":"Urban Sports Club","href":"/en/urban-sports-club"},{"title":"Connect Treatwell with anny","sidebarTitle":"Treatwell","href":"/en/treatwell"},{"title":"Connect ClassPass with anny","sidebarTitle":"ClassPass","href":"/en/class-pass"}]},{"group":"Identity \u0026 Compliance","public":true,"pages":[{"title":"Set Up Microsoft Enterprise SSO on iOS","sidebarTitle":"Enterprise SSO (iOS)","icon":"shield-check","href":"/en/enterprise-sso-ios"},{"title":"Connect Regpit with anny","sidebarTitle":"Regpit","href":"/en/regpit-integration"}]},{"group":"Automation","public":true,"pages":[{"title":"Connect Make.com with anny","sidebarTitle":"make.com","href":"/en/make-com"},{"title":"Connect n8n with anny","sidebarTitle":"n8n","href":"/en/n8n"}]},{"group":"IoT","public":true,"pages":[{"title":"Connect Shelly with anny","sidebarTitle":"Shelly","href":"/en/shelly"}]},{"group":"Accounting","public":true,"pages":[{"title":"Connect DATEV with anny","sidebarTitle":"DATEV","href":"/en/datev-integration"},{"title":"DATEV accounts and preparation with your tax advisor","sidebarTitle":"Accounts \u0026 tax advisor","icon":"calculator","href":"/en/datev-accounts-and-tax-advisor"}]}]},{"group":"Reference","public":true,"pages":[{"title":"FAQ","sidebarTitle":"FAQ","href":"/en/faq"},{"title":"anny Glossary","sidebarTitle":"Glossary","href":"/en/anny-glossary"},{"title":"Support Policy","sidebarTitle":"Support Policy","href":"/en/support-policy"},{"title":"Accessibility at anny","sidebarTitle":"Accessibility","href":"/en/accessibility"},{"title":"GoBD at anny","sidebarTitle":"GoBD","icon":{"style":"regular","name":"scale-balanced","library":"fontawesome"},"href":"/en/gobd"},{"title":"Privacy Policy","sidebarTitle":"Privacy Policy","href":"/en/privacy-policy"}]},{"group":"Testzentren","public":true,"icon":"vial","hidden":true,"pages":[{"title":"Evaluating booking data from anny","sidebarTitle":"Booking data","href":"/en/test-center-booking-data"}]},{"group":"Announcements","public":true,"icon":"bullhorn","hidden":true,"pages":[{"title":"Admin 3.0: What changes","sidebarTitle":"Admin 3.0","href":"/en/admin-3-0"},{"title":"New email design from 8 September 2026","sidebarTitle":"New email design","href":"/en/email-design-september-2026"}]},{"group":"Technical notes","public":true,"icon":"wrench","hidden":true,"pages":[{"title":"Limit Microsoft 365 calendar access to specific mailboxes","sidebarTitle":"Limit M365 calendar access","href":"/en/m365-resource-calendar-scope"}]}]},{"tab":"End Users","pages":[{"title":"End Users","href":"/en/booking-page-overview"}]},{"tab":"anny Apps","pages":[{"title":"anny Apps","href":"/en/anny-apps-overview"}]},{"tab":"anny AI","pages":[{"title":"anny AI","href":"/en/anny-agent"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/2026"}]}]}]},"basePath":"","title":"Connect Personio with anny - anny","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}