Personio logoSalesforce logo

Accounts in applications

Personio to Salesforce integration: Salesforce users per legal entity, closed on the last working day

With an integration between Personio and Salesforce, every new sales or service employee in Personio automatically gets a Salesforce user with profile, role, manager and the language and time zone of their legal entity. On the last working day in Personio the user is switched off, even if the termination date falls weeks later because of leave taken.

What the integration does

Anyone using Personio for HR and Salesforce for sales and support often passes new colleagues to the Salesforce administrator through a chat message. Leavers are only deactivated once their end date has passed, often weeks after their last working day.

  1. HR records the new employee in Personio, with legal entity, department, position, supervisor and start date.
  2. Personio reports the change; KoppelHet retrieves person and employment.
  3. If the position belongs in Salesforce, KoppelHet creates the user with the profile for own staff or for external agents, and with the settings of the legal entity.
  4. A new supervisor or department in Personio updates manager and role in Salesforce.
  5. After the last working day the user is deactivated; the termination date no longer matters for that.
Personio → KoppelHet → SalesforceSOURCEPersonioTARGETSalesforceKoppelHetmapping · logging · monitoringPersonio → KoppelHet → SalesforceSOURCEPersonioTARGETSalesforceKoppelHetmapping · logging · monitoring
Out: Salesforce user with name, email and Personio ID · Profile and role based on department and position · Language, locale and time zone per legal entity · Manager · Active or deactivated

What to watch for with Personio and Salesforce

  • Personio has a last working day and a termination date, which can be far apart because of leave taken. A salesperson who goes on leave no longer needs their pipeline. KoppelHet deactivates in Salesforce after the last working day, so the licence is released earlier too.
  • Personio distinguishes own staff and externals. If external sales agents are in Personio, they get their own Salesforce profile and a role at the bottom of the hierarchy, so they only see their own leads and accounts; own staff get the full sales profile. That choice follows automatically from Personio.
  • Each legal entity in Personio belongs to a country. That entity sets the company name, language, locale and time zone in Salesforce, so a colleague in Madrid sees quotes with Spanish dates and amounts.
  • Personio only reports a change for fields that matter for an account, such as department, position, supervisor and status. A new home address or salary therefore produces no needless update in Salesforce and costs no API requests.
  • Personio only returns attributes that are released for the integration. If, for example, the department is missing, a Salesforce user would end up without a role and see nothing. KoppelHet checks the data before the user is created, and reports what is missing.
  • Personio retries a notification for up to three days, and notifications from the last thirty days can be requested again. If Salesforce is down for maintenance for a while, KoppelHet still picks up missed departures.

This integration is also part of joiner, mover, leaver.

How we build and run it

  • The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
  • Every sync and every error is visible in the functional log; on an error your administrator is notified.
  • A change that cannot go through is not half-applied but queued for another attempt.
  • KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
  • After go-live we manage the integration and adjust it when your process changes.
  • The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.

Implementation, architecture and compliance

Implementation and price

This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.

A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.

Price indication · Basic

Leave your work email and you see the price indication right away.

We only use your address to follow up on your question about this integration.

Frequently asked questions

Can we not just make the last working day equal to the termination date?

You can in Personio, but then HR loses the difference payroll needs. The integration looks at both and uses the earliest.

What do the external agents see in Salesforce?

That depends on the profile and role you choose for externals. The integration only makes sure every external in Personio gets that profile and no other.

Technical details for IT

For those who want to know how it works under the hood: APIs, fields and sources used.

  • Personio is read through webhooks (employment.updated fires on, among others, department, position, supervisor, status, last_working_day and termination date) and the Personio API v2, with only read scopes on persons and employments. Webhooks are redelivered for up to three days; events from thirty days can be requested again.
  • Salesforce is written through the REST API on the User object with a connected app (OAuth 2.0) and an integration user with Manage Users. Required on create include Username (unique across all Salesforce environments), Alias (at most 8 characters), Email, LastName, ProfileId, TimeZoneSidKey, LocaleSidKey, LanguageLocaleKey and EmailEncodingKey. On departure IsActive = false, or UserLogin.IsFrozen = true when deactivation is refused.

Which fields are transferred

The key fields. The full mapping is agreed per customer.

Field in PersonioField in SalesforceNotes
idEmployeeNumber
first_name of preferred_nameFirstName
last_nameLastName
Naamgevingsregel per entiteitUsername, Email en FederationIdentifier
Naam (ingekort)Alias
positionTitle
departmentDepartment en UserRoleId
employment type (INTERNAL, EXTERNAL)ProfileIdDifferent profile for external agents
legal_entityCompanyName, TimeZoneSidKey, LocaleSidKey en LanguageLocaleKey
supervisorManagerId
last_working_dayIsActive

Related

Which systems do you want to connect?

Tell us which systems you use and what should happen automatically. Together we define the smallest working solution, with a clear design and a quote before building.