Cross-System Sync Audit
Read matching records from two SaaS systems, diff their fields, and write a reconciliation report listing every out-of-sync value to a file.
When to use
- A human asks whether records in two systems (e.g. CRM and billing platform) still match.
- Before a scheduled reconciliation or after a bulk import, to catch drift.
- A downstream workflow is failing and stale data in one system is suspected.
- Recurring hygiene check on customer, contact, or subscription records shared across tools.
Tools
http-get— reads records from each SaaS system's REST API.shell-execute— runs a small script to diff the two record sets field by field.write-file— writes the reconciliation report of out-of-sync fields to a file.
Playbook
- Confirm with the requester (or the task description) which two systems, which record type, and which fields are in scope for the audit.
- Call the first SaaS REST API with
http-get(e.g. GET https://api.hubapi.com/crm/v3/objects/contacts). Authentication is injected by the org's Integration row for this host — never ask for, echo, or hardcode credentials. If the call returns 401/403 or no Integration row exists, stop and message a human via send-message asking them to create the Integration, naming the service and required scopes. - Call the second SaaS REST API with
http-getin the same way, authenticating via its own Integration row. - If either response is empty or missing expected fields, do not proceed to diffing — treat this as a failure mode and verify the endpoint and parameters first.
- Save both raw record sets to intermediate files using
write-fileso the diff step has stable inputs to work from. - Use
shell-executeto run a script that matches records by a shared key (email, external ID, etc.) and compares the in-scope fields, producing a list of mismatches with old/new values per field. - Review the diff output for obvious noise (formatting differences, timezone offsets) and treat only genuine value mismatches as out-of-sync.
- Write the final reconciliation report with
write-file, listing each mismatched record, the field, and the value in each system, ready for human review. - If the audit reveals records that need correction, do not attempt to fix them directly — no PATCH/PUT/DELETE tool exists. Compile the change list into the same report file and hand off via send-message to a human who can apply the updates.
Failure modes
- 401/403 response from either system -> missing Integration, escalate via send-message naming the service and required scopes.
- Empty result from either
http-getcall -> verify the endpoint and parameters before assuming systems are in sync. - Rate limit hit while paging through records -> back off and note the interruption in memory so the audit can resume later.
- Expected fields missing or the API response shape has changed -> stop and fall back to browser-search to confirm current API documentation.
Done when
- A reconciliation report file exists via
write-filelisting every out-of-sync field between the two systems, or explicitly stating none were found. - Any corrections needed have been compiled into that report and handed off to a human, not applied directly.
- The requester has a clear, file-backed answer to "are these two systems in sync."