One row in Practo's connections sheet (Practo calls a lead a "connection") (a Call or Book lead Practo bills us for). Charged = fee > 0; Practo does not bill some leads (fee 0).
Net cost (incl. 18% GST)
(Fee charged − fee refunded − T2 wallet discount) × 1.18 = true cost. Practo bills every lead at the T1 ("T6") price and gives T2 cities their lower contract price (Call ₹300 / Book ₹375 vs ₹340 / ₹425) as extra credit at wallet top-up, so the difference is subtracted as a discount. CPL = Net cost ÷ leads · CPB = ÷ bookings · CPD = ÷ consultations done.
Our outcome
Matched by phone to our system: Booked = a screening consultation booked within 14 days of the lead; Done = that consultation completed; Purchased = bought what the doctor prescribed in it; Revenue = consultation fee + that first prescription payment (no repeat). Leads less than 14 days old are still maturing (amber) and left out of Average / Trend.
ROAS target
Revenue (consult + first prescription) ÷ net Practo cost incl. GST. Target ≥ 3×; below it a city / clinic / doctor is flagged ⚑ and counted in card E. Scale = 3×+ with volume; fix or cut = under 3×, with the funnel stage that is furthest below the Practo average.
Contribution / done
RPC − CPD: what each completed consultation earns after Practo's cost (revenue, not margin).
Refund eligible
Firm = Book no-show / released, MH after cut-off, or a never-booked call our agents tagged as blank / spam / job / wrong clinic / wrong speciality (mapping in practo_refund_rules.json → call_audit). Possible = never-booked call with no usable tag. Never-booked calls tagged as genuine enquiries are NOT refundable and are excluded. Note: Practo has refunded ~95% of what we dispute regardless of reason, so their outcome cannot validate our classification — dispute only what fits their policy. A charged lead that hits any rule in practo_refund_rules.json (no-show, cancelled, never booked, duplicate, not in our system, MH after cut-off). Filing rate = disputed ÷ eligible; success = refunded ÷ disputed. Deadline: a Book no-show is flagged the day after the appointment, and Practo rejects no-show disputes filed more than 72 hours after the appointment (confirmed; Practo's rejection reason "No Show marked after 72 hours"), so unfiled no-shows older than that count as lost. No deadline is known for other reasons.
Refund reversed
Practo's sheet once showed the lead as REFUNDED, and now does not (tracked daily in data_practo_dispute_history.json from 7 Oct 2026).
Known to our system
The lead's phone exists in our system as any lead or patient, ever. Unknown numbers (last 30 days) are written to exports/practo_missing_leads_<date>.txt on the machine that runs the refresh — never published, since they are phone numbers.
Category
Practo keyword (sexologist = SH, general-psychiatry = MH). Call leads carry no keyword, so they take the programme of the consultation they booked; still unknown if they never booked.