Two-Way Sync Explained
"Connect your CRM" is the easiest feature to advertise and the hardest to implement well. Most field-sales tools sync your leads into their dashboard once, then drift apart from your CRM over time. Velocity X uses bidirectional sync — changes flow both ways, in near-real-time, conflict-resolved by timestamp. This piece explains why that matters and how it works under the hood.
What Bidirectional Sync Means
One-way (or "pull") sync: the field-sales tool periodically reads your CRM and updates its local view. Changes made in the field tool stay in the field tool. The result: two systems of record that gradually disagree.
Bidirectional sync: changes in either system propagate to the other. A rep marks a deal as "Won" on their phone — the CRM updates. A sales ops admin reassigns a territory in HubSpot — the field map updates. Both systems converge on the same state within seconds.
Why One-Way Sync Causes Drift
Consider a typical day. The rep visits 8 prospects. Three are now qualified leads. One is no longer interested. One should be reassigned to a different rep because they're outside the original territory. The rep updates these in the field app.
If the sync is one-way, the CRM still shows yesterday's snapshot. The marketing team queues a nurture sequence for the disqualified lead — annoying. The sales manager assigns a new rep to a territory that just had ownership changed in the field — embarrassing. Multiplied across a team over months, the data drift creates real operational pain.
Bidirectional sync prevents this by making the two systems stay aligned automatically.
The Engineering Underneath
Bidirectional sync has two hard problems: conflict resolution and event delivery.
Conflict resolution. Both systems can change the same field at the same time. Whose change wins? Velocity X uses last-write-wins with millisecond timestamps. If the rep edits a deal at 14:30:01 and the CRM admin edits the same field at 14:30:02, the CRM's edit wins. This works because both systems clock-sync to the same time source (Supabase's transactional time).
Event delivery. When the CRM changes a record, how does the field tool know? Polling is wasteful and slow. Webhooks are the right answer: HubSpot, Pipedrive, and Attio all expose webhook subscriptions. Velocity X subscribes to the relevant entity webhooks, ingests events into a Supabase queue, and reconciles into the local state. Latency: under 5 seconds end-to-end.
Provider-Specific Notes
HubSpot
HubSpot has the cleanest API of the three. Their webhooks are reliable, their CRM object model is well-documented, and OAuth scoping is straightforward. The main gotcha: HubSpot rate-limits non-enterprise apps aggressively, so high-volume teams need to consider request budgets.
Pipedrive
Pipedrive's deal stages and pipeline structure don't map 1:1 to HubSpot's. Velocity X normalises by mapping each provider's stage taxonomy into a shared internal model. The integration UI lets admins map "Pipedrive 'Negotiation' = Velocity X 'In Quote'" once, after which the rest of the dashboard treats deals consistently regardless of which CRM they came from.
Attio
Attio is the newer entrant with a flexible data model — every customer can define their own object types. The Velocity X integration uses Attio's GraphQL API and accepts any object shape as long as it has the core fields (name, location, status, owner). This makes Attio integrations more configurable than HubSpot or Pipedrive.
What "Real Time" Actually Means
In practice, bidirectional sync isn't truly synchronous — there's always some delay. Velocity X's end-to-end propagation typically lands in 2-8 seconds for a normal event (CRM update → webhook → Supabase → field dashboard). For UI optimism, the field app applies the change locally immediately, then reconciles with the server's confirmed state.
If a sync error occurs (rate limit, network drop), the change queues locally and retries with exponential backoff. After 5 minutes of failed retries, the user gets a "couldn't sync to CRM" warning with a retry button. In practice this happens rarely — under 0.5% of events in production.
Frequently Asked Questions
Can I use multiple CRMs at once?
Velocity X supports one primary CRM at a time per organisation. You can switch between HubSpot, Pipedrive, and Attio, but running two simultaneously creates conflict-resolution problems that aren't worth solving for the typical small business.
What about Salesforce?
Salesforce integration is on the roadmap. The Salesforce API is more complex and the integration takes longer to build right. For Salesforce shops today, the recommended path is to use HubSpot or Pipedrive as the field-sales-facing CRM and sync that to Salesforce via Zapier or a similar tool. Most Salesforce-heavy orgs already do this for similar reasons.
How do I handle territory changes?
Territory definitions live in Velocity X (postcode lists, polygons on the map). When a territory changes, deals in the affected area get reassigned to the new owner automatically. The CRM webhook fires the change to update the deal owner in HubSpot/Pipedrive/Attio in parallel.
What's the cost of bidirectional sync vs one-way?
For Velocity X customers, it's bundled — no extra cost. For SaaS field-sales tools, "bidirectional sync" is often a premium-tier feature ($20-$50/user/month uplift). Over a year for a 10-person team that's $2,400-$6,000.
Does the rep need to know the CRM is connected?
No. The field UI presents the data as if it's a native list. The rep marks a deal as won, the system handles the CRM update silently. Reps notice the integration only when an admin makes a change in HubSpot/Pipedrive/Attio and it appears in their map within seconds.
The Bottom Line
Bidirectional CRM sync is the difference between a field-sales tool that augments your CRM and one that fights it. Velocity X bundles it as a default for HubSpot, Pipedrive, and Attio in the buy-once template. If you're shopping for field-sales tooling, ask explicitly: "Is the sync one-way or two-way?" The answer tells you whether you'll be reconciling spreadsheets in three months.