WinLayer Docs
Product documentation · Beta behavior. A documented path is not production acceptance; availability still depends on source health, workspace plan, provider setup, and deployed evidence.

Sync your pipeline to a CRM

Use WinLayer's governed Salesforce, HubSpot, Dynamics, and Unanet connectors, or reconcile another CRM through the scoped public API.

Built-in path: workspace Owners and Admins connect an approved provider in the Integrations console, define tenant field and stage mappings, test the account, then run a pull or push. Live authorization requires that your organization has configured the provider application or Unanet Compass credential.

Built-in launch support

ProviderLaunch levelExecutable actions
SalesforceLevel 3Verify the account, pull and push opportunities, create follow-up tasks, retain cursors and per-record provenance, and replay failed runs.
HubSpotLevel 3Read contacts, pull and push deals, create follow-up tasks, apply tenant mappings and deterministic conflict rules, and replay failed runs.
Microsoft DynamicsLevel 2Pull and push opportunities through a constrained Dataverse base URL with tenant mappings, cursors, health, retry, and replay.
Unanet CRMLevel 2Verify and synchronize opportunities with encrypted tenant-owned Compass credentials; WinLayer does not invent a global Unanet OAuth application.

API reconciliation for another CRM

Two complementary mechanisms — use both: webhooks for instant pushes when someone pursues/passes, and a polling sweep of /public/pipeline as the reconciliation loop that heals anything a missed delivery skipped.

1. Poll the pipeline

bash
curl -s -H "Authorization: Bearer $WINLAYER_KEY" \
  "https://api.winlayer.ai/api/v1/public/pipeline?status=pursuing"

Each item carries the scored opportunity plus your team's decision:

json
{
  "count": 1,
  "pipeline": [
    {
      "id": "43eeed69-…",
      "title": "Enterprise Cloud Migration under NASA SEWP V",
      "agency": "NASA.GODDARD SPACE FLIGHT CENTER",
      "fitScore": 80,
      "winProbability": 64,
      "pursuitStatus": "pursuing",
      "trackedAt": "2026-07-14T11:32:00.000Z"
    }
  ]
}

2. Map statuses to CRM stages

WinLayerTypical CRM stageNote
pursuingQualification / CaptureCreate or advance the opportunity record; attach fitScore + winProbability as fields.
watchingProspectingTrack without committing pipeline value.
passedClosed–No bidClose the record; keep the reason for win/loss analytics.

3. Upsert rules that hold up

  • Key CRM records on the WinLayer id (signal id) in an external-id field — it is stable across polls.
  • Poll every 5–15 minutes; one page of pipeline is a single request, so you stay far under the 120/min limit.
  • Let WinLayer own pursuitStatus; let the CRM own everything downstream (amounts, close dates, owners).
  • Wire opportunity.pursuit.set webhooks (receiver guide) for real-time updates between sweeps.