Hey IH! Back with another update on Underpriced AI - the AI-powered valuation tool for resellers.
I had analytics "set up" for weeks. Google Analytics was installed, page views were flowing, I could see traffic numbers. But I realized I was measuring vanity metrics and completely blind to the ones that matter.
What I was tracking: Page views, sessions, bounce rate What I should have been tracking: Where users drop off between signup and first purchase
Wired up every step of the user journey:
sign_up → view_pricing → begin_checkout → purchase
trial_conversion - specifically when a free trial user becomes paid
feature_interest - which locked features make users want to upgrade
The feature_interest one is already eye-opening. When users hit their scan limit, I track that moment. When they click "Upgrade" from the settings page, I track which features they don't have access to. This tells me which features actually drive revenue.
Users had no idea how many scans they had left until they hit zero. Now there's a persistent banner:
Trial users: "2 of 3 free scans remaining" (amber)
Paid users: "32 of 45 scans used this month" (neutral)
Low credits: Amber warning + "Buy More" CTA
Simple change, but it primes users for the upgrade decision before they hit the wall.
Users can now leave reviews directly on the site. Reviews go through admin approval before going public. I can also respond to reviews inline - useful for addressing feedback publicly.
This is partly social proof, partly a feedback channel. The reviews page now has testimonials + user ratings + a submission form all in one place.
Added a "Rate Us" button in settings. On iOS, it deep-links to the App Store review page. On web, it links to our reviews page. Small thing, but App Store ratings compound over time.
The tricky part: Apple's native requestReview() API is unreliable - Apple throttles it silently and returns success even when the dialog doesn't show. And window.open() is blocked in Capacitor WebView. Solution was using the itms-apps:// URL scheme with window.location.href.
Switched from Claude Opus to Sonnet for all analysis (cost savings without noticeable quality drop)
Added broader eBay fallback searches for items with low confidence scores
5 new SEO blog posts published
GA4 events sent from code appear automatically in the dashboard - you don't need to manually create them in the UI. I spent 30 minutes trying to create events in the GA interface before realizing the "Create with code" option literally just means "go implement it and we'll pick it up automatically."
The only thing you actually need to do in GA4 admin: mark your important events as "key events" and register custom dimensions for user properties. Everything else is automatic.
How do you decide which events are "key events" vs just engagement tracking? I landed on: if it directly relates to revenue (signup, purchase, trial conversion), it's a key event. Everything else is engagement.
Anyone running a hybrid web + iOS app with Capacitor? The platform detection and deep linking quirks are nontrivial. Would love to compare notes.
Building in public at underpricedai.com