{"id":51467,"plugin_id":"plugin_asdk_app_6ac5f3338d4081918eeefc2733ba5f7a","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:46:28.882Z","digest":"2b2dcb80c9a17c7ecb99b4cbf4247796d478c647be5ee28093f8316ea906a87e","against":null,"payload":{"description":"Audit and clean a MisarMail contact list — bounced, complained, and unengaged contacts. Use for list hygiene, re-engagement, suppression, or \"why is my open rate falling\".","included_files":[],"name":"clean-contact-list","skill_md_contents":"---\nname: clean-contact-list\ndescription: Audit and clean a MisarMail contact list — bounced, complained, and unengaged contacts. Use for list hygiene, re-engagement, suppression, or \"why is my open rate falling\".\n---\n\n# Clean a contact list\n\n## Assess\n\n- `list_contacts` with `status=bounced` and `status=complained` — these must\n  never be mailed again. Continuing to send to them is what turns a reputation\n  problem into a blocklisting.\n- `get_contact_score` with no `contact_id` returns the lowest-engagement\n  contacts.\n- `get_analytics` for the open-rate trend over time.\n\nReport what share of the list each category represents. Percentages, not raw\ncounts alone — \"412 bounced\" means nothing without the list size.\n\n## Recommend, then ask\n\nPropose which segments to suppress and which to try re-engaging first. A\nre-engagement campaign to genuinely unengaged contacts is usually worth one\nattempt before suppression; contacts who complained are not.\n\n**Never call `update_contact` to unsubscribe anyone without explicit\nper-segment approval.** Unsubscribing is effectively irreversible from the\nuser's perspective and they may be reacting to a number they misread.\n\n## Importing\n\nWhen importing, `import_contacts` handles up to 5,000 per call and updates\nrather than duplicates existing addresses. Before a large import, confirm the\ncontacts opted in — mailing a purchased or scraped list breaches CAN-SPAM and\nGDPR and will damage the sending domain for every other campaign.\n\nSpot-check a sample with `validate_email` first and report the rejected rows.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}