Crm reactivation campaigns
Skill S3YED/appie-kit/skills/misc/crm-reactivation-campaigns
Audit stale CRM pipeline data, tier leads by stage and contact coverage, build giveaway-anchored re-engagement campaigns, write tiered DM scripts for a setter, write email sequences, and tag/move leads via CRM API. For coaching/agency/client-acquisition businesses using GHL or similar CRMs.From its SKILL.md
npx -y skills add S3YED/appie-kit --skill crm-reactivation-campaignsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.9 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
CRM Reactivation Campaigns
Use when a CRM has hundreds+ of stale leads (applied but never contacted, booked but no-showed, went cold after contact) that need a structured re-engagement campaign.
Key Principle: Piggyback Don't Invent
Never create a separate "re-engagement offer." Anchor the outreach to whatever promotion/giveaway the business is already running. The existing campaign IS the re-engagement hook. This avoids confusing the owner ("what re-engagement offer?") and keeps messaging consistent.
Workflow
1. Audit the pipeline
Query the CRM to understand:
- Total opportunities by stage
- Contact coverage (phone, email, both, neither) per stage
- Activity recency β how long since last contact
- Top sources
- Monetary value assigned
GHL API quirks (v2):
- Base:
services.leadconnectorhq.com(v1 atrest.gohighlevel.comis Cloudflare-blocked) - Required header:
Version: 2021-07-28 - Phone numbers arrive partially masked (
+447****1234) β GHL privacy feature, not a query error - Max 100 results per page on opportunities search
- Store token in
/tmp/fileand read back to avoid shell redaction of secrets in command output
2. Tier leads by stage and contact data
| Tier | Stage | Action | Priority |
|---|---|---|---|
| Tier 1 β Kill Now | Survey Submitted / Applied + has phone | DM setter reaches out TODAY | π΄ Highest |
| Tier 2 β Warm | Booked but no-show / 24 Hours Before + has phone | DM setter within 48 hrs | π‘ High |
| Tier 3 β Re-nurture | No Answer / Unresponsive / Requires Follow Up | Email sequence first β DM on open | π’ Medium |
| Exclude | Disqualified, existing Client, Cancelled | Skip | β |
For Tier 1: sort by most-recent-created. Batch into groups of 30-50 for daily cadence.
3. Confirm the offer with the owner
Present the framework clearly:
"Here are [N] cold leads. [Giveaway/Offer X] is your hook. We tell them: 'You applied before β you're pre-qualified for this.'"
Do NOT frame it as a separate campaign. The owner must immediately recognise their own promotion.
4. Write DM scripts per tier
Scripts must:
- Reference the specific stage the lead is stuck in
- Use the giveaway/offer as the reason (non-salesy)
- Include a clear CTA (book a call)
- Have reply-handling branches (interested, what's the catch, not now)
Tier 1: "Hey [Name], this is [Setter] from [Brand]. You applied for coaching before but never got through. We're running [Offer]. Since you're pre-qualified, wanted you to know first. Interested?"
Tier 2: Acknowledge the missed booking: "I see you booked a call before and it never happened β life gets in the way. We're running [Offer]..."
Tier 3: Email-first. "Saw you opened our email about [Offer]. Just making sure you saw it..."
5. Write the email sequence
3 emails over 7 days:
- Email 1: Re-introduction + offer (apologise for the silence)
- Email 2: Social proof / client story
- Email 3: Deadline urgency + last call
Track opens β tag "warm" β DM setter reaches out within 2 hours of open.
6. Setter daily cadence
| Day | Action |
|---|---|
| Day 1 | DM first 30-50 Tier 1 leads. Send Email 1 to all. |
| Day 2 | Reply to DM responses. DM Tier 2 leads. |
| Day 3 | Send Email 2. Check opens β DM warm leads. |
| Day 5-6 | Follow up Tier 1 non-responders. Cover remaining batches. |
| Day 7 | Send Email 3 (deadline). Final DM follow-up. |
7. Tag and move leads in CRM via API
- Tag:
re-engagement-wave-1,tier-1-hot,tier-2-warm,tier-3-nurture - Move Tier 1 β "Requires Follow Up" so the setter sees them immediately
- Move Tier 2 β "Requires Follow Up" on day 3
8. Deliverables to the owner
- Prioritised lead list (batched for the setter)
- DM scripts per tier with reply branches
- Email sequence (3 emails)
- CRM tags and stage moves (executed via API)
- Daily cadence sheet
Pitfalls
- Offer confusion: Always tie the re-engagement to an existing promotion. Never invent a new one without explicit approval. If the owner says "I don't understand the re-engagement offer", you've failed β restate it as their existing campaign.
- Phone masking: Don't report "missing phone numbers" as a data issue in GHL. Country code + last 4 digits is all the API returns by design.
- Lead volume overwhelm: 150+ DMs in one day burns out a new setter. Batch into 30-50/day.
- No booking link: Always ask for the specific booking link before sending scripts to the setter.
- API pagination: GHL returns max 100 per page. Always paginate to get the full dataset.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.