Playbooks
How to Prevent Automation Collisions in GoHighLevel
Workflow collisions occur when several automations believe they own the same contact state. Define entry contracts, state ownership, suppression, and idempotent actions.
The short answer
Workflow collisions occur when several automations believe they own the same contact state. Define entry contracts, state ownership, suppression, and idempotent actions.
What the failure looks like
Contacts receive duplicate or contradictory messages, owners change unexpectedly, opportunities jump stages, tags appear and disappear, and one workflow removes another’s contact. Each workflow looks reasonable alone. The failure emerges only when several respond to the same event.
Diagnose before changing anything
Select several affected records and trace them from the original event through every system, workflow, owner, and report. Record timestamps and identifiers. A global fix based on one screenshot can hide the true boundary and create a second failure.
- List workflows that can enroll the same contact
- Trace all actions touching owner, opportunity, DND, tags, and custom fields
- Review re-entry and stop behavior
- Find event pairs that can occur within seconds
- Inspect duplicate webhook or integration delivery
- Reproduce the collision with a synthetic record and timestamps
The most likely root cause
Workflows were organized by campaign instead of shared state. Each workflow independently manages ownership, lifecycle, or communication eligibility. There is no contract declaring which automation controls a field or what event makes an action safe to repeat.
Design the repaired system
Assign ownership for critical state. Use explicit lifecycle fields, mutual exclusion, and suppression lists. Make create and update actions idempotent where possible. Separate orchestration from messaging so one workflow decides state and narrower workflows execute approved actions.
Implementation sequence
Make the smallest change that produces a testable improvement. Use synthetic records first, then a controlled production sample. Document the original and final behavior so future administrators can distinguish design from accident.
- Inventory shared triggers and actions
- Choose canonical lifecycle fields
- Assign one owner per critical state change
- Add exclusion and re-entry rules
- Add idempotency markers for external actions
- Test simultaneous and repeated events
- Alert on impossible state combinations
Measure whether the repair worked
Track duplicate enrollments, duplicate messages, owner overwrites, opportunity duplication, workflow removals, impossible states, and manual corrections. Review collisions after every major workflow release.
Failure modes to prevent
Avoid using tags as undocumented locks, adding arbitrary waits to hide race conditions, turning off workflows without dependency review, and relying on execution order when events can arrive asynchronously.
Operational handover
Assign an owner, alert path, review cadence, and rollback instruction. The repair is complete only when the operating team can detect recurrence without waiting for a customer complaint or a month-end report.