Bidirectional Sync — propagate NC changes back to GHL #2

Open
opened 2026-07-13 04:28:35 +00:00 by francois · 0 comments
Owner

Problem

Currently sync is GHL→NC unidirectional (or bidirectional in settings but only GHL→NC is implemented).

Requirements

  • Contact update in NC → update contact in GHL via PUT /contacts/{id}
  • Calendar event created in NC → create appointment in GHL
  • Deck card moved between stacks → update opportunity pipeline stage in GHL
  • Conflict resolution: newest timestamp wins, or manual review
  • Settings: bidirectional mode per entity currently works for webhooks but reverse sync is unimplemented

Files

  • All lib/Service/*SyncService.php files (need reverse sync methods)
  • lib/Service/GhlApiService.php (createContact, updateContact, etc. already exist)
  • lib/BackgroundJob/SyncJob.php (would orchestrate reverse direction)

Acceptance

  • NC contact changes are propagated to GHL
  • NC calendar changes are propagated to GHL
  • Deck card changes propagate pipeline stage changes
  • Bidirectional mode works end-to-end
  • Conflicts are handled (not silently overwritten)
## Problem Currently sync is GHL→NC unidirectional (or ``bidirectional`` in settings but only GHL→NC is implemented). ## Requirements - Contact update in NC → update contact in GHL via PUT /contacts/{id} - Calendar event created in NC → create appointment in GHL - Deck card moved between stacks → update opportunity pipeline stage in GHL - Conflict resolution: newest timestamp wins, or manual review - Settings: bidirectional mode per entity currently works for webhooks but reverse sync is unimplemented ## Files - All `lib/Service/*SyncService.php` files (need reverse sync methods) - `lib/Service/GhlApiService.php` (createContact, updateContact, etc. already exist) - `lib/BackgroundJob/SyncJob.php` (would orchestrate reverse direction) ## Acceptance - [ ] NC contact changes are propagated to GHL - [ ] NC calendar changes are propagated to GHL - [ ] Deck card changes propagate pipeline stage changes - [ ] Bidirectional mode works end-to-end - [ ] Conflicts are handled (not silently overwritten)
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
partage/ghl-nextcloud-integration#2
No description provided.