Check that you entered a valid Breathe HR API key. The connection form tests the key before saving. If the key is invalid or expired, the form shows Connection failed. Generate a new key from your Breathe HR account if needed.
Breathe HR Integration
Connecting Breathe HR lets you sync employee records from your Breathe HR system into CalmCompliance as personnel records. After you connect and enable the integration, employee data is imported automatically and kept up to date with a nightly sync. You can also trigger manual syncs and use field-based rules to route employees to the correct child sites.
Before you start
You need the Admin role for your site to connect and configure Breathe HR. If your organisation uses a parent site with child sites, Breathe HR must be configured at the parent site—child sites inherit the sync.
Breathe HR may show Access required in the catalogue until Calm enables it for your organisation. Request access before connecting. If access is withdrawn after you connect, you can still disconnect and remove credentials, but configuration and sync stay blocked. See Integration availability.
How to connect Breathe HR
Go to Settings > Integrations.
Find the Breathe HR card and click Connect.
Enter your Breathe HR API key in the API Key field and click Connect. The system tests the key before saving.
After a successful connection, you are taken to the Breathe HR configuration page.
Your API key is encrypted at rest and only ever shown in masked form in the UI.
How to enable or disable the integration
On the Breathe HR configuration page, toggle the Enabled switch.
The integration saves the new state automatically. Enabling it allows the nightly sync and manual syncs to run; disabling stops automatic syncing.
How to sync employees
Manual sync
Open the Breathe HR configuration page at Settings > Integrations > Breathe HR.
Click Sync Now. The button shows Syncing... while the sync is in progress.
After the sync completes, the page updates the Last Sync time and the employee counts (Total employees, Active employees, and Leavers).
Automatic sync
Enabled integrations automatically sync every night at 03:00 UTC. This schedule is managed by the system and cannot be changed from the UI.
How to set up site mapping
If your site has child sites, you can create rules that route synced employees to the correct site based on their Breathe HR data.
On the Breathe HR configuration page, open the Site mapping section.
Click Add rule.
For each rule, choose a Breathe HR field:
Department
Division
Location
Job title
Enter the Exact value from Breathe HR to match. Matching is case-insensitive.
Select the Calm site to send matching employees to. The list includes the parent site and its child sites.
Add more rules if needed. Rules are evaluated in order, and the first match wins.
Click Save site mapping rules.
Employees who do not match any rule stay on the parent site. You can update the rules at any time; changes take effect on the next sync.
How Breathe HR data appears in personnel records
When an employee is synced from Breathe HR, a Breathe HR personnel block is added to their personnel record. The block shows:
Breathe HR Employee ID
Last synced time, or Never synced if the record has not yet been updated
Personnel blocks are visible according to your Personnel module access. Sensitive blocks may be protected behind a View Information reveal, which is recorded in the audit log. For a general overview of personnel records, see What is the Personnel module?.
How to disconnect Breathe HR
Go to the Breathe HR configuration page.
Click Disconnect.
Confirm the prompt: Are you sure you want to disconnect Breathe HR? This will stop syncing employees.
Disconnecting clears the stored credentials and stops all syncing. Existing personnel records and their Breathe HR blocks are not deleted.
Troubleshooting
Connection failed or "Failed to connect Breathe HR"
Sync shows "Failed to trigger sync" or employees are not updating
Make sure the integration is enabled. The button shows Failed to trigger sync if the integration is disabled. You must toggle Enabled on before running a manual sync. If a sync still fails, check the audit log for Breathe HR Sync Failed events to see the error details.
"Breathe HR configuration is only available at the parent site"
Child sites cannot configure the Breathe HR integration or edit site mapping rules. Switch to the parent site and open Settings > Integrations > Breathe HR, or click Go to Parent Site Configuration from the child site page.
"Complete all site mapping rules" when saving
Every rule must have a Breathe HR field, a value to match, and a Calm site selected. Fill in all three parts of each rule before clicking Save site mapping rules.
Common questions
What data is synced? Employee names, contact details, and employment data from Breathe HR are used to create or update personnel records in CalmCompliance.
Can I change the automatic sync time? No. The nightly sync runs at 03:00 UTC and is managed by the system.
What happens to existing personnel records if I disconnect? Disconnecting stops future syncing and removes the stored API key. Existing personnel records and their Breathe HR blocks remain in CalmCompliance.
Where can I see sync history? Breathe HR connection, sync, enable/disable, disconnect, and site mapping events are recorded in the audit log.