get_cancel_flow_metrics
ChatGPTCancel-flow (cancellation/save) headline metrics for your company over a period. READ-ONLY. With no from/to these are the all-time figures on the dashboard "Core Metrics" card; pass from/to to scope them to a window. USE WHEN: the user asks about cancellation sessions, how many were saved, the save rate, the reactivation rate, HOW MANY SAVED CUSTOMERS ACTUALLY CONTINUED PAYING / kept paying / stayed subscribed / renewed after being saved (that is reactivated_subscriptions — see below), saved revenue, or how many customers/how much revenue is pending or at risk now. Returns: sessions, saved_sessions, save_rate, saved_subscriptions, reactivated_subscriptions, should_have_reactivated_subscriptions, reactivation_rate, saved_revenue_usd, and current pending/at-risk customer counts + revenue. TERMINOLOGY: a "session" is one time a customer went through your cancel flow (user-initiated; passive/webhook cancellations are NOT counted), and "cancelled" includes pending cancellations. saved_sessions counts save EVENTS (sessions retained); saved_subscriptions is the "Customers Saved" figure (distinct subscriptions/customers saved). save_rate is SESSION-based (saved_sessions / sessions) — do NOT divide saved_subscriptions by sessions. reactivated_subscriptions = saved subscriptions that ACTUALLY continued paying after being saved (they went on to make a subsequent successful charge). This is the number to answer "how many saved customers actually continued paying / kept paying / stayed / renewed after being saved". Do NOT try to compute that from search_cancel_flow_sessions or subscription_status — read reactivated_subscriptions here. should_have_reactivated_subscriptions = saved subscriptions that were due to bill again (the denominator); reactivation_rate = reactivated_subscriptions / should_have_reactivated_subscriptions. sessions/saved/revenue are period-scoped; pending/at-risk are a live snapshot ("now"). Requires the revenue-stats entitlement.
get_cancel_flow_outcomes_by_flow
ChatGPTCancel-flow outcomes broken down per cancel flow (audience / A-B variant) for the period. READ-ONLY. USE WHEN: the user asks which cancel flow performs best/worst, or wants save rate or retained/cancelled counts compared across their cancel flows or audiences (not the single company-wide total that get_cancel_flow_metrics returns). Returns one row per flow: flow_name, sessions, saved_sessions, cancelled, save_rate (saved_sessions / sessions). Sorted by sessions, busiest flow first. Period-scoped by from/to. NOTE: this is the dashboard "Sessions Outcomes" view — it counts only sessions that reached a recorded outcome, so the summed sessions/save_rate can differ slightly from the headline in get_cancel_flow_metrics (the "Core Metrics" definition, which counts every cancel-flow session).
get_cancel_flow_revenue
ChatGPT"Boosted Revenue" from the cancel flow over time, for your company (USD). READ-ONLY. This is the dashboard's Boosted Revenue chart with its two series. USE WHEN: the user asks how much revenue the cancel flow saved/retained, wants a revenue trend, OR asks about FORECASTED / projected / expected future revenue. Returns per bucket: period_start, period_end, saved_revenue_usd (REALIZED — saved charges already collected in that bucket) and forecasted_revenue_usd (FORECASTED — projected upcoming-invoice revenue for still-active saved subscriptions whose next invoice falls in that bucket, discounted by the reactivation rate). IMPORTANT: a forecast is only produced for roughly the next 2 months (upcoming invoices); past buckets and buckets more than ~2 months out have forecasted_revenue_usd = 0 — that is expected, not missing data. So for "forecasted revenue in <month>", use granularity=MONTH and read forecasted_revenue_usd for that month (it is only non-zero if that month is within the forecast horizon). granularity=TOTAL (default) returns a single bucket over [from,to]; MONTH returns a monthly series (revenue is stored monthly).
get_cancel_flow_revenue_by_offer
ChatGPTRealized "boosted revenue" broken down by save method / accepted offer, for your company (USD). READ-ONLY. This mirrors the dashboard's "Added Revenue From X" cards. USE WHEN: the user asks how much revenue each offer / save method / deflection brought in, or which offer drives the most saved revenue (e.g. "boosted revenue for each offer", "revenue from coupons vs pauses"). Returns one row per method: method (the SaveStatus — COUPON, PAUSE, ABANDONED, CONTACT, TRIAL_EXTENSION, SWITCH_PLAN, SEND_TO_PAGE, SWITCH_PRODUCT, ...), boosted_revenue_usd (REALIZED revenue collected from subscriptions saved via that method), saved_subscriptions, and reactivated_subscriptions — highest revenue first. IMPORTANT: boosted_revenue_usd is realized collected revenue, NOT amount_at_risk. Do NOT compute per-offer revenue yourself by summing session amount_at_risk from search_cancel_flow_sessions — that is a different, larger measure and will be wrong. Use this tool for per-offer revenue.
get_cancel_flow_save_rate
ChatGPTCancel-flow save rate over time for your company. READ-ONLY. USE WHEN: the user asks how the save rate (or churn rate) is trending, this month vs last, or wants a save-rate/churn time series. granularity=TOTAL (default) returns a single bucket over [from,to]; MONTH or DAY returns a series. Returns per bucket: period_start, period_end, retained, cancelled, save_rate. Churn rate = 1 - save_rate (cancelled / (retained + cancelled)). This is the dashboard "Save Rate" chart (session-level; retained vs cancelled cancel-flow sessions that reached an outcome, user-initiated, cancelled includes pending). Its total can differ slightly from get_cancel_flow_metrics.save_rate (the "Core Metrics" definition, which counts every cancel-flow session). For the distinct saved-customers count use get_cancel_flow_metrics.saved_subscriptions.
get_feedback_category_breakdown
ChatGPTCustomer-feedback counts broken down by category and sentiment for your company over a period. READ-ONLY. USE WHEN: the user asks what customers give feedback about — the topics/categories (e.g. Pricing, Usability, Support) and how sentiment splits within each. Returns rows of { category, sentiment, count }, busiest first. Only classified feedback is counted.
get_feedback_sentiment_trend
ChatGPTHow customer-feedback sentiment breaks down (and trends) for your company over a period. READ-ONLY. USE WHEN: the user asks about feedback sentiment — how positive/negative feedback is, or how it's trending. granularity=TOTAL (default) returns one count per sentiment over [from,to]; MONTH returns a per-month series (period = "YYYY-MM"). Only classified feedback is counted (see this product's note); to read the raw comments use search_cancel_flow_sessions.
list_cancel_flow_cancellation_reasons
ChatGPTTop reasons customers gave for cancelling, with counts, for your company over a period. READ-ONLY. USE WHEN: the user asks why customers cancel/churn or wants the most common cancellation reasons overall. Returns reasons sorted by count (highest first). To break the reasons down per plan, use list_cancel_flow_cancellation_reasons_by_plan instead. Counts reflect only cancel-flow sessions where the customer actually selected a reason (cancelled or pending-cancel, user-initiated); passive/webhook cancellations with no reason are excluded, so these totals are smaller than raw cancellation counts and match the dashboard's reason breakdown.
list_cancel_flow_cancellation_reasons_by_plan
ChatGPTTop cancellation reasons broken down per plan, for your company over a period. READ-ONLY. USE WHEN: the user wants to compare why customers cancel across plans/tiers. Returns a list of { plan_external_id, reasons: [...] }; within each plan reasons are sorted by count (highest first). For a single overall list (not per plan), use list_cancel_flow_cancellation_reasons.
list_cancel_flow_offer_performance
ChatGPTRetention-offer performance (accepted vs declined, with acceptance rate) per offer type, for your company over a period. READ-ONLY. USE WHEN: the user asks which retention offers work, offer acceptance rates, or which offers to kill (e.g. acceptance below a threshold). Returns per offer_type: accepted, declined, acceptance_rate (0..1). Optionally keep only offers at or below max_acceptance_rate.
list_connections
ChatGPTList the connections (payment gateways) for your company. READ-ONLY. USE THIS FIRST: other analytics tools accept one or more connection ids (company_gateway_id). Call this to discover them, then pass the chosen id(s) as 'connection_ids' to the analytics tools. Returns: company_gateway_id, external_name (human label, may be null), account_id, gateway type, and whether the connection is live or test. Scope: only your own company's connections; you cannot see other companies'. Omit from/to to list ALL connections (the default for discovery); pass a window to keep only connections that had subscription activity in it.
list_feedback_intents
ChatGPTCustomer-feedback counts by intent for your company over a period. READ-ONLY. USE WHEN: the user asks what customers are trying to do / express in their feedback (their intent, e.g. Suggestion, Complaint). Returns { intent, count }, most common first. Only classified feedback is counted.
list_plans
ChatGPTList the subscription plans seen across your company's connections. READ-ONLY. USE WHEN: you need to filter analytics by plan or map a plan to a human label. The analytics store has no plan name, so 'label' combines the plan's external id with an amount/interval summary. Returns: plan_external_id, label, unit_amount, currency, interval. Omit from/to to list ALL plans (the default for discovery); pass a window to keep only plans with subscription activity in it.
search_cancel_flow_sessions
ChatGPTSearch individual cancel-flow sessions for your company (paginated). READ-ONLY. USE WHEN: the user wants to list/inspect specific cancellation sessions or customers — e.g. high-MRR customers who cancelled, sessions for a given reason/sentiment/plan, who is pending cancellation, or to read/search the verbatim feedback customers left (e.g. "who asked for a refund?" → set feedback_contains). Each row has the session status, plan, cancellation reason, the customer's verbatim feedback_text, its sentiment/category/intent, amount_at_risk_usd, mrr_usd, and current subscription_status. NOTE: feedback_text is what the customer typed; sentiment/category/intent are classifier output and are null when the feedback hasn't been classified. SAVED CUSTOMERS: each row has a boolean saved — this is the dashboard's "saved customer / saved session" definition: the customer was RETAINED (session status is neither CANCELLED nor PENDING_CANCEL). Every deflection outcome counts as saved — PAUSE, COUPON, UNCANCELLED, TRIAL_EXTENSION, CONTACT, SEND_TO_PAGE, SWITCH_PLAN/PRODUCT, etc. saved is about the flow outcome and is INDEPENDENT of the current subscription_status (a saved customer may have churned later). To list saved customers set saved=true (e.g. "saved customers who accepted the send-to-page offer" → saved=true AND statuses=["SEND_TO_PAGE"]); set saved=false for only cancelled sessions. Filter by any combination; sort by CREATED_AT_DESC (default), AMOUNT_AT_RISK_DESC, or MRR_DESC. Use page/page_size to paginate; the result's has_more tells you whether to fetch the next page.
get_cancel_flow_metrics
Claudeget_cancel_flow_outcomes_by_flow
Claudeget_cancel_flow_revenue
Claudeget_cancel_flow_revenue_by_offer
Claudeget_cancel_flow_save_rate
Claudeget_feedback_category_breakdown
Claudeget_feedback_sentiment_trend
Claudelist_cancel_flow_cancellation_reasons
Claudelist_cancel_flow_cancellation_reasons_by_plan
Claudelist_cancel_flow_offer_performance
Claudelist_connections
Claudelist_feedback_intents
Claudelist_plans
Claudesearch_cancel_flow_sessions
Claude