> For the complete documentation index, see [llms.txt](https://docs.reo.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.reo.dev/faqs-troubleshooting/crm-contact-sync-troubleshooting-guide.md).

# CRM Contact Sync Troubleshooting Guide

This guide helps you identify why a **contact has not synced** between Reo.Dev and your CRM (HubSpot, Salesforce or Attio). Here are a few scenarios when contacts are not synced:

#### **Field Mapping Error**

If required fields aren't mapped correctly in your CRM, the contact won't sync.

* **HubSpot** — Go to Settings → Integrations → CRM → HubSpot and verify your field mappings. If something looks off, reach out to <support@reo.dev>.
* **Salesforce** — Go to Settings → Integrations → CRM → Salesforce and fix any field mapping errors directly.
* **Attio** — Go to Settings → Integrations → CRM → Salesforce and fix any field mapping errors directly.

Note: For contacts with only LinkedIn ID (no business email ID) please ensure field mapping is configured. Without accurate field mapping, the contacts will not be synced.

#### **Email domain doesn’t match company domain**

Reo.Dev will not sync a contact with an existing business email ID if the email domain differs from the company domain they're associated with. This usually occurs when a contact signs up, logs in, or submits a form using a personal or alternate email (e.g., gmail.com instead of their company domain).

#### **Contact associated with multiple companies (via email)**&#x20;

There might be a scenario where a contact with an email ID is associated with multiple companies. These contacts are excluded from syncing. This is intentional — to prevent incorrect account association in your CRM.&#x20;

In another case when a contact is linked to multiple active companies on LinkedIn - the contact will not be synced to your CRM. These contacts show up in CSV reports but aren’t visible on Reo.Dev’s UI.

#### **Contact is not associated to any Company**

If the contact is not associated to any company or organization, we will not sync that contact to your CRM.&#x20;

If you have any further queries, please reach out to your account manager or email us at <support@reo.dev>.&#x20;

***

### Why CRM and Reo data don't always match

**Category:** Known Behavior\
**Applies to:** All CRMs connected to Reo

#### **What you're seeing**

You may notice differences between your CRM and Reo, such as:

* A contact or account in your CRM that no longer exists in Reo
* A field in your CRM showing no data for a contact

Neither means something is broken. Both are expected results of how the sync works. Here's why each one happens.

#### Why this happens

#### **The source GitHub repo was deleted from Reo**

When you add a GitHub repo to Reo, we identify the developer accounts tied to it and sync those contacts and accounts to your CRM.

If that repo is later removed from Reo, the associated contacts and accounts whose only activity was on that repo are deleted from Reo along with it.

But, they are not deleted from your CRM. Because, Reo doesn't delete anything from your CRM, ever.

So the repo and its contacts are gone from Reo, but their footprint in your CRM stays exactly as it was.

**Example:** You added the repo `acme/backend` to Reo in March, and its contributors synced to your CRM. You delete `acme/backend` from Reo in June, which removes those contacts from Reo. They remain in your CRM with no source in Reo anymore.

#### A Reo field was created after the contact already synced to CRM

Reo writes data into a set of Reo-specific fields in your CRM (contact link, enrichment score, etc.). When a new field is added, it only starts collecting data from that point onward, it isn't retroactively filled in for contacts and accounts that already existed in your CRM.

That field stays empty only until the next time there's activity on that contact or account. When new activity comes in, Reo updates all fields for that record, including the newer one, so it gets filled in at that point. If a contact has no new activity after the field was created, it stays empty simply because there's been nothing to trigger an update.

**Example:** Reo adds a new field to your CRM in April. Any contact synced into your CRM for the first time after April has this field populated automatically. A contact that was already in your CRM back in January shows the field empty at first, since it didn't exist yet. If that contact has new activity after April, Reo updates all its fields during that sync, including the new one, so it gets filled in then. It only stays empty if there's been no activity on that contact since the field was added.

#### What this means for you

Both of these are expected outcomes of how sync works, not errors. No action is needed on your end.

If you're trying to reconcile a specific record and want to confirm which of these applies, reach out to your CS contact with the contact or account name.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.reo.dev/faqs-troubleshooting/crm-contact-sync-troubleshooting-guide.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
