Skip to content

CM Growth Hacking

Bottom Sheet + Calendar + Trigger + Tracking = Growth Hacking Engine. Đa ngành, đa mục đích, zero dependencies. 1 skill = mọi growth hacking pattern bạn cần.


🎯 When to Use

TriggerAction
User says "bottom sheet", "popup"Activate — start Phase 1
User says "đặt lịch popup", "booking bottom sheet"Activate — focus booking sheet
User says "lead capture", "exit intent"Activate — focus lead capture
User says "nhắc lịch", "google calendar", "apple calendar"Activate — focus calendar CTA
User says "flash sale popup", "countdown"Activate — focus promo sheet
User says "survey", "đánh giá", "feedback"Activate — focus survey sheet
User says "tăng conversion", "giảm bounce"Activate — explain + build

📖 Selective Reading Rule (MANDATORY)

FileStatusWhen to Read
bottom-sheet-engine.md🔴 REQUIREDAny bottom sheet implementation
trigger-system.md🔴 REQUIREDSetting up when/how sheets appear
calendar-integration.md⚪ OptionalWhen sheet includes calendar CTA
tracking-events.md⚪ OptionalWhen tracking engagement events

🔴 Always read bottom-sheet-engine.md + trigger-system.md first.


🧭 Quick Decision Tree

"I need an engagement popup"

├─ Booking / Appointment
│  └─ bottom-sheet-engine + calendar-integration + cm-booking-calendar
│     └─ Form → Sheet: cm-google-form
│     └─ Post-submit: Calendar CTA (GCal + ICS)

├─ Lead Capture / Exit Intent
│  └─ bottom-sheet-engine + trigger-system (exit-intent)
│     └─ Form → Sheet: cm-google-form
│     └─ Tracking: cro_lead_capture

├─ Flash Sale / Promo
│  └─ bottom-sheet-engine + trigger-system (timer)
│     └─ Countdown timer + CTA
│     └─ Optional: Calendar deadline

├─ Survey / Feedback
│  └─ bottom-sheet-engine + trigger-system (post-interaction)
│     └─ Star rating or NPS
│     └─ Form → Sheet: cm-google-form

├─ Event / Webinar Registration
│  └─ bottom-sheet-engine + calendar-integration
│     └─ Register → Add to Calendar
│     └─ Tracking: cro_event_register

├─ Re-engagement (Return Visitor)
│  └─ bottom-sheet-engine + trigger-system (return-visitor)
│     └─ "Welcome back" + personalized CTA

└─ Chat / Contact CTA
   └─ bottom-sheet-engine + trigger-system (scroll)
      └─ Zalo / Messenger / Hotline buttons

📋 6-Phase Workflow

Phase 1: DISCOVER → Scan site, detect industry, identify existing popups/forms
Phase 2: SOCRATIC GATE → Ask strategic questions (max 5)
Phase 3: CONFIGURE → Select engagement pattern + customize
Phase 4: BUILD → Generate bottom sheet + triggers + calendar + tracking
Phase 5: INTEGRATE → Wire to site + link skills
Phase 6: VERIFY → Test all interactions + tracking events

🔴 Rule: NEVER skip Phase 1 & 2. Always scan first, ask second.


Phase 1: DISCOVER

Scan the website to understand:

bash
# Find existing popups/modals/sheets
grep -ri "modal\|popup\|bottom-sheet\|overlay\|dialog" --include="*.html" --include="*.astro" --include="*.css" .

# Find existing forms
grep -ri "data-form-type\|onsubmit\|<form" --include="*.html" --include="*.astro" .

# Find existing calendar code
grep -ri "VCALENDAR\|google.com/calendar\|\.ics\|VEVENT" --include="*.js" --include="*.html" .

# Find existing tracking
grep -ri "dataLayer\|fbq\|ttq\|gtag" --include="*.js" --include="*.html" .

Output: Discovery Report with detected industry, existing UI, and recommended pattern.


Phase 2: SOCRATIC GATE

🔴 MANDATORY. Ask ALL in ONE message. Max 5 questions.

  1. Mục tiêu chính — Bạn muốn popup/bottom sheet để làm gì? (đặt lịch / thu lead / khuyến mãi / survey / khác)
  2. Trigger — Khi nào hiện? (ngay khi vào trang / scroll X% / sau X giây / khi sắp thoát / click nút)
  3. Nội dung — Trong popup cần gì? (form / calendar CTA / countdown / rating / nút chat)
  4. Calendar — Có cần thêm Google Calendar / Apple Calendar không? Nhắc trước bao lâu?
  5. Tracking — Đang chạy ads platform nào? (Facebook / TikTok / Google / không)

Phase 3: CONFIGURE

Based on answers, select from references/engagement-patterns.md and build config:

javascript
const ENGAGEMENT_CONFIG = {
  type: 'booking',           // booking | lead | promo | survey | event | chat | reengagement
  trigger: {
    type: 'scroll',          // scroll | time | exit | click | return | interaction
    value: 0.3,              // scroll % or ms or selector
    delay: 0,                // additional delay after trigger
  },
  sheet: {
    size: 'standard',        // compact | standard | full
    title: 'Đặt Lịch Khám',
    icon: '📅',
    dismissible: true,
    swipeToDismiss: true,
  },
  calendar: {
    enabled: true,
    providers: ['gcal', 'ics'],  // gcal | ics | outlook
    reminderMinutes: [1440, 120], // 1 day + 2 hours before
    location: 'Google Maps URL',
  },
  tracking: {
    events: ['cro_sheet_shown', 'cro_booking_submit', 'cro_calendar_add'],
    conversionValue: 500000,
    currency: 'VND',
  },
  session: {
    dismissKey: 'eng_booking_dismissed',
    storage: 'sessionStorage',   // sessionStorage | localStorage
    maxShowPerSession: 1,
  }
};

Phase 4: BUILD

Read and use templates from templates/ directory:

TemplatePurpose
templates/bottom-sheet.cssUniversal responsive bottom sheet CSS
templates/bottom-sheet.jsBottomSheetEngine class — create, show, hide, swipe, stack
templates/calendar-cta.jsCalendar button generators (GCal + ICS + device detection)
templates/trigger-manager.jsTriggerManager class — scroll, time, exit, click triggers
templates/tracking-events.jsDataLayer push helpers for engagement events

Phase 5: INTEGRATE

Wire to Existing Skills

cm-growth-hacking (this skill)

├── UI Layer ──────────── templates/bottom-sheet.css + .js

├── Form Submit ───────── @skills/cm-google-form
│   └── submitToGoogleSheet() → success callback → show calendar CTA

├── Calendar Logic ────── @skills/cm-booking-calendar
│   └── calendar-engine.js (scheduling)
│   └── calendar-export.js (ICS + GCal deep link)
│   └── reminder-config.js (VALARM + industry patterns)

├── CRO Tracking ──────── @skills/cm-ads-tracker
│   └── dataLayer.push() → GTM → FB/TikTok/Google

└── Design Principles ─── @skills/cm-ux-master
    └── Color, typography, animation standards

Phase 6: VERIFY

#Test CaseExpected
1Bottom sheet opensSlides up with animation
2Swipe down to dismissSheet closes + state saved
3Trigger fires correctlySheet appears at configured trigger
4Form submit (if applicable)Toast success → Calendar CTA appears
5Google Calendar clickNew tab with pre-filled event
6ICS download click.ics file downloads
7.ics on iOSOpens Apple Calendar with reminders
8Tracking events firedataLayer shows correct events
9Session dismiss worksSheet doesn't reappear after dismiss
10Mobile responsiveSheet adapts to viewport
11Accessibilityaria-labels, focus trap, Escape key
12No conflict with existing UIDoesn't break page layout

❌ Anti-Patterns

❌ Don't✅ Do
Hardcode content in sheetUse config object
Show popup immediately on page loadUse trigger system with delay
No dismiss optionAlways allow close + swipe
Forget mobile safe-areaPad for notched devices
Skip trackingTrack every interaction
One-size-fits-all sheetUse compact/standard/full variants
Autoplay anythingRequire user interaction
Show on every page visitRespect session/localStorage dismiss
Build calendar logic from scratchInherit from cm-booking-calendar
Build tracking from scratchInherit from cm-ads-tracker

📑 Templates

FilePurpose
templates/bottom-sheet.cssUniversal bottom sheet CSS (3 sizes)
templates/bottom-sheet.jsBottomSheetEngine class
templates/calendar-cta.jsCalendar CTA buttons + auto device route
templates/trigger-manager.jsTriggerManager class
templates/tracking-events.jsEngagement tracking helpers

📚 References

FilePurpose
references/engagement-patterns.md10+ engagement patterns by industry

NeedSkill
Calendar scheduling + export@[skills/cm-booking-calendar]
Form → Google Sheet@[skills/cm-google-form]
Full CRO tracking setup@[skills/cm-ads-tracker]
Audio engagement@[skills/cm-readit]
UI/UX design principles@[skills/cm-ux-master]

Open Source AI Agent Skills Framework