[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GY0R0JDPG05GCSMST6S4F6":3,"skill-same:01M6GY0R0JDPG05GCSMST6S4F6":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":19,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6GY0R0JDPG05GCSMST6S4F6","compute-funnel-conversion-from-impression-to-payment",null,"Use when a full acquisition funnel must be measured impression to payment. Computes stage-by-stage conversion and end-to-end rate, then locates the stage that loses the most absolute volume.","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-compute-funnel-conversion-from-impression-to-payment\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-compute-funnel-conversion-from-impression-to-payment\u002FSKILL.md",[],[20,21,22,23,24,25,26,27,28,29,30,31,32],"funnel","conversion","payment","compute","compute funnel conversion from impression to payment","acquisition","use","volume","full","stage","end","rate","when","2026-11-10 10:12:30",false,"---\nname: compute-funnel-conversion-from-impression-to-payment\ndescription: Use when a full acquisition funnel must be measured impression to payment. Computes stage-by-stage conversion and end-to-end rate, then locates the stage that loses the most absolute volume.\n---\n\n# Compute funnel conversion from impression to payment\n\nOne end-to-end conversion rate hides which stage failed. Compute every stage-to-stage rate and find where the funnel loses the most absolute people, because a leaky stage early matters more than a bad rate late.\n\n## Procedure\n\n1. Fix the stages and define each as an event, not a page view: impression -> click -> landing -> signup -> activated -> trial -> payment. Every stage must be countable in one pass.\n2. Build counts per stage for the same cohort and window. Never mix a marketing-sourced impression count with a product-sourced signup count from a different period.\n3. Compute stage conversion: `rate_i = count_{i+1} \u002F count_i`.\n4. Compute end-to-end: `e2e = count_last \u002F count_first`, and verify it equals the product of the stage rates to catch a counting break.\n5. Worked example:\n   - impressions 2,000,000 -> clicks 40,000 (2.0%) -> landing 38,000 (95%) -> signup 4,560 (12%) -> activated 2,280 (50%) -> paid 570 (25%).\n   - e2e = 570 \u002F 2,000,000 = 0.0285%.\n6. Find the biggest absolute leak: the stage that loses the most *people*, not the lowest rate. Here signup->activated loses 2,280 people; that is usually the lever.\n7. Value each improvement by its downstream multiplier: `value = delta_people * downstream_rate * arpu_minor`.\n8. Segment by source and device; a funnel can look healthy blended and be broken on mobile.\n9. Report the table plus the one stage to fix first, with the modelled revenue lift.\n\n10. Track stage lateness: a signup that activates 20 days later belongs to a later cohort and distorts the recent window.\n11. Reconcile the ad platform's click count to your server-side landing count; a 10%+ gap is tracking loss.\n12. Weight improvements by downstream conversion so you fix where a lift propagates furthest.\n13. Watch the tail: a stage can look healthy at the median and lose a large segment entirely.\n14. Rebuild the funnel monthly and store it, so a change in one stage is attributable rather than inferred.\n15. Separate paid and organic funnels; blending them hides that organic carries a different drop-off profile.\n\n## Pitfalls\n\n- Quoting only the end-to-end rate, which makes a 2% click-through look like the whole problem when the leak is later.\n- Mixing cohorts: ad-platform impressions and ledger payments rarely cover the same window.\n- Counting a \"signup\" as email-submitted when the account is never activated inflates the next stage.\n- Optimising the lowest-rate stage instead of the highest-volume-loss stage spends effort where it moves least revenue.\n- The product of stage rates not equalling e2e reveals a tracking break you would otherwise miss.\n\n- Delayed activation assigns recent cohorts a falsely low rate; wait for maturity or model the lag.\n- Trusting the ad platform's click count when the server logs 15% fewer starts the funnel from a wrong denominator.\n- Optimising a median stage while a whole segment exits there loses eligible revenue the average hides.\n- A funnel rebuilt ad hoc each month cannot attribute a change to a stage.\n\n## Verification\n\n    python3 -c \"c=[2000000,40000,38000,4560,2280,570]; print([round(c[i+1]\u002Fc[i]*100,2) for i in range(len(c)-1)], round(c[-1]\u002Fc[0]*100,4))\"\n    # [2.0, 95.0, 12.0, 50.0, 25.0] 0.0285 -> stage rates multiply to the end-to-end rate\n\nReport: the stage table, the largest absolute leak, and the modelled revenue lift from a named improvement.\n","# Compute funnel conversion from impression to payment\n\nOne end-to-end conversion rate hides which stage failed. Compute every stage-to-stage rate and find where the funnel loses the most absolute people, because a leaky stage early matters more than a bad rate late.\n\n## Procedure\n\n1. Fix the stages and define each as an event, not a page view: impression -> click -> landing -> signup -> activated -> trial -> payment. Every stage must be countable in one pass.\n2. Build counts per stage for the same cohort and window. Never mix a marketing-sourced impression count with a product-sourced signup count from a different period.\n3. Compute stage conversion: `rate_i = count_{i+1} \u002F count_i`.\n4. Compute end-to-end: `e2e = count_last \u002F count_first`, and verify it equals the product of the stage rates to catch a counting break.\n5. Worked example:\n   - impressions 2,000,000 -> clicks 40,000 (2.0%) -> landing 38,000 (95%) -> signup 4,560 (12%) -> activated 2,280 (50%) -> paid 570 (25%).\n   - e2e = 570 \u002F 2,000,000 = 0.0285%.\n6. Find the biggest absolute leak: the stage that loses the most *people*, not the lowest rate. Here signup->activated loses 2,280 people; that is usually the lever.\n7. Value each improvement by its downstream multiplier: `value = delta_people * downstream_rate * arpu_minor`.\n8. Segment by source and device; a funnel can look healthy blended and be broken on mobile.\n9. Report the table plus the one stage to fix first, with the modelled revenue lift.\n\n10. Track stage lateness: a signup that activates 20 days later belongs to a later cohort and distorts the recent window.\n11. Reconcile the ad platform's click count to your server-side landing count; a 10%+ gap is tracking loss.\n12. Weight improvements by downstream conversion so you fix where a lift propagates furthest.\n13. Watch the tail: a stage can look healthy at the median and lose a large segment entirely.\n14. Rebuild the funnel monthly and store it, so a change in one stage is attributable rather than inferred.\n15. Separate paid and organic funnels; blending them hides that organic carries a different drop-off profile.\n\n## Pitfalls\n\n- Quoting only the end-to-end rate, which makes a 2% click-through look like the whole problem when the leak is later.\n- Mixing cohorts: ad-platform impressions and ledger payments rarely cover the same window.\n- Counting a \"signup\" as email-submitted when the account is never activated inflates the next stage.\n- Optimising the lowest-rate stage instead of the highest-volume-loss stage spends effort where it moves least revenue.\n- The product of stage rates not equalling e2e reveals a tracking break you would otherwise miss.\n\n- Delayed activation assigns recent cohorts a falsely low rate; wait for maturity or model the lag.\n- Trusting the ad platform's click count when the server logs 15% fewer starts the funnel from a wrong denominator.\n- Optimising a median stage while a whole segment exits there loses eligible revenue the average hides.\n- A funnel rebuilt ad hoc each month cannot attribute a change to a stage.\n\n## Verification\n\n    python3 -c \"c=[2000000,40000,38000,4560,2280,570]; print([round(c[i+1]\u002Fc[i]*100,2) for i in range(len(c)-1)], round(c[-1]\u002Fc[0]*100,4))\"\n    # [2.0, 95.0, 12.0, 50.0, 25.0] 0.0285 -> stage rates multiply to the end-to-end rate\n\nReport: the stage table, the largest absolute leak, and the modelled revenue lift from a named improvement.\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fpayments\u002F0xklen-compute-funnel-conversion-from-impression-to-payment",17,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia","https:\u002F\u002Feth2030.com","Hardcore infra. Building @alt-research and applied cryptography.","2026-11-12 02:28:42",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill compute-funnel-conversion-from-impression-to-payment",{"tool":53,"command":54},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill compute-funnel-conversion-from-impression-to-payment",{"tool":56,"command":57},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill compute-funnel-conversion-from-impression-to-payment","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-compute-funnel-conversion-from-impression-to-payment\u002FSKILL.md",true,[61,65,71],{"path":62,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":16},"LICENSE","许可证",1063,{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"SOURCE.md","REFERENCE","参考文档",378,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-compute-funnel-conversion-from-impression-to-payment\u002FSOURCE.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-compute-funnel-conversion-from-impression-to-payment\u002FTRUST.auto.yaml",[76,104,127,145,158,168],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":80,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":33},"01M712C436EQYE43342Q4E7GG1","recipe-performance","Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold\u002Fwarm\u002Fbackground-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout\u002Fpaint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FSKILL.md",[],[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":109,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":33},"01M70XT2F8A5CQZ81JBP98KSW3","mexc-spot-websocket","MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FSKILL.md",[],[113,114,115,116,117,118,119,120,121,122,123,124,125,126],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":131,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":33},"01M70XT0MBXN3WZY1BKN0CPNKR","mexc-spot-rest","MEXC Spot REST workflows for public data, signed account requests, orders, wallet\u002Fadmin actions, and secure signing without exposing API keys.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FSKILL.md",[],[135,114,136,137,138,139,140,124,123,122,141,142,143,118,144,117,116],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":149,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":33},"01M70XSYSVZ2N0N91XCAR2CAK0","mexc-futures-websocket","MEXC Futures WebSocket workflows for public streams, private account\u002Forder\u002Fposition streams, ping\u002Fpong, subscriptions, and depth maintenance.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FSKILL.md",[],[153,154,115,155,156,125,123,157,121,120,118,117],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":159,"name":160,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":161,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":33},"01M6H0ZWHVE5W04WG2DKQE2SQC","0xklen-version-and-refresh-sanctions-lists","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FSKILL.md",[],[165,166,167],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":172,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":33},"01M6H0Z28Q3R8J0S799GJQWXM3","verify-tests-cover-changed-lines","Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FSKILL.md",[],[176,177,178,179,180,181,182,26,183,184,185],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]