---
description: "Combine full snapshots, weekly changes, and deletion identifiers safely."
group: "Build an integration"
order: 31
---

# Synchronizing data

Combine full snapshots, weekly changes, and deletion identifiers safely.

Use stable IDs and idempotent upserts so repeated imports produce the same local result. Bulk data is optimized for the existing organizer application; its changes cover the current week from Sunday midnight in the server timezone, not the last seven days or a durable stream of events.

## Start with a snapshot {#start-with-a-snapshot}

Read `/orders/all_data.json` for compact order history. Read `/{event_id}/order_lines/all_data/2.json` for an event’s attendee history. Store the scope, IDs, and payload in one successful local transaction before treating the import as complete.

```curl
curl --user "$PAYDRO_EMAIL:$PAYDRO_PASSWORD" \
  --header 'Accept: application/json' \
  "$PAYDRO_ORIGIN/$EVENT_ID/order_lines/all_data/2.json"
```

## Apply changed records {#apply-changed-records}

Poll the matching `changed_data` resource. Changes include records modified since Sunday midnight in the server timezone; pending payment actions can also keep orders in the result. The weekly boundary resets the window, so recovering after a missed window requires a new full import.

Attendee changes check both order and order line modification dates. A global attendee snapshot covers events starting within the last two years; use the event scoped form for an older event.

## Apply removals {#apply-removals}

Delta responses contain `deleted_items`, a list of order or order line IDs from the existing deletion tracking. Cancelled attendee IDs are also collected for recent cancelled orders. Remove matching local records by ID, not by a name or email. Periodically reconcile a full paginated view; the delta is not an indefinite deletion audit log.

## Use HTTP caching {#use-http-caching}

Save `ETag` and send `If-None-Match` on subsequent requests to supported snapshot resources. A `304` has no new payload; keep your previous data. Validators belong to the same origin, credentials, and exact path. Honor compression and cache headers.

## Handle compact maps {#handle-compact-maps}

Attendee responses are event keyed objects with `event`, `orderlines`, and `products`. Orders contain separate `events` and `orders` maps plus `event_ids` and `event_scope`. Reset cached data when the event scope changes. Respect the [snapshot limits](/en-us/docs/pagination-and-filtering.md).
