RevOps

01What is it?
When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes. The value is a focused slice of go-to-market work judgment, useful when several similar skills cover the same ground.
02Inputs
Context for go-to-market work: your goals, audience, constraints, and any source material the skill asks for.
03Output
A ready-to-use result for go-to-market work: the analysis, copy, or recommendations the agent produces.
Install-only

Install as a package

Installs this one skill package for your coding agent, including any supporting files that skill ships with — not every skill in the repository. Read the tutorial.

Terminal
$ npx skills add preslandallan-ui/marketingskills --skill revops

Skill instructions

The instruction file for this skill. The skill also includes other files you need to install to use it.

SKILL.md

RevOps

You are an expert in revenue operations. Your goal is to help design and optimize the systems that connect marketing, sales, and customer success into a unified revenue engine.

Before Starting

Check for product marketing context first: If .agents/product-marketing-context.md exists (or .claude/product-marketing-context.md in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.

Gather this context (ask if not provided):

  1. GTM motion — Product-led (PLG), sales-led, or hybrid?
  2. ACV range — What's the average contract value?
  3. Sales cycle length — Days from first touch to closed-won?
  4. Current stack — CRM, marketing automation, scheduling, enrichment tools?
  5. Current state — How are leads managed today? What's working and what's not?
  6. Goals — Increase conversion? Reduce speed-to-lead? Fix handoff leaks? Build from scratch?

Work with whatever the user gives you. If they have a clear problem area, start there. Don't block on missing inputs — use what you have and note what would strengthen the solution.


Core Principles

Single Source of Truth

One system of record for every lead and account. If data lives in multiple places, it will conflict. Pick a CRM as the canonical source and sync everything to it.

Define Before Automate

Get stage definitions, scoring criteria, and routing rules right on paper before building workflows. Automating a broken process just creates broken results faster.

Measure Every Handoff

Every handoff between teams is a potential leak. Marketing-to-sales, SDR-to-AE, AE-to-CS — each needs an SLA, a tracking mechanism, and someone accountable for follow-through.

Revenue Team Alignment

Marketing, sales, and customer success must agree on definitions. If marketing calls something an MQL but sales won't work it, the definition is wrong. Alignment meetings aren't optional.


Lead Lifecycle Framework

Stage Definitions

StageEntry CriteriaExit CriteriaOwner
SubscriberOpts in to content (blog, newsletter)Provides company info or shows engagementMarketing
LeadIdentified contact with basic infoMeets minimum fit criteriaMarketing
MQLPasses fit + engagement thresholdSales accepts or rejects within SLAMarketing
SQLSales accepts and qualifies via conversationOpportunity created or recycledSales (SDR/AE)
OpportunityBudget, authority, need, timeline confirmedClosed-won or closed-lostSales (AE)
CustomerClosed-won dealExpands, renews, or churnsCS / Account Mgmt
EvangelistHigh NPS, referral activity, case studyOngoing program participationCS / Marketing

MQL Definition

An MQL requires both fit and engagement:

  • Fit score — Does this person match your ICP? (company size, industry, role, tech stack)
  • Engagement score — Have they shown buying intent? (pricing page, demo request, multiple visits)

Neither alone is sufficient. A perfect-fit company that never engages isn't an MQL. A student downloading every ebook isn't an MQL.

MQL-to-SQL Handoff SLA

Define response times and document them:

  • MQL alert sent to assigned rep
  • Rep contacts within 4 hours (business hours)
  • Rep qualifies or rejects within 48 hours
  • Rejected MQLs go to recycling nurture with reason code

For complete lifecycle stage templates and SLA examples: See references/lifecycle-definitions.md


Lead Scoring

Scoring Dimensions

Explicit scoring (fit) — Who they are:

  • Company size, industry, revenue
  • Job title, seniority, department
  • Tech stack, geography

Implicit scoring (engagement) — What they do:

  • Page visits (especially pricing, demo, case studies)
  • Content downloads, webinar attendance
  • Email engagement (opens, clicks)
  • Product usage (for PLG)

Negative scoring — Disqualifying signals:

  • Competitor email domains
  • Student/personal email
  • Unsubscribes, spam complaints
  • Job title mismatches (intern, student)

Building a Scoring Model

  1. Define your ICP attributes and weight them
  2. Identify high-intent behavioral signals from closed-won data
  3. Set point values for each attribute and behavior
  4. Set MQL threshold (typically 50-80 points on a 100-point scale)
  5. Test against historical data — does the model correctly identify past wins?
  6. Launch, measure, and recalibrate quarterly

Common Scoring Mistakes

  • Weighting content downloads too heavily (research ≠ buying intent)
  • Not including negative scoring (lets bad leads through)
  • Setting and forgetting (buyer behavior changes; recalibrate quarterly)
  • Scoring all page visits equally (pricing page ≠ blog post)

For detailed scoring templates and example models: See references/scoring-models.md


Lead Routing

Routing Methods

MethodHow It WorksBest For
Round-robinDistribute evenly across repsEqual territories, similar deal sizes
Territory-basedAssign by geography, vertical, or segmentRegional teams, industry specialists
Account-basedNamed accounts go to named repsABM motions, strategic accounts
Skill-basedRoute by deal complexity, product line, or languageDiverse product lines, global teams

Routing Rules Essentials

  • Route to the most specific match first, then fall back to general
  • Include a fallback owner — unassigned leads go cold fast and waste pipeline
  • Round-robin should account for rep capacity and availability (PTO, quota attainment)
  • Log every routing decision for audit and optimization

Speed-to-Lead

Response time is the single biggest factor in lead conversion:

  • Contact within 5 minutes = 21x more likely to qualify (Lead Connect)
  • After 30 minutes, conversion drops by 10x
  • After 24 hours, the lead is effectively cold

Build routing rules that prioritize speed. Alert reps immediately. Escalate if SLA is missed.

For routing decision trees and platform-specific setup: See references/routing-rules.md


Pipeline Stage Management

Pipeline Stages

StageRequired FieldsExit Criteria
QualifiedContact info, company, source, fit scoreDiscovery call scheduled
DiscoveryPain points, current solution, timelineNeeds confirmed, demo scheduled
Demo/EvaluationTechnical requirements, decision makersPositive evaluation, proposal requested
ProposalPricing, terms, stakeholder mapProposal delivered and reviewed
NegotiationRedlines, approval chain, close dateTerms agreed, contract sent
Closed WonSigned contract, payment termsHandoff to CS complete
Closed LostLoss reason, competitor (if any)Post-mortem logged

Stage Hygiene

  • Required fields per stage — Don't let reps advance a deal without filling in required data
  • Stale deal alerts — Flag deals that sit in a stage beyond the average time (e.g., 2x average days)
  • Stage skip detection — Alert when deals jump stages (Qualified → Proposal skipping Discovery)
  • Close date discipline — Push dates must include a reason; no silent pushes

Pipeline Metrics

MetricWhat It Tells You
Stage conversion ratesWhere deals die
Average time in stageWhere deals stall
Pipeline velocityRevenue per day through the funnel
Coverage ratioPipeline value vs. quota (target 3-4x)
Win rate by sourceWhich channels produce real revenue

CRM Automation Workflows

Essential Automations

  • Lifecycle stage updates — Auto-advance stages when criteria are met
  • Task creation on handoff — Create follow-up task when MQL assigned to rep
  • SLA alerts — Notify manager if rep misses response time SLA
  • Deal stage triggers — Auto-send proposals, update forecasts, notify CS on close

Marketing-to-Sales Automations

  • MQL alert — Instant notification to assigned rep with lead context
  • Meeting booked — Notify AE when prospect books via scheduling tool
  • Lead activity digest — Daily summary of high-intent actions by active leads
  • Re-engagement trigger — Alert sales when a dormant lead returns to site

Calendar Scheduling Integration

  • Round-robin scheduling — Distribute meetings evenly across team
  • Routing by criteria — Send enterprise leads to senior AEs, SMB to junior reps
  • Pre-meeting enrichment — Auto-populate CRM record before the call
  • No-show workflows — Auto-follow-up if prospect misses meeting

For platform-specific workflow recipes: See references/automation-playbooks.md


Deal Desk Processes

When You Need a Deal Desk

  • ACV above $25K (or your threshold for non-standard deals)
  • Non-standard payment terms (net-90, quarterly billing)
  • Multi-year contracts with custom pricing
  • Volume discounts beyond published tiers
  • Custom legal terms or SLAs

Approval Workflow Tiers

Deal SizeApproval Required
Standard pricingAuto-approved
10-20% discountSales manager
20-40% discountVP Sales
40%+ discount or custom termsDeal desk review
Multi-year / enterpriseFinance + Legal

Non-Standard Terms Handling

Document every exception. Track which non-standard terms get requested most — if everyone asks for the same exception, it should become standard. Review quarterly.


Data Hygiene & Enrichment

Dedup Strategy

  • Matching rules — Email domain + company name + phone as primary match keys
  • Merge priority — CRM record wins over marketing automation; most recent activity wins for fields
  • Scheduled dedup — Run weekly automated dedup with manual review for edge cases

Required Fields Enforcement

  • Enforce required fields at each lifecycle stage
  • Block stage advancement if fields are empty
  • Use progressive profiling — don't require everything upfront

Enrichment Tools

ToolStrength
ClearbitReal-time enrichment, good for tech companies
ApolloContact data + sequences, strong for prospecting
ZoomInfoEnterprise-grade, largest B2B database

Quarterly Audit Checklist

  • Review and merge duplicates
  • Validate email deliverability on stale contacts
  • Archive contacts with no activity in 12+ months
  • Audit lifecycle stage distribution (look for bottlenecks)
  • Verify enrichment data accuracy on a sample set

RevOps Metrics Dashboard

Key Metrics

MetricFormula / DefinitionBenchmark
Lead-to-MQL rateMQLs / Total leads5-15%
MQL-to-SQL rateSQLs / MQLs30-50%
SQL-to-OpportunityOpportunities / SQLs50-70%
Pipeline velocity(# deals x avg deal size x win rate) / avg sales cycleVaries by ACV
CACTotal sales + marketing spend / new customersLTV:CAC > 3:1
LTV:CAC ratioCustomer lifetime value / CAC3:1 to 5:1 healthy
Speed-to-leadTime from form fill to first rep contact< 5 minutes ideal
Win rateClosed-won / total opportunities20-30% (varies)

Dashboard Structure

Build three views:

  1. Marketing view — Lead volume, MQL rate, source attribution, cost per MQL
  2. Sales view — Pipeline value, stage conversion, velocity, forecast accuracy
  3. Executive view — CAC, LTV:CAC, revenue vs. target, pipeline coverage

Output Format

When delivering RevOps recommendations, provide:

  1. Lifecycle stage document — Stage definitions with entry/exit criteria, owners, and SLAs
  2. Scoring specification — Fit and engagement attributes with point values and MQL threshold
  3. Routing rules document — Decision tree with assignment logic and fallbacks
  4. Pipeline configuration — Stage definitions, required fields, and automation triggers
  5. Metrics dashboard spec — Key metrics, data sources, and target benchmarks

Format each as a standalone document the user can implement directly. Include platform-specific guidance when the CRM is known.


Task-Specific Questions

  1. What CRM platform are you using (or planning to use)?
  2. How many leads per month do you generate?
  3. What's your current MQL definition?
  4. Where do leads get stuck in your funnel?
  5. Do you have SLAs between marketing and sales today?

Tool Integrations

For implementation, see the tools registry (../../tools/REGISTRY.md). Key RevOps tools:

ToolWhat It DoesGuide
HubSpotCRM, marketing automation, lead scoring, workflowshubspot.md (../../tools/integrations/hubspot.md)
SalesforceEnterprise CRM, pipeline management, reportingsalesforce.md (../../tools/integrations/salesforce.md)
CalendlyMeeting scheduling, round-robin routingcalendly.md (../../tools/integrations/calendly.md)
SavvyCalScheduling with priority-based availabilitysavvycal.md (../../tools/integrations/savvycal.md)
ClearbitReal-time lead enrichment and scoringclearbit.md (../../tools/integrations/clearbit.md)
ApolloContact data, enrichment, and outbound sequencesapollo.md (../../tools/integrations/apollo.md)
ActiveCampaignMarketing automation for SMBs, lead scoringactivecampaign.md (../../tools/integrations/activecampaign.md)
ZapierCross-tool automation and workflow gluezapier.md (../../tools/integrations/zapier.md)
IntrowPartner-sourced pipeline, commissions, deal registration, QBRsintrow.md (../../tools/integrations/introw.md)
CrossbeamPartner account overlaps and co-sell identificationcrossbeam.md (../../tools/integrations/crossbeam.md)

Related Skills

  • cold-email: For outbound prospecting emails
  • email-sequence: For lifecycle and nurture email flows
  • pricing-strategy: For pricing decisions and packaging
  • analytics-tracking: For tracking pipeline metrics and attribution
  • launch-strategy: For go-to-market launch planning
  • sales-enablement: For sales collateral, decks, and objection handling

Supporting file: evals/evals.json

{
  "skill_name": "revops",
  "evals": [
    {
      "id": 1,
      "prompt": "Help me set up our lead lifecycle stages. We're a B2B SaaS company selling to mid-market. We use HubSpot as our CRM and have marketing and sales teams that aren't aligned on lead definitions.",
      "expected_output": "Should check for product-marketing-context.md first. Should apply the lead lifecycle framework: Subscriber → Lead → MQL → SQL → Opportunity → Customer → Evangelist. Should define clear criteria for each stage transition (what makes a Lead become an MQL, etc.). Should address the alignment issue between marketing and sales — define shared definitions and SLAs. Should recommend CRM implementation steps for HubSpot. Should include lead scoring setup. Should provide a handoff process between marketing and sales.",
      "assertions": [
        "Checks for product-marketing-context.md",
        "Applies lead lifecycle framework with all stages",
        "Defines criteria for each stage transition",
        "Addresses marketing-sales alignment",
        "Provides CRM implementation guidance for HubSpot",
        "Includes lead scoring setup",
        "Provides handoff process between teams"
      ],
      "files": []
    },
    {
      "id": 2,
      "prompt": "Set up lead scoring for us. We want to prioritize which leads sales should call first. We sell enterprise software ($50k+ ACV).",
      "expected_output": "Should apply the lead scoring framework with three dimensions: explicit scoring (firmographics — company size, industry, title match), implicit scoring (behavioral — page visits, content downloads, email engagement), and negative scoring (unsubscribes, competitor emails, student emails). Should provide specific scoring criteria appropriate for enterprise ($50k+ ACV): weight firmographic signals heavily, include budget and authority signals. Should define score thresholds for MQL and SQL. Should recommend lead routing based on scores.",
      "assertions": [
        "Applies lead scoring with explicit, implicit, and negative dimensions",
        "Provides specific scoring criteria for enterprise",
        "Weights firmographic signals appropriately",
        "Includes behavioral scoring signals",
        "Includes negative scoring signals",
        "Defines MQL and SQL score thresholds",
        "Recommends lead routing based on scores"
      ],
      "files": []
    },
    {
      "id": 3,
      "prompt": "our pipeline is a mess. deals sit in stages forever and we don't know what's actually going to close. how do we fix this?",
      "expected_output": "Should trigger on casual phrasing. Should apply the pipeline stage management guidance. Should recommend: define clear pipeline stages with entry/exit criteria, set maximum time in each stage, implement stage velocity tracking, add required fields per stage to force data entry. Should address deal hygiene: regular pipeline reviews, stale deal flagging, win/loss analysis. Should recommend CRM automation to enforce stage rules. Should provide a practical cleanup plan for the current mess.",
      "assertions": [
        "Triggers on casual phrasing",
        "Applies pipeline stage management",
        "Defines stages with entry/exit criteria",
        "Recommends maximum time per stage",
        "Addresses deal hygiene and pipeline reviews",
        "Recommends CRM automation for enforcement",
        "Provides practical cleanup plan"
      ],
      "files": []
    },
    {
      "id": 4,
      "prompt": "What RevOps metrics should we be tracking? We want to build a dashboard for our leadership team.",
      "expected_output": "Should apply the RevOps metrics dashboard framework. Should recommend metrics across the funnel: lead volume by source, MQL-to-SQL conversion rate, SQL-to-Opportunity rate, win rate, average deal size, sales cycle length, pipeline velocity, pipeline coverage ratio, CAC, LTV, LTV:CAC ratio. Should organize metrics by audience (marketing team, sales team, leadership). Should recommend dashboard structure and cadence for reviews.",
      "assertions": [
        "Applies RevOps metrics dashboard",
        "Covers full-funnel metrics",
        "Includes conversion rates between stages",
        "Includes pipeline velocity and coverage",
        "Includes CAC, LTV, LTV:CAC",
        "Organizes by audience",
        "Recommends dashboard structure and review cadence"
      ],
      "files": []
    },
    {
      "id": 5,
      "prompt": "Our CRM data is a disaster. Duplicate records, missing fields, inconsistent naming. How do we clean it up and keep it clean?",
      "expected_output": "Should apply the data hygiene guidance. Should recommend: duplicate detection and merging strategy, required field enforcement, standardized naming conventions (picklists over free text), data validation rules, regular audit cadence. Should address both cleanup (one-time fix) and prevention (ongoing processes). Should recommend CRM automation for data hygiene. Should provide a prioritized cleanup plan (start with highest-impact data quality issues).",
      "assertions": [
        "Applies data hygiene guidance",
        "Recommends duplicate detection and merging",
        "Recommends required field enforcement",
        "Addresses standardized naming conventions",
        "Covers both cleanup and prevention",
        "Recommends CRM automation for hygiene",
        "Provides prioritized cleanup plan"
      ],
      "files": []
    },
    {
      "id": 6,
      "prompt": "Can you help me write cold outreach emails to prospects in our pipeline?",
      "expected_output": "Should recognize this is a cold email / outbound writing task, not RevOps. Should defer to or cross-reference the cold-email skill for writing outbound prospecting emails. RevOps covers the systems, processes, and data infrastructure — not the actual email content.",
      "assertions": [
        "Recognizes this as cold email writing, not RevOps",
        "References or defers to cold-email skill",
        "Explains RevOps covers systems and processes, not email content"
      ],
      "files": []
    }
  ]
}

Supporting file: references/automation-playbooks.md

Automation Playbooks

Platform-specific workflow recipes for HubSpot, Salesforce, scheduling tools, and cross-tool automation.

HubSpot Workflow Recipes

1. MQL Alert and Assignment

Name: MQL Notification and Task Creation Trigger: Contact property "Lifecycle Stage" is changed to "Marketing Qualified Lead" Actions:

  1. Rotate contact owner among sales team (round-robin)
  2. Send internal email notification to contact owner with lead context
  3. Create task: "Follow up with [Contact Name]" — due in 4 hours
  4. Send Slack notification to #sales-alerts channel
  5. Enroll in "MQL Follow-Up" sequence (if using HubSpot Sequences) Outcome: Every MQL gets assigned instantly with a clear SLA Notes: Set enrollment criteria to exclude leads already owned by a rep

2. MQL SLA Escalation

Name: MQL SLA Breach Alert Trigger: Contact property "Lifecycle Stage" equals "MQL" AND "Days since last contacted" is greater than 0.5 (12 hours) Actions:

  1. Send internal email to contact owner: "SLA warning: [Contact Name] has not been contacted"
  2. If still no activity after 24 hours → send alert to sales manager
  3. If still no activity after 48 hours → reassign contact owner via rotation
  4. Create task for new owner: "Urgent: Contact [Contact Name] — reassigned due to SLA breach" Outcome: No MQL goes unworked for more than 48 hours Notes: Exclude contacts where last activity type is "Call" or "Meeting" (already engaged)

3. Lead Scoring Update and MQL Promotion

Name: Auto-MQL on Score Threshold Trigger: Contact property "HubSpot Score" is greater than or equal to 65 Actions:

  1. Set lifecycle stage to "Marketing Qualified Lead"
  2. Set "MQL Date" to current date
  3. Suppress from marketing nurture workflows
  4. Trigger MQL Alert workflow (recipe #1) Outcome: Leads automatically promote to MQL when they hit the scoring threshold Notes: Add suppression list for existing customers and competitors

4. Meeting Booked Notification

Name: Meeting Booked Alert to AE Trigger: Meeting activity is logged for contact (via Calendly/HubSpot meetings) Actions:

  1. Send internal email to contact owner with meeting details
  2. Update contact property "Last Meeting Booked" to current date
  3. If lifecycle stage is "Lead" → update to "MQL"
  4. Create task: "Prepare for meeting with [Contact Name]" — due 1 hour before meeting
  5. Send Slack notification to #meetings channel Outcome: AEs are prepared for every meeting with full context Notes: Include recent page views and content downloads in notification email

5. Closed-Won Handoff to CS

Name: Customer Onboarding Trigger Trigger: Deal stage is changed to "Closed Won" Actions:

  1. Update associated contact lifecycle stage to "Customer"
  2. Set "Customer Since" date to current date
  3. Assign contact owner to CS team member (based on segment/territory)
  4. Create task for CS: "Schedule kickoff call with [Company Name]" — due in 2 business days
  5. Enroll contact in "Customer Onboarding" email sequence
  6. Send internal notification to CS manager
  7. Remove from all sales sequences Outcome: Seamless handoff from sales to customer success Notes: Include deal notes, contract value, and key stakeholders in CS notification

6. Stale Deal Alert

Name: Pipeline Hygiene — Stale Deal Detection Trigger: Deal property "Days in current stage" is greater than [2x average for that stage] Actions:

  1. Send internal email to deal owner: "Deal stale alert: [Deal Name] has been in [Stage] for [X] days"
  2. Create task: "Update or close [Deal Name]" — due in 3 business days
  3. If no update after 7 days → alert sales manager
  4. Add to "Stale Deals" dashboard list Outcome: Pipeline stays clean and forecast stays accurate Notes: Customize thresholds per stage (Discovery: 14 days, Proposal: 10 days, Negotiation: 21 days)

7. Recycled Lead Nurture Re-Entry

Name: MQL Recycling to Nurture Trigger: Contact property "Sales Rejection Reason" is known (any value) Actions:

  1. Update lifecycle stage to "Recycled"
  2. Reset engagement score to baseline (keep fit score)
  3. Enroll in "Recycled Lead Nurture" sequence (lower frequency)
  4. Set "Recycle Date" to current date
  5. Set re-enrollment trigger: if HubSpot Score exceeds threshold again, re-trigger MQL workflow Outcome: Rejected leads get a second chance without clogging the pipeline Notes: Track recycled-to-MQL conversion rate as a separate metric

8. Lead Activity Digest

Name: Daily Lead Activity Summary Trigger: Scheduled — daily at 8:00 AM local time Actions:

  1. Filter contacts: lifecycle stage is "SQL" or "Opportunity" AND had website activity in last 24 hours
  2. Send digest email to each contact owner with their leads' activity
  3. Include: pages visited, content downloaded, emails opened/clicked Outcome: Sales reps start each day knowing which leads are active Notes: Only include leads with meaningful activity (exclude single homepage visits)

Salesforce Flow Equivalents

1. MQL Alert and Assignment (Salesforce Flow)

Type: Record-Triggered Flow Object: Lead Trigger: Lead field "Status" is changed to "MQL" Flow steps:

  1. Get Records: Query "Rep Assignment" custom object for next available rep
  2. Update Records: Set Lead Owner to assigned rep
  3. Create Records: Create Task — "Contact MQL: {Lead.Name}" with due date = NOW + 4 hours
  4. Action: Send email alert to new lead owner
  5. Update Records: Update "Rep Assignment" last-assigned timestamp Notes: Use a custom "Rep Assignment" object to manage round-robin state

2. SLA Escalation (Salesforce Flow)

Type: Scheduled-Triggered Flow Schedule: Every 4 hours during business hours Flow steps:

  1. Get Records: Leads where Status = "MQL" AND LastActivityDate < TODAY - 1
  2. Decision: Is lead older than 48 hours with no activity?
    • YES → Reassign to next rep, create urgent task, alert manager
    • NO → Send reminder email to current owner Notes: Pair with Process Builder for real-time alerts on initial assignment

3. Pipeline Stage Automation (Salesforce Flow)

Type: Record-Triggered Flow Object: Opportunity Trigger: Stage field is updated Flow steps:

  1. Decision: Which stage was it changed to?
  2. For each stage:
    • Discovery: Create task "Complete discovery questionnaire"
    • Demo: Create task "Prepare demo environment"
    • Proposal: Create task "Send proposal" + alert deal desk if ACV > $25K
    • Closed Won: Trigger CS handoff (create Case, assign CS owner, send welcome email)
    • Closed Lost: Create task "Log loss reason" + add to win/loss analysis report

4. Stale Deal Detection (Salesforce Flow)

Type: Scheduled-Triggered Flow Schedule: Daily at 7:00 AM Flow steps:

  1. Get Records: Open Opportunities where Days_In_Stage > Stage_SLA_Threshold
  2. Loop through results:
    • Create Task: "Update stale deal: {Opportunity.Name}"
    • Send email to Opportunity Owner
    • If Days_In_Stage > 2x threshold → send email to Owner's Manager
  3. Update custom field "Stale Flag" = true for dashboard visibility

Calendly / SavvyCal Integration Patterns

Round-Robin Meeting Scheduling

Calendly setup:

  1. Create a team event type with all eligible reps
  2. Distribution: "Optimize for equal distribution"
  3. Availability: Each rep manages their own calendar
  4. Buffer: 15 min before and after meetings
  5. Minimum notice: 4 hours (avoid last-minute bookings)

CRM integration:

  1. Calendly webhook fires on booking
  2. Match invitee email to CRM contact
  3. If contact exists → assign meeting to contact owner (override round-robin if owned)
  4. If new contact → create lead, assign via routing rules, log meeting
  5. Set lifecycle stage to MQL (meeting = high intent)

SavvyCal Setup

Advantages over Calendly:

  • Priority-based scheduling (prefer certain time slots)
  • Overlay calendars (show team availability in one view)
  • Personalized booking links per rep

Integration pattern:

  1. Create team scheduling link with priority rules
  2. Webhook on booking → Zapier/Make → CRM
  3. Match or create contact, assign owner, create task
  4. Send confirmation with meeting prep materials

Meeting Routing by Criteria

Booking form submitted
├─ Company size > 500? (form field)
│  ├─ YES → Route to enterprise AE calendar
│  └─ NO ↓
├─ Existing customer? (CRM lookup)
│  ├─ YES → Route to account owner's calendar
│  └─ NO ↓
└─ Round-robin across SDR team

No-Show Workflow

Trigger: Meeting time passes + no meeting notes logged within 30 minutes Actions:

  1. Wait 30 minutes after scheduled meeting time
  2. Check: Was a call or meeting logged?
    • YES → No action
    • NO → Send "Sorry we missed you" email to prospect
  3. Create task: "Reschedule with [Contact Name]" — due next business day
  4. If second no-show → flag contact and alert manager

Zapier Cross-Tool Patterns

1. New Lead → CRM + Slack + Task

Trigger: New form submission (Typeform, HubSpot, Webflow) Actions:

  1. Create/update contact in CRM
  2. Enrich with Clearbit (if available)
  3. Post to Slack #new-leads with enriched data
  4. Create task in project management tool (Asana, Linear)

2. Meeting Booked → CRM + Prep Email

Trigger: New Calendly/SavvyCal booking Actions:

  1. Find or create CRM contact
  2. Update lifecycle stage to MQL
  3. Send prep email to assigned rep (include CRM link, LinkedIn profile, recent activity)
  4. Create pre-meeting task

3. Deal Closed → Onboarding Stack

Trigger: CRM deal stage changed to "Closed Won" Actions:

  1. Create customer record in CS tool (Vitally, Gainsight, ChurnZero)
  2. Add to onboarding project template
  3. Send welcome email via email tool
  4. Create Slack channel: #customer-[company-name]
  5. Notify CS team in Slack

4. Lead Scoring → Cross-Tool Sync

Trigger: CRM lead score crosses MQL threshold Actions:

  1. Update marketing automation platform status
  2. Add to retargeting audience (Facebook, Google Ads)
  3. Trigger SDR outreach sequence
  4. Log event in analytics (Mixpanel, Amplitude)

5. SLA Breach → Multi-Channel Alert

Trigger: CRM task overdue (MQL follow-up task) Actions:

  1. Send Slack DM to rep
  2. Send email to rep
  3. If 2+ hours overdue → Slack DM to manager
  4. If 4+ hours overdue → reassign in CRM (via webhook back to CRM)

6. Weekly Pipeline Digest

Trigger: Schedule — every Monday at 8:00 AM Actions:

  1. Query CRM for pipeline summary (total value, new deals, stale deals, expected closes)
  2. Format as summary
  3. Post to Slack #sales-team
  4. Send email digest to sales leadership

Supporting file: references/lifecycle-definitions.md

Lifecycle Stage Definitions

Complete templates for lead lifecycle stages, MQL criteria by business type, SLAs, and rejection/recycling workflows.

Stage Templates

Subscriber

Entry criteria:

  • Opted in to blog, newsletter, or content updates
  • No company information required

Exit criteria:

  • Provides company information via form or enrichment
  • Visits 3+ pages in a session
  • Downloads gated content

Owner: Marketing (automated)

Actions on entry:

  • Add to newsletter nurture
  • Begin tracking engagement score

Lead

Entry criteria:

  • Identified contact with name + email + company
  • May come from form fill, enrichment, or import

Exit criteria:

  • Reaches MQL threshold (fit + engagement)
  • Manually qualified by marketing/SDR

Owner: Marketing

Actions on entry:

  • Enrich contact data (company size, industry, role)
  • Begin scoring
  • Add to relevant nurture sequence

MQL (Marketing Qualified Lead)

Entry criteria:

  • Meets fit score threshold AND engagement score threshold
  • OR triggers high-intent action (demo request, pricing page + form fill)

Exit criteria:

  • Sales accepts (becomes SQL)
  • Sales rejects (recycled to nurture with reason code)
  • No response within SLA (escalated to manager)

Owner: Marketing → Sales (handoff)

Actions on entry:

  • Instant alert to assigned sales rep
  • Create follow-up task with 4-hour SLA
  • Pause marketing nurture sequences
  • Log all recent activity for sales context

SQL (Sales Qualified Lead)

Entry criteria:

  • Sales rep has had qualifying conversation
  • Confirmed: budget, authority, need, or timeline (at least 2 of 4)

Exit criteria:

  • Opportunity created with projected value
  • Disqualified (recycled with reason code)

Owner: Sales (SDR or AE)

Actions on entry:

  • Update lifecycle stage in CRM
  • Notify AE if SDR-qualified
  • Begin sales sequence if not already in conversation

Opportunity

Entry criteria:

  • Formal opportunity created in CRM
  • Deal value, close date, and stage assigned

Exit criteria:

  • Closed-won or closed-lost

Owner: Sales (AE)

Actions on entry:

  • Add to pipeline reporting
  • Create deal tasks (proposal, demo, etc.)
  • Notify CS if deal is likely to close

Customer

Entry criteria:

  • Closed-won deal
  • Contract signed and payment terms set

Exit criteria:

  • Churns, expands, or renews

Owner: Customer Success / Account Management

Actions on entry:

  • Trigger onboarding sequence
  • Assign CS manager
  • Schedule kickoff call
  • Remove from all sales sequences

Evangelist

Entry criteria:

  • NPS score 9-10, or active referral behavior
  • Agreed to case study, testimonial, or referral program

Exit criteria:

  • Ongoing program participation

Owner: Customer Success + Marketing

Actions on entry:

  • Add to advocacy program
  • Request case study or testimonial
  • Invite to referral program
  • Feature in marketing campaigns (with permission)

MQL Criteria Templates by Business Type

PLG (Product-Led Growth)

Fit score (40% weight):

AttributePoints
Company size 10-500+15
Company size 500-5000+20
Target industry+10
Decision-maker role+15
Uses complementary tool+10

Engagement score (60% weight) — weight product usage heavily:

SignalPoints
Created free account+15
Completed onboarding+20
Used core feature 3+ times+25
Invited team member+20
Hit usage limit+15
Visited pricing page+10

MQL threshold: 65 points


Sales-Led (Enterprise)

Fit score (60% weight) — weight fit heavily:

AttributePoints
Company size 500++20
Target industry+15
VP+ title+20
Budget authority confirmed+15
Uses competitor product+10

Engagement score (40% weight):

SignalPoints
Requested demo+25
Attended webinar+10
Downloaded whitepaper+10
Visited pricing page 2+ times+15
Engaged with sales email+10

MQL threshold: 70 points


Mid-Market (Balanced)

Fit score (50% weight):

AttributePoints
Company size 50-1000+15
Target industry+10
Manager+ title+15
Target geography+10

Engagement score (50% weight):

SignalPoints
Demo request+25
Free trial signup+20
Pricing page visit+10
Content download (2+)+10
Email click (3+)+10
Webinar attendance+10

MQL threshold: 60 points


SLA Templates

MQL-to-SQL SLA

MetricTargetEscalation
First contact attemptWithin 4 business hoursAlert to sales manager at 4 hours
Qualification decisionWithin 48 hoursAuto-escalate at 48 hours
Meeting scheduled (if qualified)Within 5 business daysWeekly pipeline review flag

SQL-to-Opportunity SLA

MetricTargetEscalation
Discovery call completedWithin 3 business days of SQLAlert to AE manager
Opportunity createdWithin 5 business days of SQLPipeline review flag

Opportunity-to-Close SLA

MetricTargetEscalation
Proposal deliveredWithin 5 business days of demoAE manager alert
Deal stale in stage2x average days for that stagePipeline review flag
Close date pushed 2+ timesImmediateForecast review required

Lead Rejection and Recycling

Rejection Reason Codes

CodeReasonRecycle Action
FIT-01Company too smallNurture; re-score if company grows
FIT-02Wrong industryArchive; do not recycle
FIT-03Wrong role / no authorityNurture; monitor for org changes
ENG-01No response after 3 attemptsRecycle to nurture in 90 days
ENG-02Interested but bad timingRecycle to nurture; re-engage in 60 days
QUAL-01No budgetRecycle to nurture in 90 days
QUAL-02Using competitor, locked inRecycle; trigger before contract renewal
QUAL-03Not a real projectArchive; do not recycle

Recycling Workflow

  1. Sales rejects MQL with reason code
  2. CRM updates lifecycle stage to "Recycled"
  3. Lead enters recycling nurture sequence (different from original nurture)
  4. Engagement score resets to baseline (keep fit score)
  5. If lead re-engages and crosses MQL threshold, re-route to sales with "Recycled MQL" flag
  6. Track recycled MQL conversion rate separately

Recycling Nurture Sequence

  • Frequency: Bi-weekly or monthly (lower frequency than initial nurture)
  • Content: Industry insights, case studies, product updates
  • Duration: 6 months, then archive if no engagement
  • Re-MQL trigger: High-intent action (demo request, pricing page revisit)

Supporting file: references/routing-rules.md

Lead Routing Rules

Decision trees, platform-specific configurations, territory routing, ABM routing, and speed-to-lead benchmarks.

Routing Decision Tree

Use this template to map your routing logic:

New Lead Arrives
│
├─ Is this a named/target account?
│  ├─ YES → Route to assigned account owner
│  └─ NO ↓
│
├─ Is ACV likely > $50K? (based on company size + industry)
│  ├─ YES → Route to enterprise AE team
│  └─ NO ↓
│
├─ Is this a PLG signup with team usage?
│  ├─ YES → Route to PLG sales specialist
│  └─ NO ↓
│
├─ Does lead match a territory?
│  ├─ YES → Route to territory owner
│  └─ NO ↓
│
└─ Default: Round-robin across available reps
   └─ If no rep available: Assign to team queue with 1-hour SLA

Customize this tree for your business. The key principle: route to the most specific match first, fall back to general.


Round-Robin Configuration

Basic Round-Robin Rules

  1. Distribute leads evenly across eligible reps
  2. Skip reps who are on PTO, at capacity, or have a full pipeline
  3. Weight by quota attainment (reps below quota get slight priority)
  4. Reset distribution count weekly or monthly
  5. Log every assignment for auditing

HubSpot Round-Robin Setup

Using HubSpot's rotation tool:

  • Navigate to Automation → Workflows
  • Trigger: Contact property "Lifecycle Stage" equals "MQL"
  • Action: Rotate contact owner among selected users
  • Options: Even distribution, skip unavailable owners
  • Add delay + task creation after assignment

Custom rotation with workflows:

  1. Create a custom property "Rotation Counter" (number)
  2. Workflow trigger: New MQL created
  3. Branch by rotation counter value (0, 1, 2... for each rep)
  4. Set contact owner to corresponding rep
  5. Increment counter (reset at max)
  6. Create follow-up task with SLA deadline

Salesforce Round-Robin Setup

Using Lead Assignment Rules:

  1. Setup → Feature Settings → Marketing → Lead Assignment Rules
  2. Create rule entries in priority order (most specific first)
  3. For round-robin: Use assignment rule + custom logic

Using Flow for advanced routing:

  1. Create a Record-Triggered Flow on Lead creation
  2. Get Records: Query a custom "Rep Queue" object for next available rep
  3. Decision element: Check rep availability, capacity, territory
  4. Update Records: Assign lead owner
  5. Create Task: Follow-up task with SLA
  6. Update "Rep Queue" to track last assignment

Territory Routing

By Geography

TerritoryRegionsAssigned Team
WestCA, WA, OR, NV, AZ, UT, CO, HITeam West
CentralTX, IL, MN, MO, OH, MI, WI, INTeam Central
EastNY, MA, PA, NJ, CT, VA, FL, GATeam East
InternationalAll non-USInternational team

By Company Size

SegmentCompany SizeTeam
SMB1-50 employeesInside sales
Mid-market51-500 employeesMid-market AEs
Enterprise501-5000 employeesEnterprise AEs
Strategic5000+ employeesStrategic account team

By Industry

VerticalIndustriesSpecialist
TechSaaS, IT services, hardwareTech vertical rep
FinancialBanking, insurance, fintechFinancial vertical rep
HealthcareHospitals, pharma, healthtechHealthcare vertical rep
GeneralAll othersGeneral pool (round-robin)

Hybrid Territory Model

Combine multiple dimensions for precision:

Lead arrives
├─ Company size > 1000?
│  ├─ YES → Enterprise team
│  │  └─ Sub-route by geography
│  └─ NO ↓
├─ Industry = Healthcare or Financial?
│  ├─ YES → Vertical specialist
│  └─ NO ↓
└─ Round-robin across general pool
   └─ Weighted by geography preference

Named Account / ABM Routing

Setup

  1. Define target account list (typically 50-500 accounts)
  2. Assign account owners in CRM (1 rep per account)
  3. Match logic: Any lead from a target account domain routes to account owner
  4. Matching rules:
    • Email domain match (primary)
    • Company name fuzzy match (secondary, requires manual review)
    • IP-to-company resolution (tertiary, for anonymous visitors)

ABM Routing Rules

TierAccount TypeRoutingResponse SLA
Tier 1Top 20 strategic accountsNamed owner, instant alert1 hour
Tier 2Top 100 target accountsNamed owner, standard alert4 hours
Tier 3Target industry / size matchTerritory or round-robinSame business day

Multi-Contact Handling

When multiple contacts from the same account engage:

  • Route all contacts to the same account owner
  • Notify the owner of new contacts entering
  • Track account-level engagement score (sum of all contacts)
  • Trigger "buying committee" alert when 3+ contacts from one account engage

Speed-to-Lead Data

Response Time Impact on Conversion

Response TimeRelative Qualification RateNotes
Under 5 minutes21x more likely to qualifyGold standard
5-10 minutes10x more likelyStill strong
10-30 minutes4x more likelyAcceptable for most
30 min - 1 hour2x more likelyBelow best practice
1-24 hoursBaselineIndustry average
24+ hours60% lower than baselineLead is effectively cold

Source: Lead Connect, InsideSales.com

Implementing Speed-to-Lead

  1. Instant notification — Push notification + email to rep on MQL creation
  2. Auto-task with timer — Create task with 5-minute SLA countdown
  3. Escalation chain:
    • 5 min: Original rep alerted
    • 15 min: Backup rep alerted
    • 30 min: Manager alerted
    • 1 hour: Lead reassigned to next available rep
  4. Measure and report — Track actual response times weekly; recognize fast responders

Speed-to-Lead Automation

Trigger: New MQL created Actions:

  1. Assign to rep via routing rules (instant)
  2. Send push notification + email to rep
  3. Create task: "Contact [Lead Name] — 5 min SLA"
  4. Start SLA timer
  5. If no activity logged in 15 min → alert backup rep
  6. If no activity in 30 min → alert manager
  7. If no activity in 60 min → reassign via round-robin

Measuring Speed-to-Lead

Track these metrics weekly:

  • Average time to first contact (from MQL creation to first call/email)
  • Median time to first contact (less skewed by outliers)
  • % of leads contacted within SLA (target: 90%+)
  • Contact rate by time of day (identify coverage gaps)
  • Conversion rate by response time (prove the ROI of speed)

Supporting file: references/scoring-models.md

Lead Scoring Models

Detailed scoring templates, example models by business type, and calibration guidance.

Explicit Scoring Template (Fit)

Company Attributes

AttributeCriteriaPoints
Company size1-10 employees+5
11-50 employees+10
51-200 employees+15
201-1000 employees+20
1000+ employees+15 (unless enterprise-focused, then +25)
IndustryPrimary target industry+20
Secondary target industry+10
Non-target industry0
RevenueUnder $1M+5
$1M-$10M+10
$10M-$100M+15
$100M++20
GeographyPrimary market+10
Secondary market+5
Non-target market0

Contact Attributes

AttributeCriteriaPoints
Job titleC-suite (CEO, CTO, CMO)+25
VP level+20
Director level+15
Manager level+10
Individual contributor+5
DepartmentPrimary buying department+15
Adjacent department+5
Unrelated department0
SeniorityDecision maker+20
Influencer+10
End user+5

Technology Attributes

AttributeCriteriaPoints
Tech stackUses complementary tool+15
Uses competitor+10 (they understand the category)
Uses tool you replace+20
Tech maturityModern stack (cloud, SaaS-forward)+10
Legacy stack+5

Implicit Scoring Template (Engagement)

High-Intent Signals

SignalPointsDecay
Demo request+30None
Pricing page visit+20-5 per week
Free trial signup+25None
Contact sales form+30None
Case study page (2+)+15-5 per 2 weeks
Comparison page visit+15-5 per week
ROI calculator used+20-5 per 2 weeks

Medium-Intent Signals

SignalPointsDecay
Webinar registration+10-5 per month
Webinar attendance+15-5 per month
Whitepaper download+10-5 per month
Blog visit (3+ in a week)+10-5 per 2 weeks
Email click+5 per click-2 per month
Email open (3+)+5-2 per month
Social media engagement+5-2 per month

Low-Intent Signals

SignalPointsDecay
Single blog visit+2-2 per month
Newsletter open+2-1 per month
Single email open+1-1 per month
Visited homepage only+1-1 per week

Product Usage Signals (PLG)

SignalPointsDecay
Created account+15None
Completed onboarding+20None
Used core feature (3+ times)+25-5 per month inactive
Invited team member+25None
Hit usage limit+20-10 per month
Exported data+10-5 per month
Connected integration+15None
Daily active for 5+ days+20-10 per 2 weeks inactive

Negative Scoring Signals

SignalPointsNotes
Competitor email domain-50Auto-flag for review
Student email (.edu)-30May still be valid in some cases
Personal email (gmail, yahoo)-10Less relevant for B2B; adjust for SMB
Unsubscribe from emails-20Reduce engagement score
Bounce (hard)-50Remove from scoring
Spam complaint-100Remove from all sequences
Job title: Student/Intern-25Low buying authority
Job title: Consultant-10May be evaluating for client
No website visit in 90 days-15Score decay
Invalid phone number-10Data quality signal
Careers page visitor only-30Likely a job seeker

Example Scoring Models

Model 1: PLG SaaS (ACV $500-$5K)

Weight: 30% fit / 70% engagement (heavily favor product usage)

Fit criteria:

  • Company size 10-500: +15
  • Target industry: +10
  • Manager+ role: +10
  • Uses complementary tool: +10

Engagement criteria:

  • Created free account: +15
  • Completed onboarding: +20
  • Used core feature 3+ times: +25
  • Invited team member: +25
  • Hit usage limit: +20
  • Pricing page visit: +15

Negative:

  • Personal email: -10
  • No login in 14 days: -15
  • Competitor domain: -50

MQL threshold: 60 points Recalibration: Monthly (fast feedback loop with high volume)


Model 2: Enterprise Sales-Led (ACV $50K+)

Weight: 60% fit / 40% engagement (fit is critical at this ACV)

Fit criteria:

  • Company size 500+: +20
  • Revenue $50M+: +15
  • Target industry: +15
  • VP+ title: +20
  • Decision maker confirmed: +15
  • Uses competitor: +10

Engagement criteria:

  • Demo request: +30
  • Multiple stakeholders engaged: +20
  • Attended executive webinar: +15
  • Downloaded ROI guide: +10
  • Visited pricing page 2+: +15

Negative:

  • Company too small (<100): -30
  • Individual contributor only: -15
  • Competitor domain: -50

MQL threshold: 75 points Recalibration: Quarterly (longer sales cycles, smaller sample size)


Model 3: Mid-Market Hybrid (ACV $5K-$25K)

Weight: 50% fit / 50% engagement (balanced approach)

Fit criteria:

  • Company size 50-1000: +15
  • Target industry: +10
  • Manager-VP title: +15
  • Target geography: +10
  • Uses complementary tool: +10

Engagement criteria:

  • Demo request or trial signup: +25
  • Pricing page visit: +15
  • Case study download: +10
  • Webinar attendance: +10
  • Email engagement (3+ clicks): +10
  • Blog visits (5+ pages): +10

Negative:

  • Personal email: -10
  • No engagement in 30 days: -10
  • Competitor domain: -50
  • Student/intern title: -25

MQL threshold: 65 points Recalibration: Quarterly


Threshold Calibration

Setting the Initial Threshold

  1. Pull closed-won data from the last 6-12 months
  2. Retroactively score each deal using your new model
  3. Find the natural breakpoint — what score separated wins from losses?
  4. Set threshold just below where 80% of closed-won deals would have scored
  5. Validate against closed-lost — if many closed-lost score above threshold, tighten criteria

Calibration Cadence

Business TypeRecalibration FrequencyWhy
PLG / High volumeMonthlyFast feedback loop, lots of data
Mid-marketQuarterlyModerate cycle length
EnterpriseQuarterly to semi-annuallyLong cycles, small sample size

Calibration Steps

  1. Pull MQL-to-closed data for the calibration period
  2. Compare scored MQLs vs. actual outcomes:
    • High score + closed-won = correctly scored
    • High score + closed-lost = possible false positive (tighten)
    • Low score + closed-won = possible false negative (loosen)
  3. Adjust weights based on which attributes actually correlated with wins
  4. Adjust threshold if MQL volume is too high (raise) or too low (lower)
  5. Document changes and communicate to sales team

Warning Signs Your Model Needs Recalibration

  • MQL-to-SQL acceptance rate drops below 30%
  • Sales consistently rejects MQLs as "not ready"
  • High-scoring leads don't convert; low-scoring leads do
  • MQL volume spikes without corresponding revenue
  • New product/market changes since last calibration

Supporting file: tools/REGISTRY.md

Marketing Tools Registry

Quick reference for AI agents to discover tool capabilities and integration methods.

How to Use This Registry

  1. Find tools by category - Browse sections below for tools in each domain
  2. Check integration methods - See what APIs, MCPs, CLIs, or SDKs are available
  3. Read integration guides - Detailed setup and common operations in integrations/

Tool Index

ToolCategoryAPIMCPCLISDKGuide
ga4Analytics (clis/ga4.js)ga4.md (integrations/ga4.md)
mixpanelAnalytics- (clis/mixpanel.js)mixpanel.md (integrations/mixpanel.md)
amplitudeAnalytics- (clis/amplitude.js)amplitude.md (integrations/amplitude.md)
posthogAnalytics-posthog.md (integrations/posthog.md)
segmentAnalytics- (clis/segment.js)segment.md (integrations/segment.md)
adobe-analyticsAnalytics- (clis/adobe-analytics.js)adobe-analytics.md (integrations/adobe-analytics.md)
plausibleAnalytics- (clis/plausible.js)-plausible.md (integrations/plausible.md)
google-search-consoleSEO- (clis/google-search-console.js)google-search-console.md (integrations/google-search-console.md)
semrushSEO- (clis/semrush.js)-semrush.md (integrations/semrush.md)
ahrefsSEO- (clis/ahrefs.js)-ahrefs.md (integrations/ahrefs.md)
dataforseoSEO- (clis/dataforseo.js)dataforseo.md (integrations/dataforseo.md)
keywords-everywhereSEO- (clis/keywords-everywhere.js)-keywords-everywhere.md (integrations/keywords-everywhere.md)
clearbitData Enrichment- (clis/clearbit.js)clearbit.md (integrations/clearbit.md)
apolloData Enrichment- (clis/apollo.js)-apollo.md (integrations/apollo.md)
zoominfoData Enrichment (clis/zoominfo.js)-zoominfo.md (integrations/zoominfo.md)
clayData Enrichment (clis/clay.js)-clay.md (integrations/clay.md)
supermetricsData Aggregation (clis/supermetrics.js)-supermetrics.md (integrations/supermetrics.md)
couplerData Aggregation (clis/coupler.js)-coupler.md (integrations/coupler.md)
hubspotCRM-hubspot.md (integrations/hubspot.md)
salesforceCRM-salesforce.md (integrations/salesforce.md)
closeCRM- (clis/close.js)-close.md (integrations/close.md)
stripePaymentsstripe.md (integrations/stripe.md)
paddlePayments- (clis/paddle.js)paddle.md (integrations/paddle.md)
rewardfulReferral- (clis/rewardful.js)-rewardful.md (integrations/rewardful.md)
toltReferral- (clis/tolt.js)-tolt.md (integrations/tolt.md)
dub-coLinks- (clis/dub.js)dub-co.md (integrations/dub-co.md)
mention-meReferral- (clis/mention-me.js)-mention-me.md (integrations/mention-me.md)
partnerstackAffiliate- (clis/partnerstack.js)-partnerstack.md (integrations/partnerstack.md)
mailchimpEmail (clis/mailchimp.js)mailchimp.md (integrations/mailchimp.md)
customer-ioEmail- (clis/customer-io.js)customer-io.md (integrations/customer-io.md)
sendgridEmail- (clis/sendgrid.js)sendgrid.md (integrations/sendgrid.md)
resendEmail (clis/resend.js)resend.md (integrations/resend.md)
nitrosendEmail--nitrosend.md (integrations/nitrosend.md)
kitEmail- (clis/kit.js)kit.md (integrations/kit.md)
beehiivNewsletter- (clis/beehiiv.js)-beehiiv.md (integrations/beehiiv.md)
klaviyoEmail/SMS- (clis/klaviyo.js)klaviyo.md (integrations/klaviyo.md)
postmarkEmail- (clis/postmark.js)postmark.md (integrations/postmark.md)
brevoEmail/SMS- (clis/brevo.js)brevo.md (integrations/brevo.md)
activecampaignEmail/CRM- (clis/activecampaign.js)activecampaign.md (integrations/activecampaign.md)
hunterEmail Outreach- (clis/hunter.js)-hunter.md (integrations/hunter.md)
snovEmail Outreach- (clis/snov.js)-snov.md (integrations/snov.md)
lemlistEmail Outreach- (clis/lemlist.js)-lemlist.md (integrations/lemlist.md)
instantlyEmail Outreach- (clis/instantly.js)-instantly.md (integrations/instantly.md)
google-adsAds (clis/google-ads.js)google-ads.md (integrations/google-ads.md)
meta-adsAds- (clis/meta-ads.js)meta-ads.md (integrations/meta-ads.md)
linkedin-adsAds- (clis/linkedin-ads.js)-linkedin-ads.md (integrations/linkedin-ads.md)
tiktok-adsAds- (clis/tiktok-ads.js)tiktok-ads.md (integrations/tiktok-ads.md)
zapierAutomation (clis/zapier.js)zapier.md (integrations/zapier.md)
hotjarCRO- (clis/hotjar.js)-hotjar.md (integrations/hotjar.md)
optimizelyA/B Testing- (clis/optimizely.js)optimizely.md (integrations/optimizely.md)
calendlyScheduling- (clis/calendly.js)-calendly.md (integrations/calendly.md)
savvycalScheduling- (clis/savvycal.js)-savvycal.md (integrations/savvycal.md)
typeformForms- (clis/typeform.js)typeform.md (integrations/typeform.md)
intercomMessaging- (clis/intercom.js)intercom.md (integrations/intercom.md)
outreachSales Engagement (clis/outreach.js)-outreach.md (integrations/outreach.md)
crossbeamPartner Ecosystem (clis/crossbeam.js)-crossbeam.md (integrations/crossbeam.md)
introwPartner Ecosystem---introw.md (integrations/introw.md)
pendoProduct Analytics- (clis/pendo.js)-pendo.md (integrations/pendo.md)
similarwebCompetitive Intelligence- (clis/similarweb.js)-similarweb.md (integrations/similarweb.md)
firehoseCompetitive Intelligence---firehose.md (integrations/firehose.md)
sparktoroAudience Research----sparktoro.md (integrations/sparktoro.md)
rb2bVisitor Identification---rb2b.md (integrations/rb2b.md)
gongRevenue Intelligence---gong.md (integrations/gong.md)
airopsAI Content- (clis/airops.js)-airops.md (integrations/airops.md)
bufferSocial- (clis/buffer.js)-buffer.md (integrations/buffer.md)
wistiaVideo- (clis/wistia.js)-wistia.md (integrations/wistia.md)
trustpilotReviews- (clis/trustpilot.js)-trustpilot.md (integrations/trustpilot.md)
g2Reviews- (clis/g2.js)-g2.md (integrations/g2.md)
onesignalPush- (clis/onesignal.js)onesignal.md (integrations/onesignal.md)
demioWebinar- (clis/demio.js)-demio.md (integrations/demio.md)
livestormWebinar- (clis/livestorm.js)-livestorm.md (integrations/livestorm.md)
shopifyCommerce-shopify.md (integrations/shopify.md)
wordpressCMS-wordpress.md (integrations/wordpress.md)
webflowCMS-webflow.md (integrations/webflow.md)
sanityHeadless CMS-sanity.md (integrations/sanity.md)
contentfulHeadless CMS-contentful.md (integrations/contentful.md)
strapiHeadless CMS-strapi.md (integrations/strapi.md)
composioIntegration Layercomposio.md (integrations/composio.md)

By Category

Analytics

Track user behavior, measure conversions, and analyze marketing performance.

ToolBest ForMCP Available
ga4Web analytics, Google ecosystem
mixpanelProduct analytics, event tracking-
amplitudeProduct analytics, cohort analysis-
posthogOpen-source analytics, session replay-
segmentCustomer data platform, routing-
adobe-analyticsEnterprise analytics-
plausiblePrivacy-focused analytics-

Agent recommendation: Start with GA4 if using Google ecosystem. Use Mixpanel or Amplitude for deeper product analytics. Plausible for privacy-focused sites.

SEO

Search engine optimization tools for keyword research, rank tracking, and site audits.

ToolBest ForNotes
google-search-consoleFree, authoritative search dataDirect from Google
semrushCompetitive analysis, keyword researchComprehensive
ahrefsBacklink analysis, content researchBest for links
dataforseoSERP tracking, backlinks, on-page auditsComprehensive API
keywords-everywhereQuick keyword research, traffic estimatesCredit-based

Agent recommendation: Google Search Console is essential (free). Add Semrush or Ahrefs for competitive research. DataForSEO for programmatic SERP data. Keywords Everywhere for quick keyword lookups.

CRM

Customer relationship management and sales tools.

ToolBest ForCLI Available
hubspotSMB, marketing + sales alignment
salesforceEnterprise, complex sales processes
closeSMB, high-velocity sales (clis/close.js)

Agent recommendation: HubSpot for startups/SMBs. Close for high-velocity inside sales. Salesforce for enterprise.

Payments

Payment processing and subscription management.

ToolBest ForMCP Available
stripeSaaS subscriptions, developer-friendly
paddleSaaS billing with tax handling-

Agent recommendation: Stripe is the default for SaaS. Paddle for built-in tax compliance.

Referral & Affiliate

Tools for referral programs, affiliate tracking, and partner management.

ToolBest ForStripe Integration
rewardfulStripe-native affiliate programs
toltSaaS affiliate programs
mention-meEnterprise referral programs
dub-coLink tracking, attribution-
partnerstackEnterprise partner programs

Agent recommendation: Rewardful or Tolt for Stripe-based SaaS. PartnerStack for enterprise partner programs. Dub.co for link attribution.

Email

Email marketing, transactional email, and automation platforms.

ToolBest ForMCP Available
mailchimpSMB email marketing
customer-ioBehavior-based messaging-
sendgridTransactional email at scale-
resendDeveloper-friendly transactional
kitCreator/newsletter focused-
beehiivNewsletter platform-
klaviyoE-commerce email + SMS-
postmarkDeliverability-focused transactional-
brevoEmail + SMS, popular in EU-
activecampaignEmail automation + CRM-

Agent recommendation: Resend for transactional (dev-friendly). Postmark for deliverability. Customer.io for advanced automation. Kit for creators. Beehiiv for newsletters. Klaviyo for e-commerce email/SMS. ActiveCampaign for email + CRM combo.

Advertising

Paid advertising platforms and campaign management.

ToolBest ForMCP Available
google-adsSearch intent, high-intent traffic
meta-adsDemand gen, visual products, B2C-
linkedin-adsB2B, job title targeting-
tiktok-adsYounger demographics, video-

Agent recommendation: Google Ads for search intent. Meta for demand generation. LinkedIn for B2B.

Automation

Workflow automation and integration platforms.

ToolBest ForMCP Available
zapierNo-code integrations + SDK for 8,000+ apps

Agent recommendation: Zapier SDK for agents that need to interact with any app directly. Zaps for always-on automations.

CRO & A/B Testing

Conversion rate optimization, heatmaps, and experimentation.

ToolBest ForNotes
hotjarHeatmaps, recordings, surveysVisual behavior data
optimizelyA/B testing, feature flagsEnterprise experimentation

Agent recommendation: Hotjar for understanding user behavior. Optimizely for running experiments.

Scheduling

Booking and appointment scheduling tools.

ToolBest ForNotes
calendlyMeeting scheduling, lead genMost popular
savvycalPersonalized schedulingDeveloper-friendly

Agent recommendation: Calendly for general use. SavvyCal for personalized booking experiences.

Forms & Surveys

Form builders and survey platforms.

ToolBest ForNotes
typeformInteractive forms, surveysConversational UX

Agent recommendation: Typeform for engaging forms and surveys.

Messaging

In-app messaging, chat, and customer communication.

ToolBest ForNotes
intercomIn-app messaging, support, product toursFull customer platform

Agent recommendation: Intercom for in-app messaging and customer support.

Social Media

Social media scheduling, management, and analytics.

ToolBest ForNotes
bufferSocial scheduling, analyticsMulti-platform

Agent recommendation: Buffer for scheduling and analytics across social platforms.

Video

Video hosting, analytics, and engagement.

ToolBest ForNotes
wistiaVideo hosting, marketing analyticsBest for marketing video

Agent recommendation: Wistia for marketing video hosting with analytics.

Data Enrichment

Company and person data enrichment for sales and marketing.

ToolBest ForNotes
clearbitCompany/person enrichmentNow HubSpot Breeze
apolloB2B prospecting, email findingLarge database
zoominfoB2B contacts, intent dataEnterprise-grade
clayWaterfall enrichment, outbound75+ data providers

Agent recommendation: Clearbit for enrichment. Apollo for prospecting and outbound. ZoomInfo for enterprise B2B data with intent signals. Clay for waterfall enrichment across multiple providers.

Reviews

Review management and social proof platforms.

ToolBest ForNotes
trustpilotConsumer business reviewsMost recognized
g2Software/B2B reviewsBest for SaaS

Agent recommendation: Trustpilot for consumer products. G2 for B2B software.

Push Notifications

Push notification delivery platforms.

ToolBest ForNotes
onesignalMulti-channel push notificationsWeb + mobile

Agent recommendation: OneSignal for web and mobile push notifications.

Webinar

Webinar and virtual event platforms.

ToolBest ForNotes
demioMarketing webinarsSimple, focused
livestormVideo engagement, webinarsFull event platform

Agent recommendation: Demio for marketing-focused webinars. Livestorm for full event engagement.

Sales Engagement

Sales engagement and outreach automation platforms.

ToolBest ForNotes
outreachEnterprise sales engagementSequences, tasks, analytics

Agent recommendation: Outreach for enterprise sales teams managing multi-touch sequences at scale.

Product Analytics

Product analytics, feature adoption tracking, and in-app guidance.

ToolBest ForNotes
pendoFeature adoption, in-app guidesProduct-led growth

Agent recommendation: Pendo for tracking feature adoption and delivering targeted in-app guidance.

Competitive Intelligence

Traffic analytics, competitor benchmarking, and market research.

ToolBest ForNotes
similarwebWebsite traffic, competitor analysisTraffic sources, keywords

Agent recommendation: Similarweb for competitor traffic analysis and market benchmarking.

Audience Research

Audience intelligence and behavioral research tools.

ToolBest ForNotes
sparktoroAudience affinities, behavioral dataClickstream + social data

Agent recommendation: SparkToro for discovering where your ICP spends time — what they read, watch, listen to, follow, and search for. Essential for customer research, content strategy, and media buying decisions.

Visitor Identification

Website visitor de-anonymization for B2B sales and marketing.

ToolBest ForNotes
rb2bPerson-level visitor ID, intent signalsLinkedIn profiles, emails, page-level data

Agent recommendation: RB2B for identifying anonymous B2B website visitors and routing high-intent visitors to outreach tools. Pairs well with Clay for enrichment and Instantly/Lemlist for cold email.

Revenue Intelligence

Sales conversation analytics, call recording, and deal intelligence.

ToolBest ForNotes
gongCall recording, transcript analysis, deal insightsREST API, 10k API calls/day

Agent recommendation: Gong for mining sales call transcripts for customer research, competitive intelligence, and coaching insights. Essential for revenue attribution and win/loss analysis.

AI Content

AI-powered content generation and optimization platforms.

ToolBest ForNotes
airopsAI content workflows, SEO contentFlow-based automation

Agent recommendation: AirOps for building AI content workflows that generate SEO-optimized content at scale.

Partner Ecosystem

Partner data sharing, co-sell, and ecosystem management.

ToolBest ForNotes
crossbeamAccount overlaps, co-sellNow part of Reveal
introwPartner management, deal registration, QBRsMCP-enabled PRM

Agent recommendation: Crossbeam for identifying partner account overlaps and co-sell opportunities. Introw for full partner relationship management — partner pipeline, commissions, tasks, and automated business review prep.

Email Outreach

Cold email outreach and email finding tools for link building and sales prospecting.

ToolBest ForNotes
hunterEmail finding, domain searchLargest email database
snovEmail finding, drip campaignsBuilt-in sequences
lemlistCold email campaignsPersonalization features
instantlyCold email at scaleEmail warmup built-in

Agent recommendation: Hunter for finding emails. Lemlist or Instantly for sending cold email campaigns. Snov for combined finding + outreach.

Data Aggregation

Marketing data pipeline tools that connect multiple platforms for unified reporting.

ToolBest ForNotes
supermetricsCross-platform data pulling200+ connectors
couplerAutomated data flows to sheets/BIScheduled pipelines

Agent recommendation: Supermetrics for pulling data from multiple marketing platforms into unified reports. Coupler.io for automated data flows to spreadsheets and BI tools.

Commerce & CMS

E-commerce platforms and content management systems.

ToolBest ForCLI Available
shopifyE-commerce, product sales
wordpressBlogs, content sites
webflowDesign-focused marketing sites
sanityHeadless CMS, structured content
contentfulEnterprise headless CMS, multi-locale
strapiOpen-source headless CMS, self-hosted

Agent recommendation: Shopify for e-commerce. Webflow for marketing sites. WordPress for blogs. For headless CMS: Sanity for developer-flexible content, Contentful for enterprise multi-locale, Strapi for self-hosted/budget-conscious. See headless CMS guide (../skills/content-strategy/references/headless-cms.md) for selection criteria.


CLI Tools

Zero-dependency, single-file Node.js CLIs for tools that don't ship their own. See clis/README.md for install instructions and usage.

All CLIs follow a consistent pattern:

  • No dependencies — Node 18+ only, uses native fetch
  • JSON output — pipe to jq, save to file, or use in scripts
  • Env var auth — set {TOOL}_API_KEY and go
  • Consistent commands{tool} <resource> <action> [options]

MCP-Enabled Tools

These tools have Model Context Protocol servers available, enabling direct agent interaction:

  • ga4 - Google Analytics 4 data access
  • stripe - Payment and subscription management
  • mailchimp - Email campaign management
  • google-ads - Ad campaign management
  • resend - Transactional email sending
  • zapier - Workflow automation + SDK for 8,000+ app integrations
  • zoominfo - B2B contacts and intent data
  • clay - Data enrichment and outbound automation
  • supermetrics - Cross-platform marketing data
  • coupler - Marketing data pipelines
  • outreach - Sales engagement sequences
  • crossbeam - Partner ecosystem data
  • introw - Partner relationship management

To use MCP tools, ensure the appropriate MCP server is configured in your environment.

Composio Integration

Composio (integrations/composio.md) provides managed OAuth and pre-built connectors for 500+ tools via a single MCP server. It adds MCP access to tools that don't have native MCP servers, including HubSpot, Salesforce, Meta Ads, LinkedIn Ads, Google Sheets, Slack, Notion, and more.

Use Composio when you need MCP access to OAuth-heavy tools. Prefer native MCP servers (GA4, Stripe, Mailchimp, etc.) when available — they have deeper coverage.


Quick Start by Use Case

Setting up analytics tracking

  1. Read ga4.md (integrations/ga4.md) for web analytics
  2. Read segment.md (integrations/segment.md) if routing to multiple tools

Launching a referral program

  1. Read rewardful.md (integrations/rewardful.md) or tolt.md (integrations/tolt.md) for Stripe-based programs
  2. Read dub-co.md (integrations/dub-co.md) for link tracking

Setting up email automation

  1. Read customer-io.md (integrations/customer-io.md) for behavior-based automation
  2. Read resend.md (integrations/resend.md) for transactional email

Running email outreach for backlinks

  1. Read hunter.md (integrations/hunter.md) for finding emails
  2. Read lemlist.md (integrations/lemlist.md) or instantly.md (integrations/instantly.md) for sending campaigns

Running paid ads

  1. Read google-ads.md (integrations/google-ads.md) for search campaigns
  2. Read meta-ads.md (integrations/meta-ads.md) for social campaigns

Supporting file: tools/integrations/activecampaign.md

ActiveCampaign

Email marketing automation platform with CRM, contacts, deals pipeline, tags, automations, and campaign management.

Capabilities

IntegrationAvailableNotes
APIREST API v3 for contacts, deals, automations, campaigns, tags
MCP-Not available
CLIactivecampaign.js (../clis/activecampaign.js)
SDKPython, PHP, Node.js, Ruby

Authentication

  • Type: API Token
  • Header: Api-Token: {api_token}
  • Base URL: https://{yourAccountName}.api-us1.com/api/3
  • Get key: Settings > Developer tab in your ActiveCampaign account
  • Note: Each user has a unique API key. Base URL is account-specific (found in Settings > Developer).

Common Agent Operations

Get current user

GET https://{account}.api-us1.com/api/3/users/me

List contacts

GET https://{account}.api-us1.com/api/3/contacts?limit=20&offset=0

# Search by email
GET https://{account}.api-us1.com/api/3/contacts?email=user@example.com

# Search by name
GET https://{account}.api-us1.com/api/3/contacts?search=Jane

Create contact

POST https://{account}.api-us1.com/api/3/contacts

{
  "contact": {
    "email": "user@example.com",
    "firstName": "Jane",
    "lastName": "Doe",
    "phone": "+15551234567"
  }
}

Update contact

PUT https://{account}.api-us1.com/api/3/contacts/{contactId}

{
  "contact": {
    "firstName": "Updated",
    "lastName": "Name"
  }
}

Sync contact (create or update)

POST https://{account}.api-us1.com/api/3/contact/sync

{
  "contact": {
    "email": "user@example.com",
    "firstName": "Jane",
    "lastName": "Doe"
  }
}

Delete contact

DELETE https://{account}.api-us1.com/api/3/contacts/{contactId}

List all lists

GET https://{account}.api-us1.com/api/3/lists?limit=20&offset=0

Create list

POST https://{account}.api-us1.com/api/3/lists

{
  "list": {
    "name": "Newsletter",
    "stringid": "newsletter",
    "sender_url": "https://example.com",
    "sender_reminder": "You signed up for our newsletter."
  }
}

Subscribe contact to list

POST https://{account}.api-us1.com/api/3/contactLists

{
  "contactList": {
    "list": "1",
    "contact": "1",
    "status": 1
  }
}

Unsubscribe contact from list

POST https://{account}.api-us1.com/api/3/contactLists

{
  "contactList": {
    "list": "1",
    "contact": "1",
    "status": 2
  }
}

List campaigns

GET https://{account}.api-us1.com/api/3/campaigns?limit=20&offset=0

List deals

GET https://{account}.api-us1.com/api/3/deals?limit=20&offset=0

# Filter by pipeline stage
GET https://{account}.api-us1.com/api/3/deals?filters[stage]=1

Create deal

POST https://{account}.api-us1.com/api/3/deals

{
  "deal": {
    "title": "New Enterprise Deal",
    "value": 50000,
    "currency": "usd",
    "group": "1",
    "stage": "1",
    "owner": "1",
    "contact": "1"
  }
}

Update deal

PUT https://{account}.api-us1.com/api/3/deals/{dealId}

{
  "deal": {
    "stage": "2",
    "value": 75000
  }
}

List automations

GET https://{account}.api-us1.com/api/3/automations?limit=20&offset=0

Add contact to automation

POST https://{account}.api-us1.com/api/3/contactAutomations

{
  "contactAutomation": {
    "contact": "1",
    "automation": "1"
  }
}

List tags

GET https://{account}.api-us1.com/api/3/tags?limit=20&offset=0

Create tag

POST https://{account}.api-us1.com/api/3/tags

{
  "tag": {
    "tag": "VIP Customer",
    "tagType": "contact"
  }
}

Add tag to contact

POST https://{account}.api-us1.com/api/3/contactTags

{
  "contactTag": {
    "contact": "1",
    "tag": "1"
  }
}

List pipelines (deal groups)

GET https://{account}.api-us1.com/api/3/dealGroups?limit=20&offset=0

List webhooks

GET https://{account}.api-us1.com/api/3/webhooks?limit=20&offset=0

Create webhook

POST https://{account}.api-us1.com/api/3/webhooks

{
  "webhook": {
    "name": "Contact Updated",
    "url": "https://example.com/webhook",
    "events": ["subscribe", "unsubscribe"],
    "sources": ["public", "admin", "api", "system"]
  }
}

API Pattern

ActiveCampaign uses REST with resource wrapping (e.g., { "contact": {...} }). Responses include the resource object plus metadata. Related resources are managed via junction endpoints (e.g., /contactLists, /contactTags, /contactAutomations). The base URL is account-specific. Pagination uses limit and offset parameters.

Key Metrics

Contact Fields

  • email - Email address
  • firstName, lastName - Name fields
  • phone - Phone number
  • cdate - Creation date
  • udate - Last updated date
  • deals - Related deals count

Deal Fields

  • title - Deal name
  • value - Deal value in cents
  • currency - Currency code
  • stage - Pipeline stage ID
  • group - Pipeline (deal group) ID
  • owner - Assigned user ID
  • status - 0 (open), 1 (won), 2 (lost)

Campaign Metrics

  • sends - Total sends
  • opens - Opens count
  • clicks - Clicks count
  • uniqueopens - Unique opens
  • uniquelinks - Unique clicks

Parameters

Contact List Status

  • 1 - Subscribed (active)
  • 2 - Unsubscribed

Deal Status

  • 0 - Open
  • 1 - Won
  • 2 - Lost

Tag Types

  • contact - Contact tags
  • deal - Deal tags

Common Query Parameters

  • limit - Results per page (default 20)
  • offset - Skip N results
  • search - Text search
  • email - Filter contacts by email
  • filters[stage] - Filter deals by stage
  • filters[owner] - Filter deals by owner

When to Use

  • Marketing automation with complex conditional workflows
  • CRM with deal pipeline management
  • Contact management with tagging and segmentation
  • Email campaign creation and tracking
  • Triggering automations based on external events
  • B2B sales pipeline tracking integrated with marketing

Rate Limits

  • 5 requests per second per account
  • Rate limit applies across all API users on the same account
  • 429 responses include Retry-After header

Relevant Skills

  • email-sequence
  • lifecycle-marketing
  • crm-integration
  • sales-pipeline
  • marketing-automation

Supporting file: tools/integrations/apollo.md

Apollo.io

B2B prospecting and data enrichment platform with 210M+ contacts and 35M+ companies for sales intelligence.

Capabilities

IntegrationAvailableNotes
APIPeople Search, Company Search, Enrichment, Sequences
MCP-Not available
CLIapollo.js (../clis/apollo.js)
SDK-REST API only

Authentication

  • Type: API Key
  • Header: x-api-key: {api_key} or Authorization: Bearer {token}
  • Get key: Settings > Integrations > API at https://app.apollo.io

Common Agent Operations

People Search

POST https://api.apollo.io/api/v1/mixed_people/api_search

{
  "person_titles": ["Sales Manager"],
  "person_locations": ["United States"],
  "organization_num_employees_ranges": ["1,100"],
  "page": 1
}

Person Enrichment

POST https://api.apollo.io/api/v1/people/match

{
  "first_name": "Tim",
  "last_name": "Zheng",
  "domain": "apollo.io"
}

Bulk People Enrichment

POST https://api.apollo.io/api/v1/people/bulk_match

{
  "details": [
    { "email": "tim@apollo.io" },
    { "first_name": "Jane", "last_name": "Doe", "domain": "example.com" }
  ]
}

Organization Search

POST https://api.apollo.io/api/v1/mixed_companies/search

{
  "organization_locations": ["United States"],
  "organization_num_employees_ranges": ["1,100"],
  "page": 1
}

Organization Enrichment

POST https://api.apollo.io/api/v1/organizations/enrich

{
  "domain": "apollo.io"
}

Key Metrics

Person Data

  • first_name, last_name - Name
  • title - Job title
  • email - Verified email
  • linkedin_url - LinkedIn profile
  • organization - Company details
  • seniority - Seniority level
  • departments - Department list

Organization Data

  • name - Company name
  • website_url - Website
  • estimated_num_employees - Employee count
  • industry - Industry
  • annual_revenue - Revenue
  • technologies - Tech stack
  • funding_total - Total funding

Parameters

People Search

  • person_titles - Array of job titles
  • person_locations - Array of locations
  • person_seniorities - Array: owner, founder, c_suite, partner, vp, head, director, manager, senior, entry
  • organization_num_employees_ranges - Array of ranges (e.g., "1,100")
  • organization_ids - Filter by Apollo org IDs
  • page - Page number (default: 1)
  • per_page - Results per page (default: 25, max: 100)

Person Enrichment

  • email - Email address
  • first_name + last_name + domain - Alternative lookup
  • linkedin_url - LinkedIn URL
  • reveal_personal_emails - Include personal emails
  • reveal_phone_number - Include phone numbers

Organization Search

  • organization_locations - Array of locations
  • organization_num_employees_ranges - Employee count ranges
  • organization_ids - Specific org IDs
  • page - Page number

When to Use

  • Building targeted prospect lists by role, seniority, and company size
  • Enriching leads with verified contact info
  • Finding decision-makers at target accounts
  • Company research and firmographic analysis
  • ABM campaign targeting
  • Sales intelligence and outbound prospecting

Rate Limits

  • Rate limits vary by plan
  • Standard: 100 requests/minute for most endpoints
  • Bulk enrichment: up to 10 people per request
  • Search: max 50,000 records (100 per page, 500 pages)

Relevant Skills

  • abm-strategy
  • lead-enrichment
  • lead-scoring
  • cold-email
  • competitor-alternatives

Supporting file: tools/integrations/calendly.md

Calendly

Scheduling and booking platform API for managing event types, scheduled events, invitees, and availability.

Capabilities

IntegrationAvailableNotes
APIREST API v2 - event types, scheduled events, invitees, availability
MCP-Not available
CLIcalendly.js (../clis/calendly.js)
SDKNo official SDK; community libraries available

Authentication

Common Agent Operations

Get current user

GET https://api.calendly.com/users/me

List event types

GET https://api.calendly.com/event_types?user={user_uri}

List scheduled events

GET https://api.calendly.com/scheduled_events?user={user_uri}&min_start_time=2024-01-01T00:00:00Z&max_start_time=2024-12-31T23:59:59Z&status=active

Get a scheduled event

GET https://api.calendly.com/scheduled_events/{event_uuid}

List invitees for an event

GET https://api.calendly.com/scheduled_events/{event_uuid}/invitees

Cancel a scheduled event

POST https://api.calendly.com/scheduled_events/{event_uuid}/cancellation

{
  "reason": "Cancellation reason"
}

Get available times

GET https://api.calendly.com/event_type_available_times?event_type={event_type_uri}&start_time=2024-01-20T00:00:00Z&end_time=2024-01-27T00:00:00Z

Get user busy times

GET https://api.calendly.com/user_busy_times?user={user_uri}&start_time=2024-01-20T00:00:00Z&end_time=2024-01-27T00:00:00Z

List organization members

GET https://api.calendly.com/organization_memberships?organization={organization_uri}

Create webhook subscription

POST https://api.calendly.com/webhook_subscriptions

{
  "url": "https://example.com/webhook",
  "events": ["invitee.created", "invitee.canceled"],
  "organization": "{organization_uri}",
  "scope": "organization"
}

List webhook subscriptions

GET https://api.calendly.com/webhook_subscriptions?organization={organization_uri}&scope=organization

Delete webhook subscription

DELETE https://api.calendly.com/webhook_subscriptions/{webhook_uuid}

Key Metrics

Scheduled Event Data

  • uri - Unique event URI
  • name - Event type name
  • status - Event status (active, canceled)
  • start_time / end_time - Event timing
  • event_type - URI of the event type
  • location - Meeting location details
  • invitees_counter - Count of invitees (active, limit, total)

Invitee Data

  • name - Invitee full name
  • email - Invitee email
  • status - active or canceled
  • questions_and_answers - Custom question responses
  • tracking - UTM parameters
  • created_at / updated_at - Timestamps

Parameters

List Scheduled Events

  • user - User URI (required)
  • min_start_time / max_start_time - Date range filter (ISO 8601)
  • status - Filter by status (active, canceled)
  • count - Number of results (default 20, max 100)
  • page_token - Pagination token
  • sort - Sort order (start_time:asc or start_time:desc)

List Event Types

  • user - User URI
  • organization - Organization URI
  • active - Filter active/inactive
  • count - Results per page
  • sort - Sort order

When to Use

  • Retrieving scheduled meeting data for CRM sync
  • Monitoring booking activity and conversion rates
  • Automating follow-up workflows after meetings
  • Checking availability before suggesting meeting times
  • Tracking meeting cancellations and no-shows
  • Building custom booking interfaces

Rate Limits

  • Not officially documented; implement retry logic with exponential backoff
  • Use conservative request rates (avoid bursting)
  • Monitor for HTTP 429 responses

Relevant Skills

  • lead-generation
  • sales-automation
  • customer-onboarding
  • appointment-scheduling

Supporting file: tools/integrations/clearbit.md

Clearbit (HubSpot Breeze Intelligence)

Company and person data enrichment API for converting leads with 100+ firmographic and technographic attributes.

Capabilities

IntegrationAvailableNotes
APIPerson, Company, Combined Enrichment, Reveal, Name to Domain, Prospector
MCP-Not available
CLIclearbit.js (../clis/clearbit.js)
SDKNode, Ruby, Python, PHP

Authentication

Common Agent Operations

Person Enrichment (by email)

GET https://person.clearbit.com/v2/people/find?email=alex@clearbit.com

Returns 100+ attributes: name, title, company, location, social profiles, employment history.

Company Enrichment (by domain)

GET https://company.clearbit.com/v2/companies/find?domain=clearbit.com

Returns firmographics: industry, size, revenue, tech stack, location, funding.

Combined Enrichment (person + company)

GET https://person.clearbit.com/v2/combined/find?email=alex@clearbit.com

Returns both person and company data in a single request.

Reveal (IP to company)

GET https://reveal.clearbit.com/v1/companies/find?ip=104.132.0.0

Identifies the company behind a website visitor by IP address.

Name to Domain

GET https://company.clearbit.com/v1/domains/find?name=Clearbit

Converts a company name to its domain.

Prospector (find employees)

GET https://prospector.clearbit.com/v1/people/search?domain=clearbit.com&role=sales&seniority=executive

Finds employees at a company filtered by role, seniority, title.

API Pattern

Clearbit uses separate subdomains per API:

  • person.clearbit.com - Person data
  • company.clearbit.com - Company data, Name to Domain
  • person-stream.clearbit.com - Streaming person lookup (blocking, up to 60s)
  • company-stream.clearbit.com - Streaming company lookup (blocking, up to 60s)
  • reveal.clearbit.com - IP to company
  • prospector.clearbit.com - Employee search

Standard endpoints return 202 Accepted if data is being processed (use webhooks). Stream endpoints block until data is ready.

Key Metrics

Person Attributes

  • name.fullName - Full name
  • title - Job title
  • role - Job role (sales, engineering, etc.)
  • seniority - Seniority level
  • employment.name - Company name
  • linkedin.handle - LinkedIn profile

Company Attributes

  • name - Company name
  • domain - Website domain
  • category.industry - Industry
  • metrics.employees - Employee count
  • metrics.estimatedAnnualRevenue - Revenue range
  • tech - Technology stack array
  • metrics.raised - Total funding raised

Parameters

Person Enrichment

  • email (required) - Email address to look up
  • webhook_url - URL for async results
  • subscribe - Subscribe to future changes

Company Enrichment

  • domain (required) - Company domain to look up
  • webhook_url - URL for async results

Prospector

  • domain (required) - Company domain
  • role - Job role filter (sales, engineering, marketing, etc.)
  • seniority - Seniority filter (executive, director, manager, etc.)
  • title - Exact title filter
  • page - Page number (default: 1)
  • page_size - Results per page (default: 5, max: 20)

When to Use

  • Lead scoring and qualification based on firmographic data
  • Enriching CRM contacts with company and person data
  • De-anonymizing website visitors with Reveal
  • Building prospect lists with Prospector
  • Personalizing marketing based on company attributes
  • Routing leads based on company size, industry, or tech stack

Rate Limits

  • Enrichment: 600 requests/minute
  • Prospector: 100 requests/minute
  • Reveal: 600 requests/minute
  • Responses include X-RateLimit-Limit and X-RateLimit-Remaining headers

Relevant Skills

  • lead-scoring
  • personalization
  • abm-strategy
  • lead-enrichment
  • competitor-alternatives

Supporting file: tools/integrations/crossbeam.md

Crossbeam

Partner ecosystem platform (now part of Reveal) for sharing account data with partners to identify co-sell opportunities, overlapping customers, and partner-sourced pipeline.

Capabilities

IntegrationAvailableNotes
APIPartners, Populations, Overlaps, Reports, Threads
MCPClaude connector (https://claude.com/connectors/crossbeam)
CLIcrossbeam.js (../clis/crossbeam.js)
SDK-REST API only

Authentication

Common Agent Operations

List Partners

GET https://api.crossbeam.com/v1/partners
Authorization: Bearer {api_key}

Get Partner Details

GET https://api.crossbeam.com/v1/partners/{id}
Authorization: Bearer {api_key}

List Populations

GET https://api.crossbeam.com/v1/populations
Authorization: Bearer {api_key}

List Overlaps

GET https://api.crossbeam.com/v1/overlaps?partner_id={partner_id}&population_id={population_id}
Authorization: Bearer {api_key}

Get Overlap Details

GET https://api.crossbeam.com/v1/overlaps/{id}
Authorization: Bearer {api_key}

Search Accounts

GET https://api.crossbeam.com/v1/accounts/search?domain={domain}
Authorization: Bearer {api_key}

List Reports

GET https://api.crossbeam.com/v1/reports
Authorization: Bearer {api_key}

List Collaboration Threads

GET https://api.crossbeam.com/v1/threads
Authorization: Bearer {api_key}

Key Metrics

Partner Data

  • id - Partner ID
  • name - Partner company name
  • status - Partnership status (active, pending, etc.)
  • created_at - When the partnership was established
  • populations_shared - Number of shared populations

Population Data

  • id - Population ID
  • name - Population name (e.g., "Customers", "Open Opportunities")
  • record_count - Number of records in population
  • partner_visibility - What partners can see

Overlap Data

  • id - Overlap ID
  • partner_id - Partner involved
  • population_id - Population matched
  • account_name - Overlapping account name
  • overlap_type - Type of overlap (customer, prospect, etc.)
  • match_confidence - Match confidence score

Report Data

  • id - Report ID
  • name - Report name
  • type - Report type
  • created_at - Creation date
  • results - Report results data

Parameters

Overlaps List

  • partner_id - Filter by specific partner
  • population_id - Filter by specific population

Accounts Search

  • domain - Company domain to search for

When to Use

  • Identifying co-sell opportunities with channel partners
  • Finding overlapping customers and prospects across partner ecosystems
  • Building partner-sourced pipeline by matching accounts
  • Tracking partner influence on deals
  • Creating account mapping reports for partner meetings
  • Prioritizing which partners to engage based on overlap data

Rate Limits

  • Rate limits vary by plan
  • Standard: 100 requests/minute
  • Pagination supported on list endpoints

Relevant Skills

  • revops
  • sales-enablement
  • referral-program
  • competitor-alternatives

Supporting file: tools/integrations/hubspot.md

HubSpot

CRM platform for marketing, sales, and customer service.

Capabilities

IntegrationAvailableNotes
APIREST API for CRM, Marketing, Sales
MCP-Not available
CLIhs CLI for local development
SDKOfficial client libraries

Authentication

  • Type: Private App Token or OAuth 2.0
  • Header: Authorization: Bearer {access_token}
  • Get token: Settings > Integrations > Private Apps

Common Agent Operations

Get contacts

GET https://api.hubapi.com/crm/v3/objects/contacts?limit=10

Authorization: Bearer {access_token}

Search contacts

POST https://api.hubapi.com/crm/v3/objects/contacts/search

{
  "filterGroups": [{
    "filters": [{
      "propertyName": "email",
      "operator": "EQ",
      "value": "user@example.com"
    }]
  }]
}

Create contact

POST https://api.hubapi.com/crm/v3/objects/contacts

{
  "properties": {
    "email": "user@example.com",
    "firstname": "John",
    "lastname": "Doe",
    "company": "Example Inc"
  }
}

Update contact

PATCH https://api.hubapi.com/crm/v3/objects/contacts/{contact_id}

{
  "properties": {
    "lifecyclestage": "customer"
  }
}

Get deals

GET https://api.hubapi.com/crm/v3/objects/deals?limit=10&properties=dealname,amount,dealstage

Authorization: Bearer {access_token}

Create deal

POST https://api.hubapi.com/crm/v3/objects/deals

{
  "properties": {
    "dealname": "New Deal",
    "amount": "10000",
    "dealstage": "appointmentscheduled",
    "pipeline": "default"
  }
}

Associate contact with deal

PUT https://api.hubapi.com/crm/v3/objects/deals/{deal_id}/associations/contacts/{contact_id}/deal_to_contact

Get form submissions

GET https://api.hubapi.com/form-integrations/v1/submissions/forms/{form_guid}

Authorization: Bearer {access_token}

Get marketing emails

GET https://api.hubapi.com/marketing/v3/emails?limit=10

Authorization: Bearer {access_token}

CLI Commands

# Install
npm install -g @hubspot/cli

# Initialize project
hs init

# Upload files
hs upload src dest

# Watch for changes
hs watch src dest

# List portals
hs accounts list

Key Objects

  • Contacts - People in CRM
  • Companies - Organizations
  • Deals - Sales opportunities
  • Tickets - Support tickets
  • Products - Items for sale
  • Line Items - Deal line items

Common Properties

Contact Properties

  • email - Email address
  • firstname, lastname - Name
  • lifecyclestage - Funnel stage
  • hs_lead_status - Lead status

Deal Properties

  • dealname - Deal name
  • amount - Deal value
  • dealstage - Pipeline stage
  • closedate - Expected close

When to Use

  • Managing contacts and leads
  • Tracking sales deals
  • Marketing automation
  • Form submissions
  • Email campaigns
  • Customer service tickets

Rate Limits

  • 100 requests per 10 seconds
  • Higher limits on enterprise plans

Relevant Skills

  • email-sequence
  • analytics-tracking
  • referral-program

Supporting file: tools/integrations/introw.md

Introw PRM

Partner Relationship Management platform for managing channel partners, tracking partner-sourced deals, commissions, tasks, and engagement — with built-in business review generation.

Capabilities

IntegrationAvailableNotes
API-Not available
MCPFull read/write via Claude connector
CLI-Not available
SDK-Not available

Authentication

  • Type: OAuth2 (via MCP connector)
  • Setup: Connect via Claude MCP connector — no API key management needed
  • Scope: All data is scoped to the authenticated organisation

Common Agent Operations

All operations are performed via MCP tools. The following are the primary tool calls available.

Search Partners

search_partners
  dateRange: { field: "CREATED_AT" | "LAST_ACTIVITY_AT", from: "YYYY-MM-DD", to: "YYYY-MM-DD" }

Returns: partner name/ID, contact info, tier, lifecycle stage, categories, country, last activity date.

Search CRM Objects (Deals, Tickets, Leads, Companies, Contacts)

search_crm_objects
  objectType: "DEAL" | "TICKET" | "LEAD" | "COMPANY" | "CONTACT"
  stage: "OPEN" | "WON" | "LOST"
  view: "ALL" | "DUE" | "OVERDUE" | "INACTIVE"
  rollingDateFilter: { field: "CLOSED_AT", value: "THIS_QUARTER" }
  sortBy: { property: "AMOUNT", direction: "DESC" }
  limit: 10

Synonym mapping: Opportunity/Forecast → DEAL, Account → COMPANY, Case → TICKET.

Search Tasks

search_tasks
  status: "TODO" | "IN_PROGRESS" | "PENDING" | "COMPLETED" | "DONE"
  partnerId: "{partner_id}"

Search Commissions

search_commissions
  partnerId: "{partner_id}"

Returns: commission amounts, currency, payment status, associated partner and deals.

Generate Business Review (QBR/MBR/WBR)

generate_business_review
  duration: "QUARTERLY" | "MONTHLY" | "WEEKLY"
  partnerId: "{partner_id}"

Returns: pipeline & forecast analysis, form submissions overview, mutual action plan, goal tracking, timed agenda and next steps.

Search Partner Engagement

search_partner_engagement
  partnerId: "{partner_id}"
  type: "ROOM_VISIT" | "OBJECT_SHARE" | "COMMENT" | "FORM_SUBMIT" | "TASK_CREATED" | ...
  dateRange: { from: "YYYY-MM-DD", to: "YYYY-MM-DD" }

Returns: comments, deal updates, asset views, task events, portal visits, form submissions, announcements, quotes.

Add Comment to Deal/Object

add_comment
  comment: "Comment text"
  objectId: "{crm_object_id}"
  objectType: "DEAL" | "TICKET" | "LEAD" | "COMPANY" | "CONTACT"

Create or Update Tasks

add_task
  name: "Task title"
  dueDate: "2025-02-20"
  assignedTo: "PARTNER" | "ORGANISATION"
  partnerId: "{partner_id}"

update_task
  taskId: 123
  status: "TODO" | "IN_PROGRESS" | "DONE"

Update CRM Object Properties

update_crm_object
  objectId: "{crm_object_id}"
  objectType: "DEAL"
  propertiesToUpdate: { "amount": 50000, "stage": "Negotiation" }

Share Lead or Register Deal

Two-step flow:

  1. Discovery: provide objectType and callToAction to get form fields
  2. Submit: provide formId and userProvidedData to submit
share_lead_or_register_deal
  objectType: "Deal"
  callToAction: "Register Deal"
  partnerId: "{partner_id}"

Key Metrics

Partner Data

  • id - Partner ID
  • name - Partner company name
  • championEmail - Primary contact email
  • tier - Current tier level
  • lifecycleStage - Partner lifecycle stage
  • categories - Partner categories
  • country - Partner country
  • lastActivityAt - Last activity date

CRM Object Data

  • objectId - External CRM ID
  • objectType - DEAL, TICKET, LEAD, COMPANY, CONTACT
  • stage - OPEN, WON, LOST
  • amount - Deal amount
  • closeDate - Expected close date

Commission Data

  • amount - Commission amount
  • currency - Payment currency
  • paymentStatus - Current payment status
  • partnerId - Associated partner
  • dealId - Associated deal

Engagement Data

  • type - Activity type (ROOM_VISIT, COMMENT, FORM_SUBMIT, etc.)
  • partnerId - Partner involved
  • crmObjectId - Related CRM object
  • createdAt - Activity timestamp

When to Use

  • Managing channel partner relationships and tracking partner activity
  • Reviewing partner-sourced pipeline (deals, leads, opportunities)
  • Preparing QBR/MBR/WBR meetings with automated business review generation
  • Tracking partner commissions and payouts
  • Managing mutual action plans via tasks assigned to partners or internal teams
  • Processing deal registrations and lead sharing from partners
  • Monitoring partner portal engagement and content asset views

Rate Limits

  • Rate limits managed by the MCP connector
  • All data scoped to authenticated organisation

Relevant Skills

  • revops
  • sales-enablement
  • referral-program
  • competitor-alternatives

Supporting file: tools/integrations/salesforce.md

Salesforce

Enterprise CRM platform for sales, service, and marketing.

Capabilities

IntegrationAvailableNotes
APIREST API, SOAP API, Bulk API
MCP-Not available
CLISalesforce CLI (sf)
SDKJSforce, simple-salesforce, etc.

Authentication

  • Type: OAuth 2.0 (Web Server Flow or JWT Bearer)
  • Header: Authorization: Bearer {access_token}
  • Instance URL: Use instance_url from auth response

Common Agent Operations

Query records (SOQL)

GET https://{instance}.salesforce.com/services/data/v59.0/query?q=SELECT+Id,Name,Email+FROM+Contact+LIMIT+10

Authorization: Bearer {access_token}

Get record by ID

GET https://{instance}.salesforce.com/services/data/v59.0/sobjects/Contact/{record_id}

Authorization: Bearer {access_token}

Create record

POST https://{instance}.salesforce.com/services/data/v59.0/sobjects/Contact

{
  "FirstName": "John",
  "LastName": "Doe",
  "Email": "john@example.com",
  "AccountId": "{account_id}"
}

Update record

PATCH https://{instance}.salesforce.com/services/data/v59.0/sobjects/Contact/{record_id}

{
  "Title": "Senior Developer"
}

Search records (SOSL)

GET https://{instance}.salesforce.com/services/data/v59.0/search?q=FIND+{searchTerm}+IN+ALL+FIELDS+RETURNING+Contact(Id,Name,Email)

Authorization: Bearer {access_token}

Get opportunities

GET https://{instance}.salesforce.com/services/data/v59.0/query?q=SELECT+Id,Name,Amount,StageName,CloseDate+FROM+Opportunity+WHERE+IsClosed=false

Authorization: Bearer {access_token}

Describe object

GET https://{instance}.salesforce.com/services/data/v59.0/sobjects/Contact/describe

Authorization: Bearer {access_token}

CLI Commands

# Authenticate
sf org login web

# Query records
sf data query --query "SELECT Id, Name FROM Account LIMIT 10"

# Create record
sf data create record --sobject Account --values "Name='New Account'"

# Deploy metadata
sf project deploy start

# Run Apex
sf apex run --file script.apex

SOQL Examples

-- Get contacts with accounts
SELECT Id, Name, Email, Account.Name
FROM Contact
WHERE Account.Industry = 'Technology'

-- Get opportunities by stage
SELECT StageName, COUNT(Id)
FROM Opportunity
GROUP BY StageName

-- Get recent leads
SELECT Id, Name, Company, Status
FROM Lead
WHERE CreatedDate = LAST_N_DAYS:30
ORDER BY CreatedDate DESC

Key Objects

  • Lead - Potential customer
  • Contact - Person at account
  • Account - Company/organization
  • Opportunity - Sales deal
  • Case - Support ticket
  • Campaign - Marketing campaign

When to Use

  • Enterprise CRM operations
  • Complex sales processes
  • Multi-object relationships
  • Custom object management
  • Marketing campaign tracking

Rate Limits

  • 15,000 API calls per 24 hours (Enterprise)
  • Higher limits available

Relevant Skills

  • email-sequence
  • analytics-tracking
  • paid-ads

Supporting file: tools/integrations/savvycal.md

SavvyCal

Scheduling platform API for managing scheduling links, events, availability slots, and webhooks.

Capabilities

IntegrationAvailableNotes
APIREST API v1 - scheduling links, events, webhooks
MCP-Not available
CLIsavvycal.js (../clis/savvycal.js)
SDK-No official SDK

Authentication

  • Type: Bearer Token (Personal Access Token or OAuth 2.0)
  • Header: Authorization: Bearer {token}
  • Get key: Developer Settings in SavvyCal dashboard (create a Personal Access Token)

Common Agent Operations

Get current user

GET https://api.savvycal.com/v1/me

List scheduling links

GET https://api.savvycal.com/v1/scheduling-links

Get a scheduling link

GET https://api.savvycal.com/v1/scheduling-links/{id}

Create a scheduling link

POST https://api.savvycal.com/v1/scheduling-links

{
  "name": "30 Minute Meeting",
  "slug": "30min",
  "duration_minutes": 30
}

Update a scheduling link

PATCH https://api.savvycal.com/v1/scheduling-links/{id}

{
  "name": "Updated Meeting Name"
}

Delete a scheduling link

DELETE https://api.savvycal.com/v1/scheduling-links/{id}

Duplicate a scheduling link

POST https://api.savvycal.com/v1/scheduling-links/{id}/duplicate

Toggle link state (active/disabled)

POST https://api.savvycal.com/v1/scheduling-links/{id}/toggle

Get available time slots

GET https://api.savvycal.com/v1/scheduling-links/{id}/slots

List events

GET https://api.savvycal.com/v1/events

Get an event

GET https://api.savvycal.com/v1/events/{id}

Create an event

POST https://api.savvycal.com/v1/events

{
  "scheduling_link_id": "{link_id}",
  "start_at": "2024-01-20T10:00:00Z",
  "name": "John Doe",
  "email": "john@example.com"
}

Cancel an event

POST https://api.savvycal.com/v1/events/{id}/cancel

List webhooks

GET https://api.savvycal.com/v1/webhooks

Create a webhook

POST https://api.savvycal.com/v1/webhooks

{
  "url": "https://example.com/webhook",
  "events": ["event.created", "event.canceled"]
}

Key Metrics

Scheduling Link Data

  • id - Unique link identifier
  • name - Display name
  • slug - URL slug
  • duration_minutes - Meeting duration
  • state - Active or disabled
  • url - Full scheduling URL

Event Data

  • id - Unique event identifier
  • name - Invitee name
  • email - Invitee email
  • start_at / end_at - Event timing
  • status - Event status
  • scheduling_link - Associated scheduling link

Parameters

List Events

  • before / after - Pagination cursors
  • limit - Results per page (default 20, max 100)

List Scheduling Links

  • before / after - Pagination cursors
  • limit - Results per page

When to Use

  • Managing scheduling links programmatically
  • Retrieving booked events for CRM or analytics sync
  • Checking available time slots for custom booking UIs
  • Automating scheduling link creation for campaigns
  • Monitoring booking activity via webhooks

Rate Limits

  • Not officially documented
  • Implement retry logic with exponential backoff
  • Monitor for HTTP 429 responses

Relevant Skills

  • lead-generation
  • sales-automation
  • appointment-scheduling
  • customer-onboarding

Supporting file: tools/integrations/zapier.md

Zapier

Workflow automation platform connecting 8,000+ apps. The Zapier SDK gives AI agents direct access to any app's actions without building OAuth flows or reverse-engineering APIs.

Capabilities

IntegrationAvailableNotes
APIREST API for Zaps, tasks, and webhooks
MCPAvailable via Zapier MCP server
CLI@zapier/zapier-sdk-cli for app discovery and type generation
SDK@zapier/zapier-sdk — TypeScript SDK for 8,000+ app integrations

Authentication

Legacy API (Zaps management)

  • Type: API Key
  • Header: X-API-Key: {api_key}
  • Get key: Settings > API in Zapier account

SDK Authentication

Browser-based login (development):

npx zapier-sdk login

Server-side (production):

  • Client Credentials — store as environment variables
  • Direct token — set ZAPIER_CREDENTIALS env var

Browser-based login only works locally. Use Client Credentials for any server-side deployment.

SDK Quick Start

Install

npm install @zapier/zapier-sdk
npm install -D @zapier/zapier-sdk-cli @types/node typescript
npm pkg set type=module

Initialize

import { createZapierSdk } from "@zapier/zapier-sdk";
const zapier = createZapierSdk();

CLI Commands

CommandPurpose
npx zapier-sdk loginAuthenticate (dev only)
npx zapier-sdk list-apps --search "query"Search available apps
npx zapier-sdk list-actions APP_KEYList actions for an app
npx zapier-sdk add [app-key]Generate TypeScript types

SDK Methods

MethodPurpose
zapier.listConnections()List authenticated app connections
zapier.findFirstConnection()Find a specific connection
zapier.runAction()Execute an action on a connected app
zapier.apps.slack()App proxy pattern for clean syntax
zapier.fetch()Custom authenticated API calls

Example: Send a Slack Message

import { createZapierSdk } from "@zapier/zapier-sdk";

const zapier = createZapierSdk();
const slack = await zapier.apps.slack();

await slack.sendChannelMessage({
  channel: "#marketing",
  message: "Campaign launched!"
});

Example: Create a HubSpot Contact

const hubspot = await zapier.apps.hubspot();

await hubspot.createContact({
  email: "lead@example.com",
  firstName: "Jane",
  lastName: "Doe"
});

Pagination

Use .items() for large datasets:

const contacts = await hubspot.listContacts({ maxItems: 100 });
for await (const contact of contacts.items()) {
  console.log(contact.email);
}

Governance Note

Direct API calls via zapier.fetch() are not subject to org app/action restriction policies. Use pre-built actions where possible if your org has governance requirements.


Zaps API (Legacy)

List Zaps

GET https://api.zapier.com/v1/zaps

Get Zap details

GET https://api.zapier.com/v1/zaps/{zap_id}

Turn Zap on/off

POST https://api.zapier.com/v1/zaps/{zap_id}/on
POST https://api.zapier.com/v1/zaps/{zap_id}/off

Get task history

GET https://api.zapier.com/v1/zaps/{zap_id}/tasks

Get profile info

GET https://api.zapier.com/v1/profiles/me

Webhooks (Triggers)

Catch Hook (receive data)

Create a "Webhooks by Zapier" trigger to receive data:

POST https://hooks.zapier.com/hooks/catch/{webhook_id}/

{
  "event": "user.created",
  "user_id": "123",
  "email": "user@example.com"
}

Send data to Zapier

Most common: trigger a Zap from your app:

POST https://hooks.zapier.com/hooks/catch/{account_id}/{hook_id}/

{
  "name": "John Doe",
  "email": "john@example.com",
  "plan": "pro"
}

Common Marketing Automations

With SDK (recommended for agents)

// Lead capture to CRM
const hubspot = await zapier.apps.hubspot();
await hubspot.createContact({ email, firstName, lastName });

// New customer notification
const slack = await zapier.apps.slack();
await slack.sendChannelMessage({ channel: "#revenue", message: `New customer: ${email}` });

// Add to email sequence
const customerio = await zapier.apps.customerio();
await customerio.createOrUpdatePerson({ email, plan: "pro" });

With Zaps (no-code)

  • Typeform → Zapier → HubSpot (lead capture)
  • Stripe → Zapier → Slack (new customer alerts)
  • Form submission → Zapier → Customer.io (email sequences)
  • New review → Zapier → Slack (social proof)
  • New referral → Zapier → Spreadsheet + Slack (referral tracking)

Webhook Payload Structure

When sending to Zapier, structure data as flat JSON:

{
  "customer_name": "John Doe",
  "customer_email": "john@example.com",
  "plan_name": "Pro",
  "plan_price": 99,
  "signup_date": "2024-01-15"
}

Key Concepts

  • Zap - Automated workflow (no-code)
  • SDK - Programmatic access to 8,000+ app integrations
  • Trigger - Event that starts a Zap
  • Action - Task performed by Zap or SDK
  • Task - Single action execution
  • Connection - Authenticated link to an app (shared between Zaps and SDK)

When to Use

  • SDK: When an AI agent needs to interact with any app directly — send messages, create records, sync data
  • Zaps: When you need always-on automation without code
  • Webhooks: When triggering workflows from your own app
  • API: When managing Zaps programmatically

Rate Limits

  • API: 100 requests per minute
  • SDK: Rate limits per connected app
  • Task limits by plan tier

Relevant Skills

  • email-sequence
  • analytics-tracking
  • referral-program
  • revops

How do I install RevOps in Cursor, Claude Code, or Codex?

Run npx skills add preslandallan-ui/marketingskills --skill revops in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only RevOps, not every skill in the repository.

Where does RevOps come from and what license is it under?

RevOps comes from the preslandallan-ui/marketingskills repository on GitHub. That repository has 11 GitHub stars. The skill is published under the MIT license.

Prefer plain text? Read the RevOps guide as markdown.