The traffic is high-intent.
But checkout is leaking it.
Insights gained from 175 PostHog checkout replays, plus full telemetry audits across 3 active product workspaces representing 1,025+ monthly users.
Strong organic acquisition, but a systemic funnel drop-off.
Baseline active user records compiled over 30 days
Leakage point from Med Selection to Delivery Details
3 completed orders captured directly on site
Our 2nd largest UTM referral source
An 80.9% drop-off at Medication Selection (MED).
MED Step Fatigue
Users spend an average of 340.9 seconds (5.7 mins) in the Med Selection step before abandoning. They are trying to configure their lists, but get stuck selecting their medication, or wondering if a medication is in stock.
Women's health drives self-serve, while care specialists capture the rest.
Pathway A: PCOS Self-Serve
Session 019e3cd2 (22.4 mins) • 14,600 NGN
F. M. (f.m***@gmail.com) landed on PCOS Curated Plan → completed order with Himalaya Ashwagandha, Metformin, and Magnesium Glycinate via Paystack. Women's wellness represents our most active and reliable organic self-serve funnel.
Pathway B & C: Menstrual Care
Session 019dffd1 (12.1 mins) • 43,800 NGN
Landed organically on Menstrual Plan → "Customise plan" → completed checkout to Ibukun Oluwa Street, Lagos (43,800 NGN). Session 019e1f3b (33.5 mins) verified parallel staging checkout success for menstrual care (56,800 NGN).
Assisted Sales Handoff
Sessions 019e416a, 019e22df • WhatsApp
Users clicked "Speak with a Care Specialist" on dashboard / heart-care plans and moved directly to WhatsApp. Many apparent checkout "drop-offs" are actually high-quality live-chat leads transfers. We must track these as conversions.
The pre-payment SMS acts as an unintended "exit trigger."
The Invisible Checkout Leak
Trigger: Once a user enters their medication and delivery details, our backend triggers an automated SMS: "Your Famasi order has been created."
Behavioral Impact: This is an authoritative completion signal. Psychologically, the user registers the transaction as finished. Their motivation to complete the remaining checkout steps (Step 4: OFFERS and payment) drops to zero, leading to the massive drop-offs observed at the final step.
Actionable UX Fixes
- Defer SMS to Post-Payment: Silence the pre-payment checkout creation trigger entirely. Only send the SMS once a successful payment confirmation is received from Paystack.
- Pivot Copy to Retargeting: Avoid the completion-focused word "created" if we must keep a pre-payment SMS active. Pivot to a retrieval/recovery link:
"We've saved your medication list! Complete your payment here to lock in your delivery: [Link]"
Interactive confusion leads to rage clicking.
Static elements clicked in expectation of action
• Homepage: 44 dead clicks
• Dashboard: 25 dead clicks
Session 019e4286: clicked decorative dashboard icons with text 'None' 7 times in 6 seconds before finding primary "Create an order" button.
Dismissed 6 times, only 1 completion. Showing popups during MED and DELIVERY configuration steps creates cognitive overload during high-value conversion.
Protecting the checkout runtime, data privacy, and funnel telemetry.
1. DOM Translation Crash
Trigger: Chrome iOS Arabic auto-translations threw "NotFoundError" 6 times sequentially at Step MED for a Riyadh user, crashing checkout.
The Fix: Inject translate="no" on critical form components, prices, and labels, and wrap key steps in custom React Error Boundaries.
2. PII Sanitization
The Leak: PostHog was automatically collecting sensitive query tokens, order IDs, and email strings directly from URLs.
The Fix: Configured global PostHog filters and client-side sanitize_properties in the React initializer to swap sensitive tokens with [REDACTED].
3. Staging Isolation
The Issue: Staging traffic (staging.famasi.africa) was polluting production dashboards, corrupting checkout funnel analysis.
The Fix: Configured 4 separate dashboards on PostHog using global $host rules to permanently isolate production metrics from staging noise.
Our organic engine is powered by Twitter, LinkedIn, and conversational AI.
UTM Campaigns & Referrers
High-intent organic traffic sources compiled over 30 days:
• LinkedIn (B2B/Care): 38 DAUs
• Instagram: 12 DAUs
• TikTok: 6 DAUs
LinkedIn traffic directly correlates with caregiver and B2B interest on our Dispensary page (127 total sessions).
ChatGPT & Conversational Search
43 DAUs • 2nd Largest UTM Source
LLMs are actively recommending Famasi to users seeking localized healthcare, prescription delivery, or curated reproductive health plans in Nigeria. We must optimize our brand footprint across OpenAI, Perplexity, and Kimi to protect this high-conversion channel.
Reactive Blog SEO
150 Sessions • Postinor-2 side effects
Our top-performing blog page received 150 unique sessions: /blog/the-postinor-2-side-effects-nobody-warns-you-about. This is our largest informational traffic driver, sitting at the top of the funnel. We must place product links and a "Speak with a Care Specialist" widget directly on this page to guide this traffic toward conversion.
A 56.5% prescribing failure rate blocked by client-side string crashes.
Volume & Visibility
Active practitioners over 30 days (prescribe.famasi.me):
• Diagnostic Impact: Blind spot. We cannot visually see why doctors fail form submissions before the crash.
• Dev Bleed: Localhost tracking on ports 3002/3003 contributes 31% of recent event noise.
Prescribing Crash Event
Telemetry from the last 90 days:
signup_viewed: 17•
create_order_attempt: 23•
create_order_failure: 13 (56.5% failure)
The Error: 92.3% of prescribing failures (12 of 13) are caused by a single client-side React crash at /new-prescription: "Cannot read properties of undefined (reading 'localeCompare')".
Root Cause & Technical Fix
Why it fails: A JavaScript string sorting function executes .localeCompare() on variables (e.g. doctor labels, meds, or locations) that return null/undefined during initialization.
Actionable Fixes:
- Inject safety fallbacks:
(a || '').localeCompare(b || '') - Exclude localhost domains from production PostHog rules.
- Toggle ON Session Replay in Providers Portal settings.
Fulfillment lag and disabled auto-debits leak active chronic revenue.
Fulfillment & Platforms
Active Users (30d): 903 operators
• Android App: 49,247 events
• iOS App: 21,058 events
• Backend API: 1,912 events
• Logged In: 1,293 | Signed Up: 228
• Orders Created: 404 | Paid: 185
• Completed Orders: 54 (13.3%)
Post-Payment Pipeline Halt
93.8% of Auto-Debit Failures are B2B Restocks
Our 185 paid vs. 54 completed orders gap is caused by a critical backend bug. Out of 97 auto-debit-blocked events, 91 were routine one-time restocking orders. Because the backend falsely evaluated one-time orders under the subscription auto-debit rule (which is disabled), it halted their transition to completed. **Correlation rate: exactly 0%** of blocked restocks completed.
Backend Codebase Bug & Fix
74 Active Pharmacies Blocked
The backend NodeJS API (at host IP 164.92.196.28) mistakenly runs subscription auto-debit checks against B2B one-time orders. When it checks the disabled PostHog auto-debit flag, it blocks the transaction pipeline.
Codebase Actionable Fix:
Restrict auto-debit checks strictly to subscription orders inside the transaction controller:
if (order.orderType === 'subscription') {
// evaluate auto-debit feature flag...
}
High informational barriers limit download conversion to 2.38%.
Traffic & Scope
Active visitors over 30 days: 90 users
• withfey.com: 110 pageviews
• fey-landing.pages.dev: 26 pageviews
• localhost:5173 (bleed): 17 pageviews
Visibility: Replays are ❌ DISABLED. We cannot see visual engagement, scrolls, or what sections cause them to bounce.
Friction Map & FAQ Clicks
Users are searching for structural and pricing details:
2. "Fey pharmacy integrations?": 15 clicks
3. "Setup duration?": 12 clicks
4. "System not listed?": 7 clicks
Download Goal Clicks: Only 6 clicks (2.38% conversion). The informational wall blocks action.
Conversion Strategy
Fixes & Upgrades:
- Bring Integration Above the Fold: Move direct answers to regional pricing and pharmacy connections next to the main download CTA.
- Filter Localhost Traffic: Exclude development domains in PostHog to clean metrics.
- Toggle Session Replays: Track visual engagement and scroll depths.
Technical and UX roadmap to recover lost conversions.
Technical & Tracking Fixes
- Add
translate="no": Protect checkout and medication configuration fields from translation DOM exceptions. - Track WhatsApp Handoffs: Fire a success conversion event when a user clicks "Speak to a Specialist" to prevent misclassifying live lead transfers as drop-offs.
- Align Environments & Clean localhost: Exclude local port track logs from production PostHog workspaces.
- Defer/Retarget Pre-Payment SMS: Silence order-created alerts at delivery step, or pivot them to recovery links to save the 38.5% Step 4 drop-off.
UX & Content Upgrades
- Reduce MED Step Friction: Trigger floating specialists helper badge if a user is inactive for >3 minutes on the Med selection page.
- Convert Blog Traffic: Embed direct curated plan ads and a "Speak with a Care Specialist" consultation widget in the Postinor-2 article.
- Fix Dashboard Click Mapping: Map passive graphics and card elements directly to checkout initiation to eliminate user rage clicks.
Recapture value by fixing our frontend crashes and telemetry leaks.
We do not have an acquisition problem — we have an execution gap. From the 80.9% checkout MED drop-off to the 56.5% Providers prescribing crash and the 70.8% Dispensary post-payment completion chasm, users show high intent but are blocked by silent technical failures and disabled features. Addressing these core technical and operational blockers directly recovers massive latent revenue.