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:
- Install the Ping CRM Chrome extension.
- Open the extension popup — it displays a code like
PING-X7K3M2. - Open Ping CRM Settings → Integrations → LinkedIn and click Connect.
- Enter the code in the modal and click Pair.
- 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
| Trigger | Behavior |
|---|---|
| Any LinkedIn page visit | Syncs 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.