> ## Documentation Index
> Fetch the complete documentation index at: https://docs.captivolabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Lazy Contact Sync Plugin

> Put the contacts App Connect already matches into your RingCentral address book, so callers are named on every device.

## Caller ID that follows you off the desktop

App Connect identifies callers by looking them up in your CRM as the phone rings. That works beautifully — inside App Connect.

Everywhere else, it doesn't. The same client who shows as *Mia Sullivan* in the App Connect panel is just `+61 487 005 353` on your desk phone, on the RingCentral mobile app, and in your call history. The lookup happens in the browser extension, so the answer never leaves it.

**Lazy Contact Sync closes that gap.** Each time a call is logged, it takes the contact App Connect already matched and writes it into your personal RingCentral address book. From then on, that person is named everywhere RingCentral shows a caller.

<Note>
  Lazy Contact Sync is free, and was the first plugin published for App Connect.
</Note>

## Why "lazy"

Because it never bulk-imports anything.

A conventional sync copies your entire CRM into RingCentral, then fights to keep two databases in step. You get thousands of contacts you'll never call, stale records nobody notices, and a sync job to babysit.

This plugin only ever learns from calls you actually have. A contact appears in your address book the first time you speak to them, and refreshes on the next call if their details changed in the CRM. Your address book ends up as a record of the people you genuinely deal with — maintained as a side effect of work you were doing anyway.

## How it works

<Steps>
  <Step title="You log a call">
    Either from the App Connect panel, or automatically if your admin has enabled server-side call logging.
  </Step>

  <Step title="App Connect passes on the contact it matched">
    The plugin receives the name and number App Connect already resolved against your CRM. It never queries your CRM itself.
  </Step>

  <Step title="The contact is created or updated">
    If nobody in your address book has that number, a contact is created. If the plugin's own entry is there and the CRM name has changed, it's updated.
  </Step>
</Steps>

Synced contacts carry a note so you can tell where they came from:

```text theme={null}
This contact was created by App Connect. (smokeball)
```

## Works with any CRM

Lazy Contact Sync reads the contact from the call log, not from your CRM. It has no CRM credentials and no CRM-specific code, so it works behind **any** App Connect connector — including ones Captivo Labs didn't build.

It has been verified end to end against Smokeball, ConnectWise, Odoo and Pipedrive, covering both OAuth and API-key connectors, and both RingCentral-hosted and partner-hosted ones.

## Installing

Installation is done once by an account admin. Each user then connects their own address book.

<Steps>
  <Step title="Admin: install the plugin">
    In App Connect, open the **Admin** tab, choose **Plugins**, and install **Lazy Contact Sync**. This makes it available to everyone on the account.
  </Step>

  <Step title="Each user: connect RingCentral">
    Open **Settings**, find Lazy Contact Sync, and click **Connect**. A RingCentral window asks permission to manage your personal contacts. Approve it, close the window, then click **Save**.
  </Step>

  <Step title="Make a call">
    Log a call as usual. The contact appears in your RingCentral address book within seconds.
  </Step>
</Steps>

<Warning>
  **Each user connects once per CRM connector.** RingCentral identifies users separately for each connector, so if your account switches CRMs — or you use more than one — you'll be asked to connect again under the new one. Your existing synced contacts are unaffected.
</Warning>

## What it writes, and what it leaves alone

|                       |                                                                                                                                           |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **Where contacts go** | Your **personal** RingCentral address book. Nothing is written to the company directory, and colleagues never see your synced contacts.   |
| **What's stored**     | Name, the matched phone number, company where the CRM supplies one, and the note above. Nothing else.                                     |
| **Your own contacts** | Never touched. The plugin only updates entries carrying its own note, so anything you created or edited by hand is left exactly as it is. |
| **Your CRM**          | Never modified. The plugin has no CRM access at all — it only reads what the call log hands it.                                           |

## Things worth knowing

<AccordionGroup>
  <Accordion title="Nothing appeared after my call">
    Three common causes. Check that Lazy Contact Sync shows as **Connected** in Settings; that the call was actually matched to a CRM contact (an unmatched call has no contact to sync); and that the number is in full international format. Numbers we can't confidently read as E.164 are skipped rather than guessed at, since filing a contact under the wrong number would put a name on somebody else's caller ID.
  </Accordion>

  <Accordion title="A contact has the wrong name">
    The plugin stores whatever your CRM matched. Correct it in the CRM and the entry updates on the next call from that number. If you'd rather keep your own version, edit the contact in RingCentral — once you do, the plugin stops updating it.
  </Accordion>

  <Accordion title="Internal calls don't create contacts">
    Deliberate. Colleagues already resolve through your company directory, so the plugin ignores calls matched only to internal extensions.
  </Accordion>

  <Accordion title="Removing a synced contact">
    Delete it from your RingCentral contacts as normal. It will reappear if you speak to that person again. Disconnecting the plugin in Settings stops all future syncing; contacts already in your address book stay there.
  </Accordion>
</AccordionGroup>

## Privacy

Client names and numbers end up in a personal address book that travels with the user's RingCentral account. If your firm handles sensitive matters, that's worth a moment's thought before rolling it out — particularly the fact that synced contacts remain on a device after someone leaves the CRM, until they're removed from RingCentral.

The plugin stores only what it needs to write contacts on your behalf: a RingCentral authorisation token, and a count of how many contacts it has synced. It holds no CRM credentials and keeps no copy of your contacts.

<Card title="Questions or problems" icon="life-ring" href="mailto:support@captivolabs.com">
  Get in touch and we'll help.
</Card>
