From gtm-skills
Fetches unread lead replies from Instantly unibox, classifies reply intent, drafts contextual responses using voice/product context, and sends via API. For GTM email follow-up.
npx claudepluginhub extruct-ai/gtm-skills --plugin gtm-skillsThis skill uses the workspace's default tool permissions.
Manage and reply to lead responses in the email sequencing inbox.
Automates Instantly cold email outreach: manage campaigns with sequences and schedules, sending accounts, lead lists, bulk imports, and analytics via natural language with Composio MCP.
Builds and launches Instantly.ai cold email campaigns end-to-end via API v2, creating campaigns, sequences, adding leads, and starting outreach.
Guides building and optimizing AI-powered cold outreach systems covering signal detection, enrichment, personalization, sequencing, sending infrastructure, and AI follow-ups.
Share bugs, ideas, or general feedback.
Manage and reply to lead responses in the email sequencing inbox.
| Variable | Service |
|---|---|
INSTANTLY_API_KEY | Instantly |
Base URL: https://api.instantly.ai/api/v2
| Input | Required | Source |
|---|---|---|
| Instantly API key | yes | env var |
| Context file | yes | context file (voice, product, proof points) |
| Campaign ID | no | user selection or list from API |
Fetch unread received emails from the unibox.
List unread: GET /emails with is_unread=true, email_type=received, sort_order=desc, limit=50.
If the user specifies a campaign, add campaign_id filter. If they want focused inbox only, add mode=emode_focused.
Present a summary table:
| # | From | Company | Subject | Preview | Received |
Ask the user which conversations to work on, or process all.
For each selected reply, load the full conversation thread.
Get thread: GET /emails?search=thread:{thread_id}&sort_order=asc
This returns the original outbound email(s) and all replies in chronological order, giving full context for drafting a response.
Read each lead reply and classify into one of these categories:
Interested → wants to learn more, asks questions, requests a call
Objection → raises concern but door is not closed (pricing, timing, fit)
Not interested → clear rejection, asks to stop
Auto-reply → OOO, bounce, auto-responder
Meeting request → explicitly asks to book time
Question → asks a specific question without clear buying signal
Referral → redirects to someone else at the company
Present classifications to the user for confirmation before drafting.
Read the context file for voice rules, product description, proof points, and use case framings. Draft a reply for each conversation based on intent:
Interested → confirm interest, propose next step (call or resource)
Objection → address concern directly, offer proof point if relevant
Question → answer the question, bridge to value
Meeting request → confirm availability, suggest booking link or times
Referral → thank them, ask for intro or reach out to referral directly
Not interested → short, respectful close; do not push
Auto-reply → skip, no reply needed
Rules for all replies:
Present each draft alongside the original thread for the user to review and edit.
Before sending, present a final checklist for each reply:
| # | To | Via Account | Subject | Intent | Action |
The user must confirm before any reply is sent.
Send reply: POST /emails/reply with:
eaccount: the same email account that sent the original outboundreply_to_uuid: the ID of the lead's most recent messagesubject: keep the existing thread subject (Re: ...)body: the approved reply in { "text": "...", "html": "..." }Send one at a time. Report success or failure for each.
After sending:
POST /emails/threads/{thread_id}/mark-as-readPOST /leads/update-interest-status with lead_email and appropriate interest_value| # | Lead | Intent | Reply Sent | Status Updated |
For replies the user wants to skip or defer:
Never send a reply the user has not explicitly approved.
See references/instantly-inbox-api.md for full Instantly Unibox and Reply API documentation.