# Sync addresses from onOffice

<Lead>
The address sync imports your onOffice address book into the central platform
address book. All tools then read the same contact state, and you maintain the
mapping only once.
</Lead>

You find this area under **Settings → Integrations → onOffice**, in the
**"Addresses from onOffice"** frame. It requires an existing connection (see the
<DocLink href="/help/integrations/onoffice/verbindung">connection guide</DocLink>).

## One address book for all tools

<Info title="One mapping, one state">
There is exactly **one** central address book. Tools no longer fetch their
contacts from onOffice individually; they read this book. Example: DB-Leads
sources its leads from the central address book. This avoids duplicate
maintenance and duplicate API calls.
</Info>

## What the sync does

<Steps>
<Step title="Read addresses">
The platform reads your address book from onOffice page by page (200 per page).
Even an address book with many thousands of entries is processed in full: the
first run fetches as much as possible immediately, the rest continues in the
background.
</Step>
<Step title="Map fields">
Each onOffice address field is imported into the matching platform field per your
mapping (first name, last name, email, phone, customer number and so on).
</Step>
<Step title="Create or update">
New contacts are created, already imported ones updated. The sync is repeatable
and never duplicates (dedup via the onOffice record id).
</Step>
<Step title="Remove deleted contacts">
Contacts that no longer exist in onOffice disappear from the address book as
well, together with everything tools derived from them (for example briefings
and findings in DB-Leads). This only happens at the end of a complete run and
only after asking onOffice about each contact individually.
</Step>
</Steps>

## Deleted contacts

When you delete a contact in onOffice, the next sync removes it on our side as
well. Three rules make sure a disturbed run never turns into a mass deletion:

- **Only after a complete run.** A sync that aborts removes nothing. A contact
  only becomes a candidate once a run has read the entire address book without
  seeing it.
- **Every candidate is verified individually.** Before a contact goes, the
  platform asks onOffice specifically for that record. If onOffice still
  delivers it, it stays. If onOffice answers with an error, it stays as well and
  the run says so in its log.
- **A safety limit.** If more than 50 contacts or more than ten percent of the
  address book go missing at once, the sync deletes nothing. It stops, reports
  the number to owners and admins, and the section shows a notice with the
  **"Confirm deletion"** button. Only with that confirmation does the next run
  remove the contacts, again after verifying each one with onOffice.

<Warning title="Deletion is final">
What the sync removes is gone from the address book and from the tools. A
marketing objection survives regardless: it is tied to the address, not to the
contact.
</Warning>

## Field mapping

Sensible default mappings (first name, last name, email, phone, customer number)
ship out of the box, because onOffice field names vary per broker. Review and
extend them in the collapsible **"Field mapping"** area. After saving it
collapses; reopen it via **"Show"**.

The mapping is deliberately simple: onOffice field to platform field, **without
direction**. The sync **reads only**. Writing back to onOffice happens
exclusively through explicit features (for example the acquisition write-back of
DB-Leads with its own field configuration).

<Note title="No data is lost">
Unmapped fields are not lost: all raw data read is kept in full in the contact
details. You can add a mapping later and re-sync.
</Note>

Details on mapping and how unknown fields are handled are in the
<DocLink href="/help/integrations/onoffice/feldzuordnung">field mapping guide</DocLink>.

## Start the first sync

<Steps>
<Step title="Review the field mapping">
Open the "Field mapping" area, review the defaults, save.
</Step>
<Step title="Sync now">
Click **"Sync now"**. The result arrives as a notification ("X new, Y updated").
</Step>
</Steps>

After that the sync runs **automatically every day**.

## Troubleshooting

<Faq>
<FaqItem q="A mapped field (e.g. mobile phone) does not appear.">
If onOffice cannot deliver a field via the API, it is skipped during the sync.
Save the field mapping once again: this releases previously skipped fields so
they are read again on the next sync. Also check whether the API user is allowed
to read addresses (all).
</FaqItem>
<FaqItem q="The sync stopped and reports missing contacts.">
onOffice no longer carries more contacts than the safety limit allows. Check in
onOffice whether the deletion was intended (for example a clean-up of the
address book) and whether the API user may still read all addresses. If the
deletion is intended, confirm it via **"Confirm deletion"** in the "Addresses
from onOffice" section. Until then everything stays as it is.
</FaqItem>
<FaqItem q="Do I start the address sync and the object sync separately?">
Yes, they are two frames each with its own button. Both then run automatically
every day.
</FaqItem>
</Faq>

## Next

<CardGrid>
<Card href="/help/integrations/onoffice/objekte" title="Object sync" eyebrow="Basics">
Import your properties from onOffice.
</Card>
<Card href="/help/integrations/onoffice/feldzuordnung" title="Field mapping" eyebrow="Deep dive">
Map fields, add custom fields, understand unknown fields.
</Card>
<Card href="/help/integrations/onoffice/problembehebung" title="Troubleshooting" eyebrow="Help">
Fixes for the most common problems.
</Card>
</CardGrid>
