The CRM Data-Integrity Triage Playbook
A repeatable triage workflow for diagnosing, containing, repairing, and verifying CRM data failures after automations run.
The CRM field that went blank: a data-integrity triage
A field went blank, truncated, or wrong after an automation ran — or an expected record or task never appeared. Work read-only first, name the exact failure, then pick the least invasive fix. This playbook routes you from symptom to root cause to a verified repair.
When this applies
Concrete symptoms this covers:
- A converted record loses a field that the source record carried (for example, a date of birth dropped during Lead-to-Contact conversion). [58]
- A generated document shows the wrong content in a field or subject line. [55]
- A batch sync processes only the first item and skips the rest. [979]
- A create fails because the record already exists, so nothing updates. [1069]
- A lead's source shows blank ("Offline") while ad-sourced leads show a source. [1497]
- An extracted field is cut off or contains garbage across many records. [2019][2020]
- Live records are missing an automation-created activation or reminder task. [56]
Severity & impact
Classify by blast radius first, then by downstream harm.
| Blast radius | Signal | Severity |
|---|---|---|
| One record | Single failing sample, isolated field | Low — fix and verify with that sample [58] |
| A batch | One sync run drops or skips items | Medium — pause the run, fix item handling [979] |
| A whole corpus | Thousands of records share the defect | High — validate against the full real corpus before redeploy [2020] |
Downstream harm raises severity regardless of count:
- A wrong document was generated and may have been sent. [55]
- Attribution was lost, so reporting and routing are wrong. [1497]
- A missing task means a live obligation (activation, reminder) has no owner. [56]
Roles
- Incident owner — drives the triage, holds the decision log, calls the fix.
- Data steward — owns the affected records; approves any write or backfill.
- Comms lead — updates stakeholders and, if a wrong document went out, the affected client.
- Escalation — the engineering or automation lead who authorizes a rollback or pause.
Triage steps
Read-only until you have named the exact failure. Do not write to any record while diagnosing.
- Reproduce with one known sample. Take a single source record that carries the value and run it through. Confirm the destination is missing or wrong. [58]
[ ] Pick ONE source record known to carry the value
[ ] Run the conversion/sync for just that record
[ ] Record: source value present? destination value present?
[ ] Capture the record id + execution log
- Name the exact failure. Not "it's wrong" — state precisely what broke: "a newline bled into the captured field" or "the fallback gave up before reaching the name." An exact name is what makes the fix testable. [2019]
- Read the per-item execution. Open the automation's run and check whether it processed every input item or only the first. A Code node that reads only the first input item silently drops the rest. [979]
[ ] Open the execution for the failing run
[ ] Count input items vs items actually processed
[ ] Flag if only item[0] was handled
[ ] Check for 409 conflicts / 500 errors in the run
- Check path routing. For a sync that separates Create / Update / Existing / Error paths, confirm each outcome routed correctly. A 409 duplicate belongs on the Existing path (minimal update, write back the matched record id), not the Error path — the Error path is for genuine validation failures. Duplicate matching can also key on phone last-8. [1069]
- Check attribution source. If a source field is blank, determine whether attribution rides a URL tracking parameter or a browser-session cookie. Ad leads carry attribution in the URL, which survives; session-cookie attribution breaks across a booking hand-off, leaving the source blank. [1497]
- Diff live vs test records. Separate genuine live records from test or debug records so any fix list touches only real data. [56]
[ ] Tag records as live vs test/debug
[ ] Build the affected-list from live records only
[ ] Confirm no unrelated live record is in scope
Decision points
Branch from the named failure to the root cause.
- If only the first record is affected and the rest are skipped → item-linking or loop bug; the node processed only the first input item. [979]
- If the value is truncated or garbled → extraction regex or fallback logic; a newline bled in or the fallback quit early. [2019]
- If the record exists but a create was attempted → 409 duplicate path; route to Existing with a minimal update instead of Error. [1069]
- If source is blank only for non-ad leads → cookie/session attribution gap; the browsing session was never linked to the booking. [1497]
- If a live record is missing an expected task → automation skipped or never fired for that record; build a selective backfill list. [56]
Mitigation menu
Least invasive first. Stop at the smallest fix that resolves the named failure.
- Patch the field mapping to carry the value. Add the dropped field to the conversion mapping (a matching field plus a formula sync so the date carries across). [58][2346]
- Add a minimal-update fallback for 409s. Route duplicates to the Existing path, do a minimal update, and write the matched record id back to the source sheet. [1069]
- Restructure the sub-workflow to run sequentially per item, and strip empty enum values. Fix item-linking so every item is processed, run per-item to kill the race that produced 409 conflicts, and strip empty enums to avoid 500 errors. [979]
- Backfill missing tasks or records selectively. Apply only to the vetted live-record list, leaving test and unrelated records untouched. [56]
- Re-validate a corrected extraction against the full corpus before redeploy. For an extraction fix, validate against the full real sample set, not a handful of examples. [2020]
Escalate when
Escalate to the engineering/automation lead when:
- The defect spans a whole corpus (thousands of records) rather than one batch. [2020]
- A wrong document may already have been generated and sent. [55]
- A fix requires writing to live records at scale (backfill). [56]
Rollback criteria — pause the sync before it corrupts more records when:
Verification & recovery
- Verify with the exact failing sample. Re-run the original single record and confirm the destination now receives the value. [58]
- Validate a batch fix against the full real corpus. For an extraction repair, run the corrected logic against the entire real sample set (not a few cases) before production. [2020]
- Confirm formatting matches the approved reference. Check the output against the client-approved sample — for example, confirm the contact name is excluded from a subject line as requested and formatting is consistent across cases. Document any remaining mismatch rather than assume it fixed. [55]
Evidence & comms
Capture for every incident:
- The failing record id.
- The execution log for the failing run.
- The before/after value of the affected field.
Comms template:
Incident: <field/record> blank|truncated|wrong after <automation>.
Blast radius: <one record | batch | corpus>.
Root cause: <named exact failure>.
Fix: <mapping patch | 409 fallback | sequential restructure | backfill | re-validate>.
Verified: <failing sample | full corpus | approved reference>.
Downstream: <document resent? | attribution corrected? | task created?>.
Post-incident
- Link the retro to the incident record and the execution log.
- Prevention:
- Test conversions with real filled samples, not empty stubs. [58]
- Handle items sequentially per input to avoid first-item-only drops and races. [979]
- Keep explicit Create/Update/Existing/Error paths so duplicates never land on the Error path. [1069]
- Carry attribution in the URL so it survives a hand-off instead of relying on a session cookie. [1497]
- Validate corrected extractions against the full real corpus before redeploy. [2020]
Ready to Implement This Playbook?
Our team can implement these strategies for you, tailored to your specific business needs.
Schedule Consultation