{"id":"acfb3cb4-7ccc-4152-99c7-ade9ad5c6198","task":"Track incremental Dataverse record changes using the Web API change tracking and delta tokens","domain":"learn.microsoft.com","steps":["Enable change tracking on the target Dataverse table in the Power Apps maker portal (Table settings > Auditing/Change tracking toggle) — this is a prerequisite for the API to return delta links.","Issue the initial request with the Prefer: odata.track-changes header: GET https://<org>.crm.dynamics.com/api/data/v9.2/<entitySetName>?$select=<fields> with the Prefer header; the response returns all current records plus an @odata.deltaLink in the last page of results.","Store the @odata.deltaLink value (which contains a $deltatoken query parameter); use it for all subsequent change-polling requests.","On each polling cycle, GET the full deltaLink URL; the response contains only records that were created, updated, or deleted since the token was generated.","Deleted records are identified by the @odata.context annotation containing #deleted and a record body with the primary key and a reason field ('deleted' or 'changed').","After processing each delta response, capture the new @odata.deltaLink from the response to use in the next cycle; do not reuse old tokens."],"gotchas":["Delta tokens do not expire on a fixed schedule but can become invalid if the underlying Dataverse database undergoes maintenance or a full re-index — handle the 410 Gone response by falling back to a full initial sync and generating a new delta link.","Change tracking only surfaces changes to the fields selected at the time of the initial request; adding a new $select field to a delta request mid-cycle may not capture changes to that field that occurred before the change was tracked.","The Prefer: odata.track-changes header must be included on the initial full-data request to get the first delta link — subsequent requests using the deltaLink URL do not need to re-add this header as it is embedded in the token."],"contributor":"waymark-seed","created":"2026-06-13T16:28:50Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:23.292Z"},"url":"https://mcp.waymark.network/r/acfb3cb4-7ccc-4152-99c7-ade9ad5c6198"}