---
title: "How data updates work in MangoMap"
description: "When to update a dataset from a file and when to sync it with Dropbox. Both keep the maps that use it, their styling, and the dataset's URL in place."
sidebar:
  label: "How data updates work"
---

Update a dataset in your library in two ways: upload a file from your computer, or sync a Dropbox folder. The dataset's `Configuration` page has separate `Update from file` and `Sync` sections. You can use either or both. Choose the method that matches your data source.

This page is the explanation. For the canonical control list, see [Data updates reference](/docs/data-updates/data-updates-reference).

## Where these sections are

Both are on the dataset's `Configuration` page (in the dataset's sidebar). Its sections are `Data details`, `Access`, `Update from file`, and `Sync`.

`Update from file` and `Sync` are not shown for `GeoTIFF` (raster) datasets or `WMS` datasets. You cannot replace those formats by upload. If the source changes, delete the dataset and import a new one.

## Update from file vs. Sync

| Path | When to use it |
| --- | --- |
| `Update from file` | The data lives somewhere you don't want MangoMap to read directly — a local file, an export from another system, a one-off snapshot. You decide when to update by uploading a fresh file. |
| `Sync` | The data lives in a Dropbox folder you control. You want MangoMap to pick up changes automatically whenever the file changes in Dropbox. |

You can use both on the same dataset. If sync is on and you upload a file manually, the manual upload wins for the moment; the next Dropbox change replaces it. To make manual uploads authoritative, disconnect Dropbox first — see [How to change or disconnect Dropbox sync](/docs/data-updates/change-or-disconnect-dropbox-sync).

Sync on a dataset moves between a few states. After you connect Dropbox, picking every required file turns sync on and runs the first sync. If a changed file in Dropbox fails the checks, the `Sync` card shows `Sync failed: …`, but sync stays on: the next change with a good file brings it back. `Update File Location` takes you back to picking files. `Disconnect` turns sync off from any state, and the dataset keeps its data.

Follow one dataset from `Connect Dropbox` to `Disconnect`:

{/* diagram:dropbox-sync-states */}
<svg class="dark:hidden" style="width: 100%; height: auto" viewBox="0 0 640 424" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="dropbox-sync-states-inline-title dropbox-sync-states-inline-desc">
  <title id="dropbox-sync-states-inline-title">Dropbox sync states</title>
  <desc id="dropbox-sync-states-inline-desc">State machine: Connect takes a dataset from Not connected to Connected; picking every required file turns sync on and runs the first sync; a bad file in Dropbox moves sync to Sync failed and a fixed file moves it back; Update File Location goes back to picking files; a manual upload while sync is on is replaced by the next Dropbox change; Disconnect from any state returns to Not connected and keeps the data.</desc>
  <defs>
    <marker id="dropbox-sync-states-inline-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#525252"/></marker>
    <marker id="dropbox-sync-states-inline-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#c4360c"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#f5f5f5"/>
  <path d="M26 64 L46 64" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-arrow)"/>
  <path d="M256 64 L366 64" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-arrow)"/>
  <path d="M400 96 L400 206" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#dropbox-sync-states-inline-arrow-accent)"/>
  <path d="M544 208 L544 98" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-arrow)"/>
  <path d="M368 228 L258 228" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-arrow)"/>
  <path d="M256 252 L366 252" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-arrow)"/>
  <path d="M432 272 L432 304 Q432 312 440 312 L504 312 Q512 312 512 304 L512 274" fill="none" stroke="#525252" stroke-width="1.2" stroke-dasharray="5,4" marker-end="url(#dropbox-sync-states-inline-arrow)"/>
  <rect x="280" y="40" width="64" height="16" rx="2" fill="#f5f5f5"/><text x="312" y="52" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">CONNECT</text>
  <rect x="292" y="144" width="100" height="16" rx="2" fill="#f5f5f5"/><text x="342" y="156" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">FILES PICKED</text>
  <rect x="440" y="128" width="96" height="16" rx="2" fill="#f5f5f5"/><text x="488" y="140" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NEW LOCATION</text>
  <rect x="276" y="204" width="72" height="16" rx="2" fill="#f5f5f5"/><text x="312" y="216" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">BAD FILE</text>
  <rect x="270" y="260" width="84" height="16" rx="2" fill="#f5f5f5"/><text x="312" y="272" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">FIXED FILE</text>
  <rect x="418" y="320" width="108" height="16" rx="2" fill="#f5f5f5"/><text x="472" y="332" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">MANUAL UPLOAD</text>
  <text x="472" y="352" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">replaced by the next Dropbox change</text>
  <circle cx="20" cy="64" r="6" fill="#171717"/>
  <rect x="48" y="32" width="208" height="64" rx="8" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="152" y="61" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Not connected</text><text x="152" y="79" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Connect to Dropbox</text>
  <rect x="368" y="32" width="208" height="64" rx="8" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="472" y="61" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Connected</text><text x="472" y="79" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">pick the files to sync</text>
  <rect x="368" y="208" width="208" height="64" rx="8" fill="rgba(196,54,12,0.08)" stroke="#c4360c" stroke-width="1.4"/><text x="472" y="237" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Sync active</text><text x="472" y="255" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">updates when files change</text>
  <rect x="48" y="208" width="208" height="64" rx="8" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="152" y="237" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Sync failed</text><text x="152" y="255" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">sync stays on</text>
  <line x1="16" y1="380" x2="624" y2="380" stroke="rgba(23,23,23,0.12)" stroke-width="1"/>
  <text x="16" y="406" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="start">DISCONNECT</text>
  <text x="104" y="406" fill="#525252" font-size="12" font-family="inherit" text-anchor="start">From any state, back to Not connected. The dataset keeps its data.</text>
</svg>
<svg class="hidden dark:block" style="width: 100%; height: auto" viewBox="0 0 640 424" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="dropbox-sync-states-inline-dark-title dropbox-sync-states-inline-dark-desc">
  <title id="dropbox-sync-states-inline-dark-title">Dropbox sync states</title>
  <desc id="dropbox-sync-states-inline-dark-desc">State machine: Connect takes a dataset from Not connected to Connected; picking every required file turns sync on and runs the first sync; a bad file in Dropbox moves sync to Sync failed and a fixed file moves it back; Update File Location goes back to picking files; a manual upload while sync is on is replaced by the next Dropbox change; Disconnect from any state returns to Not connected and keeps the data.</desc>
  <defs>
    <marker id="dropbox-sync-states-inline-dark-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#a3a3a3"/></marker>
    <marker id="dropbox-sync-states-inline-dark-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#ff7a4d"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#141414"/>
  <path d="M26 64 L46 64" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-dark-arrow)"/>
  <path d="M256 64 L366 64" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-dark-arrow)"/>
  <path d="M400 96 L400 206" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#dropbox-sync-states-inline-dark-arrow-accent)"/>
  <path d="M544 208 L544 98" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-dark-arrow)"/>
  <path d="M368 228 L258 228" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-dark-arrow)"/>
  <path d="M256 252 L366 252" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#dropbox-sync-states-inline-dark-arrow)"/>
  <path d="M432 272 L432 304 Q432 312 440 312 L504 312 Q512 312 512 304 L512 274" fill="none" stroke="#a3a3a3" stroke-width="1.2" stroke-dasharray="5,4" marker-end="url(#dropbox-sync-states-inline-dark-arrow)"/>
  <rect x="280" y="40" width="64" height="16" rx="2" fill="#141414"/><text x="312" y="52" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">CONNECT</text>
  <rect x="292" y="144" width="100" height="16" rx="2" fill="#141414"/><text x="342" y="156" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">FILES PICKED</text>
  <rect x="440" y="128" width="96" height="16" rx="2" fill="#141414"/><text x="488" y="140" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NEW LOCATION</text>
  <rect x="276" y="204" width="72" height="16" rx="2" fill="#141414"/><text x="312" y="216" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">BAD FILE</text>
  <rect x="270" y="260" width="84" height="16" rx="2" fill="#141414"/><text x="312" y="272" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">FIXED FILE</text>
  <rect x="418" y="320" width="108" height="16" rx="2" fill="#141414"/><text x="472" y="332" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">MANUAL UPLOAD</text>
  <text x="472" y="352" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">replaced by the next Dropbox change</text>
  <circle cx="20" cy="64" r="6" fill="#f2f2f2"/>
  <rect x="48" y="32" width="208" height="64" rx="8" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="152" y="61" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Not connected</text><text x="152" y="79" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Connect to Dropbox</text>
  <rect x="368" y="32" width="208" height="64" rx="8" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="472" y="61" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Connected</text><text x="472" y="79" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">pick the files to sync</text>
  <rect x="368" y="208" width="208" height="64" rx="8" fill="rgba(255,122,77,0.10)" stroke="#ff7a4d" stroke-width="1.4"/><text x="472" y="237" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Sync active</text><text x="472" y="255" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">updates when files change</text>
  <rect x="48" y="208" width="208" height="64" rx="8" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="152" y="237" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Sync failed</text><text x="152" y="255" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">sync stays on</text>
  <line x1="16" y1="380" x2="624" y2="380" stroke="rgba(242,242,242,0.14)" stroke-width="1"/>
  <text x="16" y="406" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="start">DISCONNECT</text>
  <text x="104" y="406" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="start">From any state, back to Not connected. The dataset keeps its data.</text>
</svg>
{/* /diagram:dropbox-sync-states */}

## What's preserved across updates

A dataset has an identity that's separate from its file content. Updating a dataset keeps its identity:

- The dataset URL stays the same.
- The dataset's group access (`View` and `Edit` toggles) stays the same.
- Maps that use the dataset as a layer keep using the dataset. Maps show the new content the next time they are opened.
- Styling, popups, and configuration applied to layers using the dataset stay in place, as long as the new file has the same attribute structure.

The update replaces the data: the rows or features in the new file replace the old ones.

## What can break

MangoMap checks three things before it replaces the data, and refuses the file if any check fails:

- **One layer.** A dataset holds one layer, so the new file must hold one layer too. MangoMap can't choose between several, so a file with more than one layer is refused, and the message names them. If only one of the file's layers imports, MangoMap uses that layer.
- **Geometry type.** The new file must hold the same geometry type as the dataset: point, line, or polygon. Single and multi-part shapes count as the same type. Every map's style for the dataset is built for its geometry type, so a different type would break them all.
- **Existing columns.** The new file must keep every column the dataset already has, matched without regard to capital letters. It can add new columns. A file that drops or renames a column is refused with `Missing required columns: …`.

MangoMap runs the checks in this order and stops at the first one that fails:

{/* diagram:data-update-checks-flow */}
<svg class="dark:hidden" style="width: 100%; height: auto" viewBox="0 0 640 600" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="data-update-checks-flow-inline-title data-update-checks-flow-inline-desc">
  <title id="data-update-checks-flow-inline-title">Checks before your data is replaced</title>
  <desc id="data-update-checks-flow-inline-desc">Flowchart: a new file from Update from file or a Dropbox change must hold one layer, the same geometry type, and every existing column; if it passes, the data is replaced and the URL, access and layer styling are kept; if any check fails, the dataset is unchanged and the message shows in the dialog or on the Sync card.</desc>
  <defs>
    <marker id="data-update-checks-flow-inline-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#525252"/></marker>
    <marker id="data-update-checks-flow-inline-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#c4360c"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#f5f5f5"/>
  <path d="M200 72 L200 106" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#data-update-checks-flow-inline-arrow)"/>
  <path d="M200 204 L200 238" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#data-update-checks-flow-inline-arrow-accent)"/>
  <path d="M200 336 L200 370" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#data-update-checks-flow-inline-arrow-accent)"/>
  <path d="M200 468 L200 510" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#data-update-checks-flow-inline-arrow-accent)"/>
  <path d="M320 156 L500 156 Q508 156 508 164 L508 234" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#data-update-checks-flow-inline-arrow)"/>
  <path d="M320 288 L390 288" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#data-update-checks-flow-inline-arrow)"/>
  <path d="M320 420 L500 420 Q508 420 508 412 L508 342" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#data-update-checks-flow-inline-arrow)"/>
  <rect x="343" y="132" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="356" y="144" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="343" y="264" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="356" y="276" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="343" y="396" width="26" height="16" rx="2" fill="#f5f5f5"/><text x="356" y="408" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="208" y="215" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="225" y="227" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="208" y="347" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="225" y="359" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="208" y="479" width="34" height="16" rx="2" fill="#f5f5f5"/><text x="225" y="491" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="68" y="16" width="264" height="56" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="200" y="40" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">A new file arrives</text>
  <text x="200" y="58" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Update from file or a Dropbox change</text>
  <polygon points="200,108 320,156 200,204 80,156" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="200" y="151" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">One layer</text><text x="200" y="169" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">in the file?</text>
  <polygon points="200,240 320,288 200,336 80,288" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="200" y="283" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Same geometry</text><text x="200" y="301" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">type?</text>
  <polygon points="200,372 320,420 200,468 80,420" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="200" y="415" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Every existing</text><text x="200" y="433" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">column there?</text>
  <rect x="392" y="236" width="232" height="104" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="508" y="264" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">File refused</text>
  <text x="508" y="282" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">the dataset is unchanged</text>
  <text x="508" y="300" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">message in Processing failed</text>
  <text x="508" y="316" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">or Sync failed on the card</text>
  <rect x="60" y="512" width="280" height="72" rx="20" fill="rgba(196,54,12,0.08)" stroke="#c4360c" stroke-width="1.4"/>
  <text x="200" y="538" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Data replaced</text>
  <text x="200" y="556" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">same URL and access</text>
  <text x="200" y="572" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">every map keeps its styling</text>
</svg>
<svg class="hidden dark:block" style="width: 100%; height: auto" viewBox="0 0 640 600" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="data-update-checks-flow-inline-dark-title data-update-checks-flow-inline-dark-desc">
  <title id="data-update-checks-flow-inline-dark-title">Checks before your data is replaced</title>
  <desc id="data-update-checks-flow-inline-dark-desc">Flowchart: a new file from Update from file or a Dropbox change must hold one layer, the same geometry type, and every existing column; if it passes, the data is replaced and the URL, access and layer styling are kept; if any check fails, the dataset is unchanged and the message shows in the dialog or on the Sync card.</desc>
  <defs>
    <marker id="data-update-checks-flow-inline-dark-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#a3a3a3"/></marker>
    <marker id="data-update-checks-flow-inline-dark-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#ff7a4d"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#141414"/>
  <path d="M200 72 L200 106" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#data-update-checks-flow-inline-dark-arrow)"/>
  <path d="M200 204 L200 238" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#data-update-checks-flow-inline-dark-arrow-accent)"/>
  <path d="M200 336 L200 370" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#data-update-checks-flow-inline-dark-arrow-accent)"/>
  <path d="M200 468 L200 510" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#data-update-checks-flow-inline-dark-arrow-accent)"/>
  <path d="M320 156 L500 156 Q508 156 508 164 L508 234" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#data-update-checks-flow-inline-dark-arrow)"/>
  <path d="M320 288 L390 288" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#data-update-checks-flow-inline-dark-arrow)"/>
  <path d="M320 420 L500 420 Q508 420 508 412 L508 342" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#data-update-checks-flow-inline-dark-arrow)"/>
  <rect x="343" y="132" width="26" height="16" rx="2" fill="#141414"/><text x="356" y="144" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="343" y="264" width="26" height="16" rx="2" fill="#141414"/><text x="356" y="276" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="343" y="396" width="26" height="16" rx="2" fill="#141414"/><text x="356" y="408" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO</text>
  <rect x="208" y="215" width="34" height="16" rx="2" fill="#141414"/><text x="225" y="227" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="208" y="347" width="34" height="16" rx="2" fill="#141414"/><text x="225" y="359" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="208" y="479" width="34" height="16" rx="2" fill="#141414"/><text x="225" y="491" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">YES</text>
  <rect x="68" y="16" width="264" height="56" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="200" y="40" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">A new file arrives</text>
  <text x="200" y="58" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Update from file or a Dropbox change</text>
  <polygon points="200,108 320,156 200,204 80,156" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="200" y="151" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">One layer</text><text x="200" y="169" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">in the file?</text>
  <polygon points="200,240 320,288 200,336 80,288" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="200" y="283" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Same geometry</text><text x="200" y="301" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">type?</text>
  <polygon points="200,372 320,420 200,468 80,420" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="200" y="415" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Every existing</text><text x="200" y="433" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">column there?</text>
  <rect x="392" y="236" width="232" height="104" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="508" y="264" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">File refused</text>
  <text x="508" y="282" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">the dataset is unchanged</text>
  <text x="508" y="300" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">message in Processing failed</text>
  <text x="508" y="316" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">or Sync failed on the card</text>
  <rect x="60" y="512" width="280" height="72" rx="20" fill="rgba(255,122,77,0.10)" stroke="#ff7a4d" stroke-width="1.4"/>
  <text x="200" y="538" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Data replaced</text>
  <text x="200" y="556" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">same URL and access</text>
  <text x="200" y="572" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">every map keeps its styling</text>
</svg>
{/* /diagram:data-update-checks-flow */}

Within those rules, problems can still occur:

- **Reserved field names.** Columns named `id`, `gid`, `geom`, `geometry`, or `the_geom` (case-insensitive) are stored with a leading underscore (`_id`, `_gid`, etc.) — see [Reserved field names](/docs/importing-data/concepts-importing-data#reserved-field-names). Keep the original names in your update files. Do not rename a column to its stored name (for example `_id`).
- **Type changes.** A column that was `Integer` in the old file but `Text` in the new file can break number formatting and quantity-based styles.
- **Different feature counts.** Maps and groups don't break, but if a viewer had a specific feature in mind, it may no longer be there.

MangoMap doesn't warn about type changes during an update. Test the map after the update.

## Supported formats

`Update from file` and `Sync` both support the same five vector formats:

- `CSV`
- `GeoJSON`
- `KML`
- `Shapefile` (multipart: `.shp`, `.dbf`, `.shx`, `.prj`)
- `TAB` (multipart: `.dat`, `.id`, `.map`, `.tab`)

Both sections show a `Data format` dropdown to pick the format you're uploading. The dropdown defaults to the dataset's existing format if it's one of the five; otherwise it defaults to `Shapefile`.

You can change the format between updates. A dataset that was originally imported as `CSV` can be updated from a `GeoJSON` file, and vice versa. The dropdown is what you set; MangoMap reads the file accordingly.

## Multipart formats

`Shapefile` and `TAB` are multipart — they need several files together. Both sections show a `Required files` list with a row per extension. The upload doesn't start until every required extension is present:

- For `Shapefile`: `.shp`, `.dbf`, `.shx`, `.prj` (four files).
- For `TAB`: `.dat`, `.id`, `.map`, `.tab` (four files).

If you drop only some of the required files, the section lists the files you added, shows `4 files are required`, and marks each missing row `File missing`. The upload starts when the set is complete.

## Who can use these sections

Both sections require dataset `Edit` access. That's:

- The dataset creator, or
- The account owner, or
- A user with an `Editor` (or higher) account role and `Edit` access on a group that has the dataset.

`Viewer` users — even with group `Edit` access — can't update or sync a dataset; the role isn't high enough. `Admin` users qualify.

For the full role and group rules, see [Account roles reference](/docs/account-roles/account-roles-reference).

## What happens after an update

After a successful update, the data is replaced.

A failed upload doesn't change the dataset — the previous content stays in place. For `Update from file`, the reason shows in the `Processing failed` dialog. For a Dropbox sync, it shows as `Sync failed: …` on the `Sync` card. Try again with the corrected file or contact support.

## Dropbox sync is the only sync option today

<a href="https://mangomap.com/pricing" target="_blank" rel="noopener noreferrer" class="no-underline">
Enterprise and Agency only

</a>

`Sync` is currently Dropbox-only. There is no option to sync from S3, Google Drive, OneDrive, an FTP server, or a generic URL. If you don't use Dropbox, your only option is `Update from file`.

Connecting Dropbox requires the Dropbox integration on your subscription. If your subscription doesn't include it, clicking `Connect Dropbox` opens an upgrade prompt. See [How subscription and billing work in MangoMap](/docs/subscription-and-billing/concepts-subscription-and-billing) for what each plan includes.

## Related

- [Data updates reference](/docs/data-updates/data-updates-reference)
- [How to update a dataset from a file](/docs/data-updates/update-a-dataset-from-a-file)
- [How to set up Dropbox sync](/docs/data-updates/set-up-dropbox-sync)
- [How to change or disconnect Dropbox sync](/docs/data-updates/change-or-disconnect-dropbox-sync)
- [How dataset access works in MangoMap](/docs/dataset-access/concepts-dataset-access) - who can change a dataset's content.
- [Account roles reference](/docs/account-roles/account-roles-reference) - the role rules for editing datasets.
- [Importing data](/docs/importing-data) - the original import flow for a brand-new dataset.
