Field Hygiene Report
Scan CRM records for missing, malformed, or inconsistent field values and compile a normalization change list for a human to apply.
When to use
- On a recurring schedule to audit CRM data quality across contacts, companies, or deals.
- Before a campaign or sync that depends on clean fields (e.g. email, phone, company name).
- When a human requests a hygiene sweep after noticing bad data downstream.
- After a bulk import, to catch malformed or missing values introduced by the import.
Tools
http-get: reads contact, company, and deal records from the CRM to inspect field values.write-file: writes the compiled change list of proposed field corrections to a file.send-message: notifies a human that the change list is ready and hands off the apply step.
Playbook
- Confirm scope with the requester: which object type (contacts, companies, deals) and which fields to audit.
- Call the CRM REST API with
http-get(e.g. GET https://api.hubapi.com/crm/v3/objects/contacts) to pull the target records in pages. 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 viasend-messageasking them to create the Integration, naming the service and required scopes. - For each record, check required fields for blanks, obvious placeholder values ("N/A", "test", "-"), and format issues (email missing "@", phone with wrong digit count, inconsistent casing on company names).
- Flag duplicate-looking values (e.g. same email on multiple records) surfaced during the scan.
- For each issue found, draft the proposed corrected value alongside the original, with the record ID and field name.
- Compile all flagged issues into a single structured change list (record ID, field, current value, proposed value, issue type).
- Write the change list to a file with
write-fileso a human can review and apply it. - Note explicitly in the report that this CRM's update operations require PATCH/PUT, which this skill cannot perform — the change list is for manual or human-approved application only, never applied automatically.
- Message the assigned human via
send-message, summarizing the count of issues found by type and pointing to the written change list file for review and application.
Failure modes
- 401/403 on the CRM API -> missing Integration row; stop and escalate via
send-messagenaming the service and required scopes. - Empty result set -> verify the endpoint and query parameters before assuming the CRM has no data; re-check pagination.
- Rate limit hit mid-scan -> back off, resume from the last successful page, and note the interruption in memory for the next run.
- CRM API response shape has changed unexpectedly -> stop scanning, do not guess field mappings, and escalate via
send-messagefor a human to confirm the new schema.
Done when
- A change list file exists (via
write-file) enumerating every flagged record, field, current value, proposed value, and issue type. - A human has been notified via
send-messagewith a summary count and a pointer to the file for review and manual application. - No CRM record was modified directly — this skill only produces a report, since updates require PATCH/PUT/DELETE and are out of scope.