The plug-in talks to whichever CRM the trucking partner already runs — Salesforce, HubSpot, Microsoft Dynamics, Mandata, FleetWave, custom. We pull their existing client list, offer those clients reverse-logistics pickups, and write bookings back. The partner's team see nothing new in their interface. We see a fresh revenue line where there was empty road.
Three-step handshake. Read their clients, offer reverse pickups, write the booking back. The dPRN engine fires inside CircularOS afterwards — they never see it.
We read what's already there.
We add the reverse-logistics overlay.
If a UK trucking partner runs it, we have a connector or can build one in < 5 days.
| CRM | Auth | Connector | Status |
|---|---|---|---|
| Salesforce | OAuth 2.0 | REST · Bulk API 2.0 | ✅ Live |
| HubSpot | OAuth 2.0 / API key | REST · CRM API v3 | ✅ Live |
| Microsoft Dynamics 365 | Azure AD | OData · Web API | ✅ Live |
| Mandata (TMS) | API key | REST · TMS Webhooks | 🟡 Beta |
| FleetWave | API key + IP allowlist | REST polling | 🟡 Beta |
| Custom / Bespoke | Negotiated | 5-day build | ⚙️ On-demand |
What happens in real time when the bridge is live. Every event sealed in the Truth Ledger on our side; partner side just sees their own CRM update.
What the bridge looks like under the hood for a Salesforce partner. (Their team never sees this — it runs server-to-server.)
# 1. Read partner's active clients GET /services/data/v60.0/query?q="SELECT Id, Name, ShippingPostalCode FROM Account WHERE Active__c=true" → 412 clients returned # 2. Tag plastic-eligible (CircularOS side) POST /api/full-loop/tag-eligible { "partner": "Eddie Stobart", "client_ids": [189] } → 189 tagged · 223 skipped (no plastic on return leg) # 3. Offer reverse pickup back into their CRM POST /services/data/v60.0/sobjects/Task { "WhatId": "0011x00000Abc", "Subject": "Reverse pickup · 850kg HDPE", "ActivityDate": "2026-05-08" } → Task created · driver auto-notified via partner's existing dispatch flow # 4. dPRN mint fires inside CircularOS (partner never sees this) POST /api/dprn/mint { "weight_kg": 850, "polymer": "HDPE", "source": "Tesco RDC NN5" } → dPRN-2026-0051234 minted · Truth Ledger sealed