Monarch Advisory Partners

GTM Framework

A guide for MOPs and RevOps based on 15+ years of experience, including architecting (or rearchitecting) GTM systems at Grammarly, WeWork, Axiom, and more.

Framework setup

CONTACTS ONLY LEADS + CONTACTS
Contacts are worked directly - no separate Lead record. SAL, SQL and SQO are just Contact Status changes.
B2B PLG · B2B2C
Pipeline is Marketing- and Sales-sourced only (MQL). Product-qualified leads are off.

GTM FUNNEL

Each column below is a Lifecycle Stage. Where a stage has one, its Contact Status chips are shown directly on the card - see Contact Status for the full reference.

FUNNEL GRID
Funnel diagram: Raw, MQL, SAL, SQL, SQO, Opportunity, Customer, grouped by owning team - Marketing, Sales, Post-Sale RAW MQL SAL SQL SQO OPPORTUNITY CUSTOMER MARKETING SALES POST-SALE

Recycle, Unqualified, and Partner sit outside the forward funnel - see the full breakdown below.

MARKETING
RAW
RAW
TYPICALLY NOT IN CRM;
FOR MARKETING TO ENGAGE
MARKETING
MQL
MQL
PQL
SCORE / ICP FIT
MARKETING HANDS OFF
SALES
SAL
Accepted
Rejected
ACCEPTED: SALES OVERSEES
REJECTED: UNQUALIFIED OR RECYCLE
→ LEAD RECORD CREATED
SALES
SQL
Attempted Contact
Connected
In Progress
WORKING THE LEAD
SALES
SQO
① Discovery Meeting or Demo Call
DEAL CREATED HERE
(PRE-PIPELINE)
② Qualified to Buy
SALES ACCEPTS
DEAL RECORD CREATED
SALES
OPPORTUNITY
Open Deal
③ Meeting with Buying Team
④ Decision Maker Aligned
⑤ Contract Sent
DEAL MOVES TO
WON OR LOST
POST-SALE
CUSTOMER
Open Deal → Closed Won
⑥ Closed Won
CLOSED WON
ONBOARDING BEGINS WITH CS
PARTNER SALES
PARTNER
Partner
CO-SELL / REFERRAL SOURCE
CHANNEL PARTNER
MARKETING
RECYCLE
Recycle
RE-ENGAGE
RESURFACES AS NEW
ELIGIBLE FOR RE-MQLING
EXIT
UNQUALIFIED
Unqualified
DISQUALIFIED
WRONG ICP / BAD FIT / WON'T CONVERT

⚠ CUSTOMER IDENTIFICATION

Not every Customer is the same type. Add Customer Type as a property:

  • → Active - paying, in good standing
  • → Inactive - paying, but not using the product; a Health signal, not a lifecycle event
  • → Evangelist - referral source, review, or case study champion
  • → Churned - set on both Account Status (company) and Contact Status (contact); Lifecycle Stage stays = Customer, always
  • → Win-back re-enters through a new Deal in the renewal pipeline - never by recycling back to MQL or SQL

CONTACT STATUS

Two separate fields carry status: Account Status lives on the Company and moves in one direction, while Contact Status lives on the Contact and differs by where they sit in the lifecycle.

Contact Status by lifecycle stage
Lifecycle StageContact StatusDefinition
RAWRAWNot yet worked - subscriber, list import, form convert, or content download.
MQLMQLMarketing-qualified by score or ICP fit; not yet sales-owned.
SAL↳ AcceptedSales has accepted the marketing hand-off. Also where a partner-vetted lead enters - partner already confirmed fit/need, treat the referral like an accepted hand-off.
↳ RejectedSales declines the hand-off with a reason: Unqualified (wrong ICP, bad fit, will never become a customer) → Unqualified; Bad Timing, Budget, or Missing Features → Recycle.
SQL↳ Attempted ContactOutreach attempted, no connect yet. Also where a partner-surfaced lead enters if Sales still needs to run initial qualification.
↳ ConnectedReached the contact, conversation started.
↳ In ProgressActively working the contact toward an appointment.
SQO↳ Discovery Meeting or Demo CallMeeting booked; deal record created (pre-pipeline).
↳ Qualified to BuyConfirmed need, budget, and authority - deal moves to pipeline. This is the qualification gate: standardize on BANT, VANT (transactional/PLG) or MEDDIC (complex/enterprise) per segment rather than naming a framework here.
Opportunity- tracked via Deal StageProgression (Meeting with Buying Team → Decision Maker Aligned → Contract Sent) is on the Deal, not the Contact. If using MEDDIC, its fields (Economic Buyer, Decision Criteria, Decision Process, Metrics, Identified Pain, Champion) populate progressively across these stages - Champion/Decision Maker then live natively on the Deal instead of only in Target Accounts.
Customer- tracked via Deal StageClosed Won on the Deal; onboarding begins. See Customer Types above for Active / Inactive / Evangelist / Churned.
↳ ChurnedSet on win-out; Lifecycle Stage stays Customer, never reverts.
PartnerPartnerChannel or referral source, not a direct customer.
Recycle↳ RecycleDropped into a re-engagement campaign.
↳ Bad TimingSoft-lost on timing; Active Nurture Category set, lifecycle stays put.
↳ BudgetSoft-lost on budget; Active Nurture Category set, lifecycle stays put.
↳ Missing FeaturesSoft-lost on product fit; Active Nurture Category set, lifecycle stays put.
UnqualifiedUnqualifiedDisqualified: wrong ICP, bad fit, or will never become a customer.

QUALIFICATION FRAMEWORKS

Referenced above at the SQO "Qualified to Buy" gate: pick one qualification standard per segment rather than naming a framework in the Contact or Deal object directly.

BANT, VANT, and MEDDIC qualification frameworks
FrameworkStands ForBest Fit
BANTBudget, Authority, Need, and TimelineTransactional or PLG motions - fast qualification, mostly single-threaded deals.
VANTValue, Authority, Need, and TimelineSame motion as BANT, but leads with a value conversation instead of a budget conversation.
MEDDICMetrics, Economic Buyer, Decision Criteria, Decision Process, Identified Pain, and ChampionComplex, multi-stakeholder enterprise deals - fields populate progressively across the Opportunity stages, not all at once.

RECYCLE & RE-NURTURE PATHS

CLOSED LOST → RECYCLE

Deal → Closed Lost

  • Lost before Stage 2: Lifecycle stays = SQO. Contact Status → Unqualified (hard DQ) or Bad Timing (soft → stay SQO, enter nurture).
  • Lost after Stage 2 (was Opportunity): Lifecycle becomes Recycle unless moved to Unqualified. Contact Status → Unqualified or Budget/Timing → Recycle.
  • Contacts only: Contact Status → Recycle. On re-engagement: Contact Status → New, resurfaces in sales view.
  • Leads + Contacts: a new Lead record is created on the contact - re-enters the sales queue fresh.

CHURNED CUSTOMER → WIN-BACK

  • Account Status = Churned
  • Lifecycle Stage = Recycle
  • New Deal created in renewal/win-back pipeline
  • Account Status → Active on Closed Won
  • Contact Status is not relevant - they are not a lead

MQL REASON

MQL Reason tells Sales how and why a contact was marketing-qualified and routed to them, so they can sequence follow-up by source instead of treating every MQL the same.

MQL and PQL reasons by priority
PriorityReasonDefinition
P0MQL: Contact Sales FormSubmitted the Contact Sales form; not a generic domain; opted into marketing emails; company 50+ employees.
P0MQL: Event/Webinar Hand-RaiserAttended the most recent webinar and replied Yes or Maybe to Sales follow-up.
P0MQL: Request a DemoRequested a demo; not a generic domain; company 50+ employees.
P1MQL: Strategic CampaignCriteria set per campaign by Demand Generation.
P1MQL: ChatChat team qualified for an upsell/expansion hand-off; not a generic domain; opted in; 50+ employees.
P2MQL: ScoredNative/ML scoring on conversion behavior (never opens or clicks); not an existing user; opted in; 50+ employees; Manager+.
P2PQL: Freemium + ICPSigned up for a free trial; Director/Manager/Non-Manager level; matches ICP.
P2PQL: Freemium + Not ICPSigned up for a free trial; Director/Manager/Non-Manager level; outside ICP.
P2PQL: Premium + ICPExisting paid account; C-Level/VP-Level; matches ICP.
P2PQL: Premium + Not ICPExisting paid account; C-Level/VP-Level; outside ICP.

FUNNEL HISTORY

Lifecycle Stage and Contact Status only show where someone is right now - they overwrite themselves every time a contact moves. Funnel History is a separate custom object that doesn't: it's an append-only log, one row per stage transition, timestamped and linked back to the Contact and Company. Nothing native tracks this on its own.

That log is what turns a snapshot into a timeline. Without it, you can say a contact is "SQL" today - but not how long they sat in MQL, which campaign actually moved them, or whether this is their first pass through the funnel or their third. With it, three things become possible: velocity reporting (average days per stage, where deals actually stall), campaign attribution (crediting the touch that drove the transition, not just whichever one happened last), and recycle detection (flagging a contact on cycle 2 so Sales works them differently than a true first-touch lead).

Logged per transition: Date/Time Entered · Stage · Source / Campaign · Contact · Company

Example Funnel History log for one contact across two cycles
Date EnteredStageSource / CampaignCycle
Jan 4MQLWebinar: Q1 Pipeline1
Jan 6SAL-1
Jan 9SQL-1
Jan 22UnqualifiedWrong ICP1
Apr 18RecycleRe-engagement email1
May 2SQLScore threshold hit2
May 20SQODemo completed2
Jun 3CustomerClosed Won2

SLA LAYER

Funnel History gives you the date and time for every entry per row - necessary but not sufficient for SLA enforcement. Three things layer on top; they're calculated from the log, not logged in it:

SLA layer built on top of Funnel History
ElementPurpose
Stage Entry TimestampTime-of-day precision, not just date - needed for any SLA under 24 hours (e.g. SQL "Attempted Contact" within 4 business hours).
SLA Threshold tablePer stage, per segment if needed - e.g. MQL → SAL response: 24 hrs; SAL → SQL first touch: 4 business hrs; SQO no-show follow-up: 24 hrs.
Breach Flag (calculated)Time in Current Stage > SLA Threshold → boolean. Drives alerting and dashboards without writing a new Funnel History row.

This stays additive: Funnel History remains the immutable log, and SLA logic is a calculated layer on top - current-stage entry timestamp vs. now, compared against the threshold table. No restructuring needed, just timestamp precision plus a small threshold reference - which also gives you something concrete to alert on for managers tracking response-time health: here's the standard, here's the measured adherence.

TARGET ACCOUNTS (ABM LAYER)

Target Accounts exist at the Company level, not Contact level - they operate as a parallel ABM layer overlaid on the standard funnel.

How it works: flag a Company as a Target Account in your CRM - most modern CRMs support this as a standard or premium-tier property. This unlocks ABM dashboards, ICP scoring, and account-level engagement views. Contacts at Target Account companies should be fast-tracked: even a Raw contact at a Target Account company may warrant direct sales outreach, bypassing normal MQL thresholds.

Recommended setup: Target Account = ✓ → auto-assign to ABM sequence → SDR reaches out regardless of contact lifecycle stage → if contact converts, follow normal SAL → SQL → SQO → Deal path. Track engagement at both company and contact level. Use the Buying Role contact property (Champion, Decision Maker, Blocker, etc.) to map deal stakeholders on Target Accounts.