Resolving Trello Sync Failures and Ghost Cards During Bulk Operations
Learn to diagnose and fix Trello synchronization issues where cards disappear or fail to update due to WebSocket disconnects or API rate limiting.
02 Jul 2025, 09:16 UTC

Moving dozens of cards at once in Trello often leaves the board visually out of sync with the server. Cards disappear, reappear after refresh, or bulk moves complete partially. The problem is usually client-server reconciliation, not data loss.
Trello uses a WebSocket-based architecture for real-time updates and caches board state in browser LocalStorage. When socket events are missed, the cache is corrupted, or the API rate limits bulk requests, the UI renders a stale view.
Recognizable conditions
Match what you see to the likely failure mode before changing anything.
| Symptom | Likely cause | Mechanism |
|---|---|---|
| Cards reappear after refresh or deleted cards come back | Local cache corruption | Browser LocalStorage mismatch with server |
| Bulk moves or deletes stop partway, some cards stay put | API rate limiting 429 | Server throttles requests during a batch |
| UI frozen, misses updates from teammates, no error shown | Silent WebSocket disconnect | Heartbeat disrupted by latency, proxy or extension |
Ordered checks
1. Verify the WebSocket connection
Run in browser Developer Tools. No special permissions required.
- Open Trello board, press F12 or Cmd+Opt+I.
- Network tab, filter by WS.
- Move a card in another window or ask a teammate to add a comment.
- Select the open WebSocket to trello.com and inspect Messages.
Expected check: incoming frames appear when activity occurs. If the connection shows closed, pending, or no incoming frames, the client is not receiving updates. Risk: none.
Limitation: Developer Tools shows frames but not application-level reconciliation logic.
2. Compare UI state vs API state
Use this when WebSocket looks healthy but the board still looks wrong.
Run in a terminal where you have a Trello API key and token with read scope. Replace placeholders.
curl -G "https://api.trello.com/1/boards/{BOARD_ID}/cards" \
--data-urlencode "key={API_KEY}" \
--data-urlencode "token={TOKEN}" \
--data-urlencode "fields=id,name,idList"
Expected check: count the JSON objects returned and compare to visible cards on the board. A mismatch indicates client-side rendering from stale cache. Risk: exposing key/token in shell history; use environment variables.
3. Inspect local storage for corruption
Do this if UI vs API counts differ.
- Developer Tools, Application tab in Chrome/Edge or Storage tab in Firefox.
- Local Storage and Session Storage under trello.com.
- Clear both stores for trello.com, then reload the board.
Expected check: board reloads with a full state sync from the API and counts match. Risk: you will lose unsaved local preferences for that domain until reloaded.
4. Check for rate limiting and bulk Power-Up failures
Bulk actions via Power-Ups are more susceptible to partial failure if underlying API requests timeout mid-batch.
In Network tab, filter by Fetch/XHR and look for responses with status 429. Note Retry-After header if present.
Fix tied to finding: if 429s appear, pause bulk operations, wait the suggested interval, then retry in smaller batches. Avoid scripting rapid sequential moves.
Fixes tied to findings
WebSocket silent disconnect. Disable browser extensions that intercept scripts, especially ad-blockers or script managers. Test in an incognito window with extensions off. If corporate proxy is present, verify it allows long-lived WebSocket traffic and does not strip headers. Network latency or aggressive proxy-interception can disrupt the heartbeat signal.
Local cache corruption. Clearing LocalStorage and Session Storage forces Trello to discard cached board state and re-fetch from the server. This is safe and reversible by reloading.
Rate limiting. Reduce batch size, add delays between moves, and avoid parallel bulk Power-Up actions. Monitor Network tab for 429 responses.
Escalation criteria
Escalate to Trello support or your admin if:
- API card count consistently differs from UI after clearing storage and reloading in multiple browsers.
- WebSocket connection repeatedly closes with error codes and persists in incognito without extensions.
- 429 errors occur on single card operations with no bulk activity.
Provide board ID, timestamps of operations, browser and network environment, and screenshots of Network WS and XHR tabs.
Limitations and verification
This guide covers client-side sync issues. It does not cover server-side data loss or permission changes. Always verify the fix by re-running the API card count check and confirming WebSocket messages arrive during a live edit. Ghost cards often resolve after a full cache clear and a fresh load, but recurrence suggests a persistent network interference or extension conflict.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.