From gtm-skills
Validates emails from a CSV before campaign sending, removing invalid, do_not_mail, abuse, catch-all, and unknown addresses. Fits between email-generation and campaign-sending in the pipeline.
How this skill is triggered — by the user, by Claude, or both
Slash command
/gtm-skills:email-verificationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Validate emails before sending. Sits between `email-generation` and `campaign-sending`:
Validate emails before sending. Sits between email-generation and campaign-sending:
email-generation → email-verification → campaign-sending
Provider selection and credentials are handled in Step 0 of the workflow.
| Input | Required | Source |
|---|---|---|
| Contact CSV with email column | yes | From email-generation output or any CSV |
| Sequencer campaign IDs | no | From campaign-sending — only if cleaning uploaded leads |
email, Email, email_address){N} unique emails to validate, {M} rows without email skippedFor each unique email, call the provider's validation endpoint:
{email: {status, sub_status}}unknownGroup results by the provider's status values. Use the status mapping identified in Step 0 to determine which emails to keep and which to remove.
General guidance (confirm against provider docs):
| Action | Typical statuses |
|---|---|
| Keep | valid |
| Remove | invalid, do_not_mail, abuse, catch-all, unknown, spamtrap |
Catch-all is removed, not kept. A catch-all domain accepts mail to any address, so the provider cannot confirm the specific mailbox exists. Those addresses bounce at a meaningful rate, and bounces damage sender reputation for the whole campaign. Never upload catch-all addresses to the sequencer.
Present summary table with counts per status, then list all emails to remove with their status and sub_status.
{original_name}_verified.csv{original_name}_verification_results.json for reference{kept} emails kept, {removed} removed (with a per-status breakdown, including how many were catch-all)If the user provides sequencer campaign IDs:
skills/campaign-sending/references/{N} leads removed from sequencerIf no campaigns are provided, skip this step and note that the user should remove bad emails manually or re-upload with the cleaned CSV.
| File | Contents |
|---|---|
*_verified.csv | Cleaned CSV with only valid emails |
*_verification_results.json | Full validation results for all emails |
| Console report | Summary table + list of removed emails |
Provider API docs are fetched or read during Step 0. No pre-configured provider docs are bundled — add them to references/ as needed.
npx claudepluginhub extruct-ai/gtm-skills --plugin gtm-skillsUploads finalized emails to Instantly for sequencing and sending. Maps CSV fields to lead schema, creates/finds campaigns, deduplicates leads, and provides pre-send verification checklist.
Verifies and guesses cold email addresses from a CSV using ValidEmail.co or Reacher engine. Processes leads with First Name, Last Name, Company Name to discover domains and generate email permutations.
Manages Instantly.ai v2 leads: CRUD ops, list creation/deletion, bulk imports with validation, block lists, unsubscribes, GDPR/CAN-SPAM compliance.