[{"data":1,"prerenderedAt":187},["ShallowReactive",2],{"project:\u002Fpixel-and-tonic\u002Fcraft-console":3},{"project":4,"company":184},{"path":5,"title":6,"description":7,"link":8,"linkName":9,"layout":9,"images":10,"cover":9,"facts":45,"body":50},"\u002Fpixel-and-tonic\u002Fcraft-console","Craft Console","The companion to the Plugin Store: a place where customers manage their Craft and plugin licenses, order history, and billing info, and where plugin developers publish their plugins, connect their Stripe account to get paid, and track their sales.","https:\u002F\u002Fconsole.craftcms.com\u002F",null,[11,17,23,29,35,40],{"src":12,"width":13,"height":14,"alt":15,"caption":16},"\u002Fassets\u002Fwork\u002Fmore\u002Fconsole-login.webp",1888,1840,"The Craft Console sign-in form over a colorful gradient background","Signing into Craft Console.",{"src":18,"width":19,"height":20,"alt":21,"caption":22},"\u002Fassets\u002Fwork\u002Fmore\u002Fconsole-licenses.webp",1920,770,"Craft CMS license management table in Craft Console","Where customers manage their Craft and plugin licenses, orders, and billing info.",{"src":24,"width":25,"height":26,"alt":27,"caption":28},"\u002Fassets\u002Fwork\u002Fmore\u002Fcraft-console-plugins.webp",2514,1600,"Developer dashboard listing published plugins with installs and ratings","Where developers publish their plugins, connect Stripe, and track sales, keeping 80% of the revenue.",{"src":30,"width":31,"height":32,"alt":33,"caption":34},"\u002Fassets\u002Fwork\u002Fmore\u002Fconsole-orgs.webp",2400,1440,"Account switcher in Craft Console listing a user's organizations","Organizations let agencies manage their projects, licenses, plugins, and billing as a team.",{"src":36,"width":19,"height":37,"alt":38,"caption":39},"\u002Fassets\u002Fwork\u002Fmore\u002Fconsole-orgs-billing.webp",810,"Organization billing screen with payment methods and order approval toggle","Organizations: billing.",{"src":41,"width":19,"height":42,"alt":43,"caption":44},"\u002Fassets\u002Fwork\u002Fmore\u002Fconsole-orgs-permissions.webp",1329,"Invite members modal comparing member and admin permissions","Organizations: inviting members with different levels of permissions.",{"role":46,"team":47,"timeframe":48,"shipped":49},"Design and frontend for Craft Console, from specs and sketches to implementation.","Me (design and frontend), Brandon (CEO), and backend engineers on Console’s APIs.","Built with the Plugin Store: [announced at our Portland conference](https:\u002F\u002Fcraftcms.com\u002Fblog\u002Fwhat-we-announced-at-dot-all-2017 \"Craft blog: What We Announced at Dot All 2017\") in 2017, then launched with Craft 3 on April 4, 2018.","[Craft Console](https:\u002F\u002Fconsole.craftcms.com\u002F \"Craft Console\"), where the licenses bought in [the Plugin Store](\u002Fpixel-and-tonic\u002Fcraft-plugin-store \"Craft Plugin Store\") are managed and where [Craft Cloud](\u002Fpixel-and-tonic\u002Fcraft-cloud \"Craft Cloud\") is run.",{"type":51,"value":52,"toc":173},"minimark",[53,58,69,73,76,79,83,86,109,112,116,119,122,126,129,131,135,139,142,145,155,159,167,169,171],[54,55,57],"h2",{"id":56},"the-challenge","The challenge",[59,60,61,62,68],"p",{},"Developers had been extending Craft with plugins since version 1, with no central place to distribute them. They handled payments and licensing themselves, and customers bought plugins on separate websites. The ",[63,64,67],"a",{"href":65,"title":66},"\u002Fpixel-and-tonic\u002Fcraft-plugin-store","Craft Plugin Store","Plugin Store"," brought installing, buying and distributing plugins into one cohesive experience. Craft Console is the part of it that manages the licenses.",[54,70,72],{"id":71},"my-role","My role",[59,74,75],{},"For Craft Console, as for the in-app Plugin Store and the public marketplace, I wrote the specs, made the early sketches and the detailed mockups, listened to customer feedback, implemented the frontend, and connected the dots with the backend engineers building Console’s APIs.",[59,77,78],{},"I also knew the problem from the other side of the fence: a few years before, I was selling my own plugins through Gumroad.",[54,80,82],{"id":81},"three-surfaces-one-system","Three surfaces, one system",[59,84,85],{},"The Plugin Store came in three places sharing one system.",[87,88,89,98,104],"ul",{},[90,91,92,93,97],"li",{},"The ",[94,95,96],"strong",{},"in-app store"," sits inside Craft CMS, so installing or buying a plugin never takes you out of Craft.",[90,99,92,100,103],{},[94,101,102],{},"marketplace"," is a public website, there for discovery and search engines.",[90,105,106,108],{},[94,107,6],{}," is where customers manage licenses, orders and billing. Developers use it too, to publish plugins, link their Stripe account and follow their sales.",[110,111],"plugin-store-flow",{},[54,113,115],{"id":114},"for-customers-licenses-orders-and-billing","For customers: licenses, orders and billing",[59,117,118],{},"A plugin can be bought in the in-app store or on the marketplace. Either way, its license lives in Craft Console, next to the customer’s Craft licenses, their order history and their billing info. It’s also where a license is renewed for additional years of updates.",[120,121],"project-image",{"src":18},[54,123,125],{"id":124},"for-developers-publishing-and-getting-paid","For developers: publishing and getting paid",[59,127,128],{},"Plugin developers use Console to publish their plugins, link their Stripe account to get paid, and follow their sales. They keep 80% of each sale, and Pixel & Tonic keeps 20% for providing the service.",[120,130],{"src":24},[132,133],"stat-grid",{":stats":134},"[{\"value\":\"+1,000\",\"label\":\"plugins published, up from over 200 at launch\"},{\"value\":\"$9M+\",\"label\":\"paid to developers through September 2025\"},{\"value\":\"80%\",\"label\":\"of each sale goes to the developer\"}]",[54,136,138],{"id":137},"_24-hours-before-craft-3","24 hours before Craft 3",[59,140,141],{},"We had publicly committed to April 4, 2018, with a countdown. Craft 3 was an almost complete rewrite around a newer PHP framework, the engineers were deep in that transition, and the Plugin Store’s API came last, definitely a bit in a rush. We flew the whole team to Bend, Oregon, to spend a couple of weeks connecting the remaining pieces in one room.",[59,143,144],{},"About 24 hours out, we still had integration issues and API problems with buying and renewing plugins. I put the remaining UI refinements aside and focused entirely on functionality. People had to be able to buy a plugin and renew a license for additional years of updates, and that mattered more than a polished interface. We narrowed the last issue down to renewals, on the API side, so it could be fixed without holding back the CMS release.",[59,146,147,154],{},[63,148,153],{"href":149,"title":150,"rel":151},"https:\u002F\u002Fcraftcms.com\u002Fblog\u002Fcraft-3","Craft blog: Craft 3",[152],"nofollow","Craft 3 launched on its public date",", and new plugin purchases worked straightaway. Renewals ran in a degraded state for a few more hours, and the polish I had set aside shipped in the days after.",[54,156,158],{"id":157},"organizations","Organizations",[59,160,161,162,166],{},"Organizations let agencies manage their projects, licenses, plugins, and billing as a team. The idea came out of the brainstorming sessions we held with customers while rebuilding ",[63,163,165],{"href":164,"title":165},"\u002Fpixel-and-tonic\u002Fcraft-cloud","Craft Cloud",", which is managed and run from Craft Console too: they wanted to work as a team on projects, with licenses and billing that belong to the organization.",[120,168],{"src":30},[120,170],{"src":36},[120,172],{"src":41},{"title":174,"searchDepth":175,"depth":175,"links":176},"",2,[177,178,179,180,181,182,183],{"id":56,"depth":175,"text":57},{"id":71,"depth":175,"text":72},{"id":81,"depth":175,"text":82},{"id":114,"depth":175,"text":115},{"id":124,"depth":175,"text":125},{"id":137,"depth":175,"text":138},{"id":157,"depth":175,"text":158},{"path":185,"title":186},"\u002Fpixel-and-tonic","Pixel & Tonic",1794580507551]