Skip to main content

LinkedIn Integration

Ping CRM syncs LinkedIn messages and profiles through a Chrome extension. The extension calls LinkedIn's internal Voyager API directly from your browser — no LinkedIn credentials are sent to the backend.

Extension Pairing

Connecting the extension uses a one-time pairing code instead of a password:

  1. Install the Ping CRM Chrome extension.
  2. Open the extension popup — it displays a code like PING-X7K3M2.
  3. Open Ping CRM Settings → Integrations → LinkedIn and click Connect.
  4. Enter the code in the modal and click Pair.
  5. The extension polls the backend and, once matched, shows Connected.

Pairing codes expire after 10 minutes. The issued token is valid for 30 days; when it expires, the popup prompts you to re-pair with a new code.

Message Sync

Messages are fetched via LinkedIn's Voyager GraphQL API, called directly from the extension's service worker. This provides access to full conversation history, not just whatever is visible on the page.

On each sync the extension reads your LinkedIn session cookies from the browser, fetches conversations sorted by most-recent activity, and stops paginating once it reaches messages already seen in a previous sync (the watermark). Parsed results are pushed to the backend; LinkedIn cookies are never included.

A 2-hour throttle prevents excessive syncs during a browsing session. The popup's Sync Now button bypasses the throttle for an immediate sync.

Profile Capture

When you visit a LinkedIn profile page, the content script scrapes the profile data from the DOM and sends it to the backend. This is unchanged from the previous extension version and runs on every profile visit regardless of the sync throttle.

Profile Backfill

After receiving a message sync, the backend identifies contacts that are missing a job title, company, or avatar. It returns a backfill_needed list in the push response. The extension then fetches those profiles via the Voyager API and pushes the enriched data back, without requiring you to visit each profile manually.

Avatar Sync

Voyager profile responses include CDN URLs for profile photos at multiple resolutions. The extension passes these URLs to the backend, which downloads the images server-side. This means contacts you have messaged but never visited on LinkedIn receive avatars automatically.

Privacy

LinkedIn session cookies (li_at and JSESSIONID) are read fresh from your browser at the start of every sync and are used only to authenticate Voyager API calls made from the extension itself. They are never transmitted to the Ping CRM backend. All Voyager requests originate from your browser and your IP address, indistinguishable from normal LinkedIn browsing.

Sync Schedule

TriggerBehavior
Any LinkedIn page visitSyncs if more than 2 hours have passed since the last sync
Manual "Sync Now" (popup)Syncs immediately, no throttle

Sync is purely event-driven — no background alarms or scheduled tasks are needed. If your LinkedIn session expires, the popup shows a prompt to visit linkedin.com so the extension can pick up fresh cookies automatically on your next page visit.