[{"data":1,"prerenderedAt":390},["ShallowReactive",2],{"post-nextmatch-new-pricing":3,"toc-/blog/nextmatch-new-pricing":179,"about":290,"read-more-/blog/nextmatch-new-pricing":368},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"cover":11,"coverAlt":12,"lang":13,"tags":14,"body":17,"_type":173,"_id":174,"_source":175,"_file":176,"_stem":177,"_extension":178},"/blog/nextmatch-new-pricing","blog",false,"","Launching nextmatch.lol new pricing","How I came to redesign the packaging for the paid plan of my app nextmatch.lol.","2026-06-06","/images/articles/covers/nextmatch.jpg","Nextmatch.lol logo","en",[15,16],"gaming","product",{"type":18,"children":19,"toc":166},"root",[20,28,45,50,57,71,76,82,87,93,98,103,123,129,134,149,154],{"type":21,"tag":22,"props":23,"children":25},"element","h1",{"id":24},"launching-nextmatchlol-new-pricing",[26],{"type":27,"value":8},"text",{"type":21,"tag":29,"props":30,"children":31},"p",{},[32,34,43],{"type":27,"value":33},"I’m building a utility app to sync League of Legends (LoL) esports matches to your Google Calendar. I’ve soft-launched ",{"type":21,"tag":35,"props":36,"children":40},"a",{"href":37,"rel":38},"https://nextmatch.lol?ref=laurentcazanove.com",[39],"nofollow",[41],{"type":27,"value":42},"nextmatch.lol",{"type":27,"value":44}," during Worlds 2025.",{"type":21,"tag":29,"props":46,"children":47},{},[48],{"type":27,"value":49},"The app is simple and has a clear purpose. I talked about it on Reddit and managed to attract a few users, thus validating its usefulness.",{"type":21,"tag":51,"props":52,"children":54},"h2",{"id":53},"from-free-for-all-to-premium",[55],{"type":27,"value":56},"From free-for-all to premium",{"type":21,"tag":29,"props":58,"children":59},{},[60,62,69],{"type":27,"value":61},"This Spring, I launched the app’s paid plan, ",{"type":21,"tag":35,"props":63,"children":66},{"href":64,"rel":65},"https://nextmatch.lol/pricing?ref=laurentcazanove.com",[39],[67],{"type":27,"value":68},"nextmatch+",{"type":27,"value":70},". My initial goal was to provide as much value for free as possible and get power users to pay for more features.",{"type":21,"tag":29,"props":72,"children":73},{},[74],{"type":27,"value":75},"Following its initial free-for-all early days, the product was designed so you could subscribe to all matches in a tournament for free. The paid plan granted the ability to customize which teams to follow and, in practice, unfollow—since by default you’d follow all teams.",{"type":21,"tag":77,"props":78,"children":81},"article-image",{"src":79,"alt":80,"title":80},"/images/articles/nextmatch-pricing-v1.png","Nextmatch.lol old pricing",[],{"type":21,"tag":29,"props":83,"children":84},{},[85],{"type":27,"value":86},"Basically, if you found the free version of the app cluttered your calendar with too many matches, you could upgrade to remove that clutter. That seemed like a real need to me, because too many events in the calendar were pushing me toward hiding it.",{"type":21,"tag":51,"props":88,"children":90},{"id":89},"rethinking-the-pricing-model",[91],{"type":27,"value":92},"Rethinking the pricing model",{"type":21,"tag":29,"props":94,"children":95},{},[96],{"type":27,"value":97},"The need for clarity was real. But the feature and packaging were problematic. Users would pay for clarity, not for more value. The upgrade path was less attractive than I wanted it to be.",{"type":21,"tag":29,"props":99,"children":100},{},[101],{"type":27,"value":102},"Plus, since users would pay to follow only some teams, they’re syncing fewer matches to their calendar. This meant that free users would actually cost me more compute time than paying users.",{"type":21,"tag":29,"props":104,"children":105},{},[106,108,114,116,121],{"type":27,"value":107},"I learned the lesson that I ",{"type":21,"tag":109,"props":110,"children":111},"strong",{},[112],{"type":27,"value":113},"was giving away too much for free",{"type":27,"value":115}," and needed to harden my pricing economics. Making ",{"type":21,"tag":35,"props":117,"children":119},{"href":37,"rel":118},[39],[120],{"type":27,"value":42},{"type":27,"value":122}," sustainable requires making it viable economically. Self-funding the app through revenue enables me to keep serving users without going bankrupt.",{"type":21,"tag":51,"props":124,"children":126},{"id":125},"new-pricing-plans",[127],{"type":27,"value":128},"New pricing plans",{"type":21,"tag":29,"props":130,"children":131},{},[132],{"type":27,"value":133},"I will roll out new pricing plans that replace the previous options:",{"type":21,"tag":135,"props":136,"children":137},"ul",{},[138,144],{"type":21,"tag":139,"props":140,"children":141},"li",{},[142],{"type":27,"value":143},"Free forever — Follow up to 2 participating teams across all tournaments",{"type":21,"tag":139,"props":145,"children":146},{},[147],{"type":27,"value":148},"Premium — Follow any number of participating teams",{"type":21,"tag":29,"props":150,"children":151},{},[152],{"type":27,"value":153},"My goal is to release it this month with the Mid-Season Invitational and the Esports World Cup coming up. International competitions are the pinnacle of LoL esports. They usually attract new users, which is a good opportunity to test my new pricing model.",{"type":21,"tag":29,"props":155,"children":156},{},[157,159,164],{"type":27,"value":158},"Want to sync LoL esports matches to you Google Calendar? Sign up at ",{"type":21,"tag":35,"props":160,"children":162},{"href":37,"rel":161},[39],[163],{"type":27,"value":42},{"type":27,"value":165},"!",{"title":7,"searchDepth":167,"depth":167,"links":168},5,[169,171,172],{"id":53,"depth":170,"text":56},2,{"id":89,"depth":170,"text":92},{"id":125,"depth":170,"text":128},"markdown","content:blog:nextmatch-new-pricing.md","content","blog/nextmatch-new-pricing.md","blog/nextmatch-new-pricing","md",{"body":180},{"type":18,"children":181,"toc":285},[182,186,196,200,204,214,218,221,225,229,233,237,252,256,260,271,275],{"type":21,"tag":22,"props":183,"children":184},{"id":24},[185],{"type":27,"value":8},{"type":21,"tag":29,"props":187,"children":188},{},[189,190,195],{"type":27,"value":33},{"type":21,"tag":35,"props":191,"children":193},{"href":37,"rel":192},[39],[194],{"type":27,"value":42},{"type":27,"value":44},{"type":21,"tag":29,"props":197,"children":198},{},[199],{"type":27,"value":49},{"type":21,"tag":51,"props":201,"children":202},{"id":53},[203],{"type":27,"value":56},{"type":21,"tag":29,"props":205,"children":206},{},[207,208,213],{"type":27,"value":61},{"type":21,"tag":35,"props":209,"children":211},{"href":64,"rel":210},[39],[212],{"type":27,"value":68},{"type":27,"value":70},{"type":21,"tag":29,"props":215,"children":216},{},[217],{"type":27,"value":75},{"type":21,"tag":77,"props":219,"children":220},{"src":79,"alt":80,"title":80},[],{"type":21,"tag":29,"props":222,"children":223},{},[224],{"type":27,"value":86},{"type":21,"tag":51,"props":226,"children":227},{"id":89},[228],{"type":27,"value":92},{"type":21,"tag":29,"props":230,"children":231},{},[232],{"type":27,"value":97},{"type":21,"tag":29,"props":234,"children":235},{},[236],{"type":27,"value":102},{"type":21,"tag":29,"props":238,"children":239},{},[240,241,245,246,251],{"type":27,"value":107},{"type":21,"tag":109,"props":242,"children":243},{},[244],{"type":27,"value":113},{"type":27,"value":115},{"type":21,"tag":35,"props":247,"children":249},{"href":37,"rel":248},[39],[250],{"type":27,"value":42},{"type":27,"value":122},{"type":21,"tag":51,"props":253,"children":254},{"id":125},[255],{"type":27,"value":128},{"type":21,"tag":29,"props":257,"children":258},{},[259],{"type":27,"value":133},{"type":21,"tag":135,"props":261,"children":262},{},[263,267],{"type":21,"tag":139,"props":264,"children":265},{},[266],{"type":27,"value":143},{"type":21,"tag":139,"props":268,"children":269},{},[270],{"type":27,"value":148},{"type":21,"tag":29,"props":272,"children":273},{},[274],{"type":27,"value":153},{"type":21,"tag":29,"props":276,"children":277},{},[278,279,284],{"type":27,"value":158},{"type":21,"tag":35,"props":280,"children":282},{"href":37,"rel":281},[39],[283],{"type":27,"value":42},{"type":27,"value":165},{"title":7,"searchDepth":167,"depth":167,"links":286},[287,288,289],{"id":53,"depth":170,"text":56},{"id":89,"depth":170,"text":92},{"id":125,"depth":170,"text":128},{"_path":291,"_dir":7,"_draft":6,"_partial":6,"_locale":7,"title":292,"description":293,"actions":294,"excerpt":299,"body":313,"_type":173,"_id":365,"_source":175,"_file":366,"_stem":367,"_extension":178},"/about","About","Laurent Cazanove is a freelance software engineer specializing in developer experience.",[295],{"text":296,"href":297,"icon":298},"Contact","/contact","CONTACT",{"type":18,"children":300},[301],{"type":21,"tag":29,"props":302,"children":303},{},[304,306,311],{"type":27,"value":305},"Laurent Cazanove is a ",{"type":21,"tag":109,"props":307,"children":308},{},[309],{"type":27,"value":310},"freelance software engineer",{"type":27,"value":312}," specializing in developer experience.",{"type":18,"children":314,"toc":363},[315,324,350],{"type":21,"tag":29,"props":316,"children":317},{},[318,319,323],{"type":27,"value":305},{"type":21,"tag":109,"props":320,"children":321},{},[322],{"type":27,"value":310},{"type":27,"value":312},{"type":21,"tag":29,"props":325,"children":326},{},[327,329,334,336,341,343,348],{"type":27,"value":328},"He helps dev tools build great onboarding experiences through his ",{"type":21,"tag":109,"props":330,"children":331},{},[332],{"type":27,"value":333},"technical writing",{"type":27,"value":335},", ",{"type":21,"tag":109,"props":337,"children":338},{},[339],{"type":27,"value":340},"UX writing",{"type":27,"value":342},", and ",{"type":21,"tag":109,"props":344,"children":345},{},[346],{"type":27,"value":347},"full-stack development",{"type":27,"value":349}," skills.",{"type":21,"tag":29,"props":351,"children":352},{},[353,355,361],{"type":27,"value":354},"Learn more about ",{"type":21,"tag":35,"props":356,"children":358},{"href":357},"/developer-experience",[359],{"type":27,"value":360},"developer experience consulting",{"type":27,"value":362},".",{"title":7,"searchDepth":167,"depth":167,"links":364},[],"content:about.md","about.md","about",[369,376,383],{"_path":370,"title":371,"description":372,"date":373,"cover":374,"coverAlt":375},"/blog/why-league-of-legends-needs-to-step-up-its-data-game","Why League of Legends needs to step up its data game","League of Legends needs better data access to boost performance and analytics. Discover how industry experts and platforms are advancing the game.","2022-07-02","/images/articles/covers/why-league-of-legends-needs-to-step-up-its-data-game.jpg","League of Legends Worlds Championship Cup",{"_path":377,"title":378,"description":379,"date":380,"cover":381,"coverAlt":382},"/blog/video-games-were-my-creative-hobby","Video Games Were My Creative Hobby","Discover how a passion for video games transformed into a creative journey with RPG Maker. Read the full story and of where following my curiosity brought me.","2022-03-13","/images/articles/rpg-maker-mv-world-map.jpg","A world map made with RPG maker",{"_path":384,"title":385,"description":386,"date":387,"cover":388,"coverAlt":389},"/blog/launching-a-recruitment-platform-for-classic-guilds","Launching a recruitment platform for Classic guilds","Recruitment never stops when you're running a Classic guild. I created an app to help guild leaders recruit new members.","2021-03-11","/images/articles/classic-wow-onyxia-raiding.jpg","Players fighting against Onyxia, a WoW raid boss",1780715113426]