You update multiple database properties using Notion’s bulk edit feature, but later discover that some individual property changes did not sync to other workspace members or across devices. This issue occurs because Notion’s sync engine treats bulk edits as a single atomic transaction, and when conflicts or rate limits interrupt the transaction, only a subset of property updates are committed to the database. This article explains the technical root cause of this sync behavior, provides a reliable step-by-step method to apply bulk edits without data loss, and covers related failure patterns you may encounter.
Key Takeaways: Why Bulk Edit Property Updates Fail to Sync
- Database > Select all rows > Edit properties: Notion commits all property changes in one sync transaction. If the transaction is interrupted, only the first few changes may be saved.
- Workspace rate limit (40 requests per second): Bulk edits on databases with over 50 rows can exceed the API rate limit, causing the sync engine to drop later property updates.
- Manual row-by-row edit + 2-second wait: Applying property changes one row at a time and pausing between rows avoids atomic transaction failures and rate limit errors.
Why Notion’s Sync Engine Drops Property Updates During Bulk Edit
Notion uses a conflict-free replicated data type (CRDT) architecture to sync changes across clients. When you perform a bulk edit — selecting multiple database rows and changing a property in the side panel — Notion groups all property modifications into a single atomic sync transaction. The sync client sends this transaction as one payload to the server. If the server receives the payload but encounters any conflict, such as another user editing the same row or an API rate limit, it may reject the entire payload or commit only the first few property changes.
The root cause is that Notion’s bulk edit interface does not send individual property updates as separate sync events. Instead, it bundles them. The server processes the bundle sequentially. If the bundle contains 30 property changes and the 15th change conflicts with a concurrent edit, the server stops processing. The first 14 changes are saved. The remaining 16 changes are lost. The client does not display an error because the bulk edit dialog closes after the server acknowledges receipt of the payload — not after all changes are committed.
This behavior is more common on databases with more than 50 rows and when multiple workspace members are editing the same database simultaneously. The official Notion API also enforces a rate limit of 40 requests per second. Bulk edits that generate many property writes in a short window can hit this limit, causing the sync engine to silently drop later updates.
Steps to Apply Bulk Property Edits Without Losing Changes
To avoid the atomic transaction failure, you must apply property updates in a way that sends individual sync events for each row. The following method uses a filter and a manual row-by-row workflow. This guarantees that each property change is committed independently.
- Open the database and create a filter for the rows you want to edit
Click the filter icon at the top-right of the database view. Add a filter that isolates only the rows requiring property changes. For example, if you need to update the Status property for all rows currently set to “To Do,” filter by Status > is > To Do. This reduces the number of visible rows and prevents accidental edits to unrelated rows. - Sort the filtered view by a unique column
Add a sort rule using a column that contains unique values, such as “Created Time” or “ID.” Sorting ensures that you can track your progress and avoid skipping rows. Click the sort icon next to the filter icon and select the column. Choose ascending or descending order. - Edit the first row’s property manually
Click directly on the property cell of the first row in the filtered view. Type or select the new value. Press Enter to save. This sends a single sync event for that one row. The change is committed immediately. - Wait two seconds before editing the next row
After pressing Enter, count two seconds. This pause prevents the client from sending multiple sync events in rapid succession. It also avoids hitting the API rate limit. Do not use the bulk edit panel during this process. - Repeat for each remaining row in the filtered view
Click the property cell of the next row, make the change, press Enter, and wait two seconds. Continue until all rows show the updated property. Verify that the property value appears correctly on each row before moving to the next. - Remove the filter and confirm all changes are synced
Click the filter icon and select “Clear all filters.” The database now shows all rows. Scroll through the list to confirm that every intended row has the updated property. If any row still shows the old value, repeat the manual edit for that specific row.
If Notion Still Loses Property Updates After the Main Fix
Even when you follow the manual row-by-row method, certain edge cases can cause property updates to be lost. The following subsections describe these scenarios and how to resolve them.
Another workspace member edits the same row at the same time
If two users edit the same property on the same row within a few seconds, Notion’s CRDT engine merges the changes using a last-writer-wins strategy. The last change saved to the server overwrites the previous one. To avoid this, coordinate with your team before performing bulk updates. Use the “Last Edited By” property to see who edited a row recently. Ask other members to avoid editing the target rows until you finish.
Property update does not appear after refreshing the page
If you refresh the browser or close and reopen the Notion app and see that a property change is missing, the sync transaction may have been interrupted by a network timeout. Notion does not retry failed sync events automatically for manual edits. Reapply the change on the affected row. For persistent issues, check your internet connection and ensure that the Notion desktop app or browser extension is updated to the latest version.
Bulk edit panel shows “Syncing” indefinitely
When you use the bulk edit panel and the “Syncing” indicator does not disappear, the atomic sync transaction is stuck. Close the bulk edit panel by clicking the X button. Do not refresh the page immediately. Wait 10 seconds. Then refresh. Check which rows have the updated property value. Any rows that reverted to the old value must be edited manually using the row-by-row method described above.
Manual Row Edit vs Bulk Edit Panel vs API: Sync Behavior Compared
| Item | Manual Row Edit | Bulk Edit Panel | Notion API (Official) |
|---|---|---|---|
| Sync transaction type | Single-row atomic | Multi-row atomic bundle | Per-request atomic |
| Property update reliability | High — each change is committed individually | Low — bundle may be partially committed | Moderate — depends on rate limit and retry logic |
| Rate limit risk | None when pausing 2 seconds between edits | High on databases over 50 rows | 40 requests per second; retry with exponential backoff required |
| Conflict handling | Last-writer-wins per row | First N changes win; remaining are dropped without error | HTTP 409 Conflict returned; developer must handle |
| Best use case | Fewer than 100 rows, requires 100% accuracy | Fewer than 20 rows, no concurrent edits | Automated bulk operations with error handling |
Now you understand why Notion’s bulk edit feature loses specific property updates: the atomic sync transaction can be partially committed when conflicts or rate limits occur. Use the manual row-by-row method with a two-second pause to guarantee that every property change is saved and synced. For databases with more than 100 rows, consider using the official Notion API with retry logic and per-row error handling. As an advanced tip, add a “Sync Status” formula property that compares the current value of the edited property against a known target value, so you can visually flag rows that did not update correctly.