WP Café #122 | Building Email Templates 😫 ![rw-book-cover](https://i.ytimg.com/vi/ZE03u1-JqO0/maxresdefault.jpg?v=6842b302) ## Metadata - Author: [[Highrise Digital]] - Full Title: WP Café #122 | Building Email Templates 😫 - Category: #articles - Document Note: --- tags: - #wordpress - #emailtemplates - #agencylife - #plugincustomization - #webdevelopment - #clientmanagement - #pricingstrategy - #knowledgebase - #AItools Author: Mark Wilkinson & Keith Devon Source: WP Café Podcast Episode 122: Building email templates 😫 (YouTube) Reference: https://www.youtube.com/watch?v=ZE03u1-JqO0 date created: 2025-06-10 18:30 --- # Title: Building HTML Email Templates and Agency Life Challenges – WP Café #122 Notes ## Table of Contents: - 📝 Summary - 📖 Main Content - 🗒️ Notes - 📖 References - 🗣️ Paraphrase - 📰 Newsletter - ✅ Action Items - 🧪 Hypotheses - 📊 Methodology - ❓ Questions - 🔮 Future Research - 💡 Implications - 🧠 Learning Styles Assessment - 📊 Accessibility Assessment - 🌍 DEIB Assessment - ✅ Logical validity - 🔍 DARVO Analysis - 🔍 SEO Evaluation - 🎯 Conclusion ### References: - WP Café Episode 122 (YouTube): https://www.youtube.com/watch?v=ZE03u1-JqO0 - Content Notify Plugin by Jack McConnell: https://wordpress.org/plugins/content-notify/ - Jonathan Stark on Value-Based Pricing: https://thestarkman.com/value-based-pricing/ - WordPress.com AI Website Builder Announcement: https://wordpress.com/ai-website-builder ## 📝 Summary: This episode dives deep into the real-world struggles of building and customizing HTML email templates for clients within a WordPress agency context. Mark Wilkinson and Keith Devon share their frustrations with archaic email rendering standards, plugin limitations (Content Notify), and the challenge of quoting and pricing work they have little prior experience with. They also discuss managing live product bugs (job relay queue system), knowledge retention for repetitive fixes, and their skepticism toward new AI tools such as WordPress.com’s AI website builder. Throughout, themes of client trust, transparency in quoting, and the tension between fixed and hourly pricing models emerge as central challenges for agencies. ## 📖 Main Content: Mark and Keith start by reflecting on typical agency life, with a focus on the often overlooked pain points in WordPress project delivery—specifically around email template building. They describe how modern web standards are still unsupported by many email clients, forcing developers into "table inception" HTML structures that are brittle and hard to maintain. Their attempts to customize the Content Notify plugin expose its limitations in email template flexibility, ultimately forcing code hacks to achieve desired outcomes. A significant portion of the discussion revolves around the difficulty of quoting and pricing custom work when the scope and complexity are unclear upfront. They weigh the pros and cons of hourly versus value-based pricing, emphasizing the importance of client trust and transparency. The duo also wrestle with the tension of delivering quality within tight budgets and uncertain timelines. Beyond email templates, they recount troubleshooting a memory limit error in a background job processing system (job relay), illustrating the unpredictable nature of live system debugging and the need for staged rollouts to minimize client impact. Finally, Mark and Keith share their ambivalence about AI tools—highlighting a failed attempt to use WordPress.com's AI website builder, which repeatedly times out, reinforcing skepticism about premature AI adoption in web development workflows. ### 🗒️ Notes #### 🎬 [0:03 - 2:00] Introduction and Agency Life Context - Hosts Mark Wilkinson and Keith Devon introduce WP Café episode 122 focused on email template building. - Brief chat about gardening and personal life to humanize the episode. - Early mention of AI discussions and their potential impact on development workflows. #### 🎬 [2:17 - 4:00] AI and Personal Communication Concerns - Keith expresses unease about AI's role in personal communication, noting discomfort with AI-generated emails feeling inauthentic. - Mark agrees but suggests deeper AI discussion is for another episode. #### 🎬 [4:00 - 7:30] Debugging Memory Issues in Job Relay Background Processing - Mark shares a frustrating experience fixing a memory limit error after deploying a queue system for job processing. - The issue didn’t appear locally but manifested on the live server, necessitating rollback and careful staged reintroduction for clients. #### 🎬 [7:58 - 14:00] Email Template Challenges and Content Notify Plugin Limitations - Keith reveals email templating remains archaic in 2025, requiring nested tables for consistent rendering across clients. - Content Notify plugin allows only minimal template customization; complex overrides not supported without hacking core plugin code. - Initial success in local environment does not translate to good rendering in Gmail, leading to significant frustration. #### 🎬 [14:30 - 16:30] Attempts with Online Drag-and-Drop Email Builders - Trying to use tools like Campaign Monitor and Mailchimp's drag-and-drop editors produces overly complex HTML unsuitable for direct plugin use. - After days of work, they revert to simple branding tweaks to meet client expectations. #### 🎬 [16:30 - 22:00] Pricing and Quoting Work with Unclear Scope - Hourly rates vs. fixed pricing debated, with uncertainty on how to quote when tasks could take vastly different times. - Trust in developer expertise highlighted as key for client willingness to accept hourly pricing. - A paid scoping phase is suggested to better estimate and avoid surprises, but real challenges remain in scoping unknown tasks. #### 🎬 [22:00 - 26:00] Client Budget Transparency and Managing Expectations - Clients often don’t disclose budgets, complicating quoting and prioritization. - Discussion about managing client expectations and offering options for custom builds vs. plugin configurations. #### 🎬 [26:00 - 34:00] Knowledge Retention, Documentation, and Learning from Mistakes - Both hosts express frustration about not remembering solutions to previously solved bugs or coding issues. - Suggest blogging or creating a knowledge base as a solution, but discipline and searchability are challenges. - Emphasizes documenting major fixes rather than every minor tweak to maintain sanity and productivity. #### 🎬 [34:00 - 38:00] WordPress.com AI Website Builder Experience - Mark shares failed attempts to use WordPress.com’s new AI website builder, which times out and produces no output. - Speculation about AI facade vs. human workers; frustration with the technology’s immaturity and reliability. ## 📖 References: - WP Café Episode 122 Transcript & Video: https://www.youtube.com/watch?v=ZE03u1-JqO0 - Content Notify Plugin: https://wordpress.org/plugins/content-notify/ - Jonathan Stark Value-Based Pricing: https://thestarkman.com/value-based-pricing/ - WordPress.com AI Website Builder: https://wordpress.com/ai-website-builder ## 🗣️ Paraphrase: 1. Original: "Email templating is horrific... you still have to do table inception, tables wrapped in tables wrapped in tables. It’s horrific." Paraphrase: Crafting email templates remains a frustrating ordeal because modern HTML and CSS standards aren't fully supported in email clients. Developers must resort to deeply nested tables, making the markup complex and hard to maintain. 2. Original: "But how do you quote for that work when you haven't done it? We had a stab, but completely failed miserably at getting the right quote." Paraphrase: Estimating the time and cost for unfamiliar projects is tough. Without prior experience, attempts to quote accurately often fall short, leading to misaligned client expectations and project challenges. ## 📰 Newsletter: Hey WordPress fans! This week on WP Café, Mark and Keith share the gritty realities of agency life tackling HTML email templates — a surprisingly tough nut to crack due to outdated email client standards. They dive into plugin limits, frustrating client requests, and the tricky art of pricing projects with unknown scopes. Plus, they battle a pesky memory bug in their job relay system and test drive WordPress.com’s AI website builder (spoiler: it’s still a work in prog - Summary: Follow us: X / https://twitter.com/highrisedigital | https://twitter.com/wpcafeshow Linkedin / https://www.linkedin.com/company/highrisedigital/ Website: https://highrise.digital/ | https://wpcafe.show Checkout our products: JobRelay: https://jobrelay.io Integrate your WordPress website with popular job posting and distribution software. RecPress: https://recpress.com Better WordPress job board, done for you. Highrise Digital is a 2 person WordPress development team based in the UK. They primarily work with Recruitment Agencies to build integrations with WordPress. They also build WordPress recruitment websites as well as sites for companies in other selected sectors. On this channel we provide WordPress development and business advice for solo and small WordPress teams. We help you to level up your development and business skills with quick tips, live coding and chats with other industry professionals. There's an overwhelming amount of information out there and lots of people telling you the 'best' way to do things. At Highrise Digital, we strip away the guilt and show you practical, pragmatic ways that developers can improve. This is how WE do things, warts and all! - URL: https://www.youtube.com/watch?v=ZE03u1-JqO0 Hello everybody and welcome to episodenumber 122 of the WP Cafe Show withmyself, Mark Wilkinson, and as always, I amjoined by my co-host, Keith Devon. We'reboth from High-Rise Digital, a tinyagency that builds WordPresswebsites and products. And this is theWP Cafe Show where we talk about theunfiltered, real-life agency life thatthe two of us kind of go throughand discuss WordPress topics thatrelate to that. Today we'rediving into HTML templatebuilding. We're looking at various otherthings, including quoting for work. A bitof an update on some work we talkedabout in previous episodes as well. So if you've listened to those and youwant to know what happened, you'reprobably in the right place. You canfollow the show on X at wpcafe show.We're also on Blue Sky at wpcafe.show,which is also the website where you canfind past episodes of the show. And ifyou enjoy this episode, please hitsubscribe and like. Leave us a commentbelow and share this with someone youthink might find it useful. We loveto hear your thoughts, so please dojoin in the conversation. Listening along live on YouTube, let usknow that you're listening in thecomments and where you are listeningfrom. That'd be nice. So, as always,Keith, how have you been this week?Yeah.Uh, good. Um, what's new? Outsideof uh work, I'm enjoying watching mygarden come to life. I'm not a superkeen gardener, but I doappreciate, you know, when all theflowers come out and we've got some niceuh when we moved into the house, the gardenhad loads of nice old rose bushes andstuff. So this time of year it all kindof springs to life and it is, uh, yeah,been really enjoying that. What elsehave you been up to? Uh, oh, I've been like notdoom scrolling but doom watching aboutuh AI and the future of humanity. So, uh, I was watching, I said this to youearlier, like the Diary of a CEOpodcast. I was watching a YouTube videoand it'sum, is it Steven Bartlett? I think it'sSteven Bart and, uh, three others on apanel, just chatting about the futureand what AI is going to do for us andhow it might harm us. And it's, I justyeah, I find it kind of fascinating. There’s one guy on the panel. He’sthe CEO, founder, or whatever of Replet,which is like a code AI builder, an AIsoftware builder that I’d heardof before. And he’s just likerelentlessly optimistic and justdismissive of all the potential horrorsthat we’re going to face. He just—andit’s scary. It’s people like him thatare driving all of this forward withoutany real consideration for what’sactually going to happen. And yeah,they’re just, I don’t know, head in thesand, full steam ahead. Um, soyeah, that’s been it—it’s worthchecking out if you’re interested in thetopic generally. It’s quite aninteresting discussion. There area few times I wish he’d been pulledup by the others on some specificpoints, but um, yeah, worth looking into. And I just keep feeling likeevery time—no, not every time, but certaintimes that I reach for ChatGPT orChatGPT rather than Cursor, I don’t—I don’t really care so much when I’mwriting code, but when I’m writingand I’m asking ChatGPT to improve this emailor that, it feels a bit gross. Feeling, isn't there about it? It's likethat's not me anymore. I didn't sendlike I kind of didn't send that emailanymore. That's not, I'm notcommunicating as a human to anotherhuman. And there's somethingthat's starting to feel deeply unsettling aboutthe whole thing. Uh, so yeah,that's nice. Happy start to the show.Um, how do you feel about it all, Mark?Um, well, just I think that's a wholeother episode if we're going to starttalking about AI and we're not experts.I don't think we can do an episode onit, but yeah. Yeah, I uh, I mean I'musing it. I fear that it's goingto go in the wrong direction becausethat's where people will take itunfortunately. But yeah, we will see.We'll see. And that's something else. Um, my week has been, it's been kind offrustrating. It's been one of thoseweeks where you start to dosomething and then you can't because ofsomething else, and then you startsomething else, and then something elsedoesn't want to work properly orsomething like that. It's just been likea week of frustration. Like I wasI was working on something yesterday or the day before, and I was adding afilter to something. I got thefilter name and the function the wrongway around. For like 20 minutes, Ijust could not see what I was doing wrong. It was ridiculous. I just sat therethinking, "This is ridiculous, Mark.You've been doing this for 15years. There’s nothing wrong with thiscode in front of you." Then I put itinto ChatGPT and it just said, "Yeah,you've got those the wrong way around."I was like, "Oh my god." Yeah. Well,there’s the good side of AI, right?So that’s been my frustratingweek. I’ve been trying to build someblocks this morning with ACF in the kindof like the new ACF. Peopleprobably think, "What do I mean by that?"Last time we built blocks this year, Ithink it was like the very first orsecond versions of it, and this is themore native one where you just register it with a blockJSON file. Uh, yeah, it’s been going all right.There have been some funny things happening, but I thinkthat's just my local environment becauseit’s not really very good in terms of updates. To date with the live site and things.So, I've persisted and continued. That’s been good.Um, and then I've been working a bit onthe job relay product. I don't knowif we want to talk about that now, anupdate or we want to... Yeah, go for it.Why not? Rolling. Last week and probablythe week before, I was working onbackground processing, passing jobsto a queue essentially. A jobcomes in to us, we add it to the queueto get sent out to the website thatit's needed to be delivered to. Ibuilt that and it was great. ThenI pushed it live and it was great. Um, and then about three days later, itwasn't great. It started to break.I got several emails frompeople in the morning saying, "My jobshaven't posted or what's going on?" SoI looked into it and it appears asthough the error that was beinggenerated was that the allowed memory sizehad exceeded whatever number it was.That was the only thing I could getto. So, like a PHP memorylimit essentially. Which neverhappened locally with loads of testing. So I just don't really know what itwas. And then I'm at the point where Idon't really know what's causing thatmemory problem. And then I was in theposition where the only way I can fixthis is to keep it broken, really, andthen start doing some debugging, likewhat's the last process that's run or something like that. Ijust can't do that becauseeveryone wants, you know, it's a livesystem. So I was a bit stuck, really, likewhat do I do? So in the end, I justrolled it back to what we had before. Umand I've left it like that. And thenearly this week anda bit yesterday evening, I was lookingat trying to put it back in but to try and pickand choose customers that use it. Soessentially, we've got like a version onewhich is the old system, and then we'llhave a version two, which is the new wayof doing it. And then I can just say, heylet's just try this with customer X. Setthem to version two, and then they canstart using this. And then maybe if thatdoesn't break, we can set, you know,another customer to it and then see atwhat point it breaks and then maybeBecause you're only dealing with twocustomers then and not hundreds ofcustomers, you can then say, "Well, actually,let's just leave that for an hour. We'll try and fix it. I'll get some datafrom it, and then we can roll them backto version one and so on. At least I'vegot, you know, if it breaks on versiontwo, at least I've got a fix to theclient to say, "Oh, I'll just flip it backto version one and just go and push thejobs again, and it'll work." Um, so thatthat was a bit frustrating in havingkind of built it, tested it as bestI could, and then, weirdly, it worked,and then it didn't work. So anyway, Idon't know. Yeah, work in progress.We're still going to carry on with it.So, um, I'll keep you updated as towhat's happening. Yeah, it definitelyfeels like it's the right long-termapproach, but yeah, really hard to debugthis stuff. Yeah, I think, I think it is.Um, yeah, but I was saying to youlast, last, last week or whatever it was,I was like,for 99% of people, it's fine theway it is. It's just the odd one that,you know, has lots of jobs and thingsand it causes a bit of an issue. I don't know. But, I’ll keep going.It's interesting work. There's nothingelse, and you learn a lot from it. So,we'll be back on with that. Um, begood. So, the headline for today's showwas email templates. I think this hasbeen the pain of Keith's life for thepast two weeks. Yeah. Um, so do you tellabout all email templates? What, ahso we have a client with a job board, andthey want to allow users to sign up forjob alerts. So the user would say, "Sendme an email every time a job in thiscategory is posted," or a daily digest, orweekly digest, or whatever. Uh, we endedup choosing the content notificationplugin for the task, um, by JackMcConnell. Is it Jack McConnell? I thinkso. Yeah. Um, and it does a really good job, likealmost perfect out of the box.Um, so we got it all set up. It wasworking. It was sending emails. Um, youknow, it worked with our job posttype, and then the client said, "Yeah,that's great, uh, can we just make a fewchanges to the email itself?"Um, and I thought, "Yeah, I mean, I can'timagine that's too difficult."Three days later, did you know... Later, I am going back to the clientsaying, "I've just wasted the last threedays. You’re, you know, you basically canhave it out of theornothing." Uh, because, well, for variousreasons. One, just uh, email templating ishorrific. I and I do, you know, what Idon’t understand why.Because lots of us use web browsers tolook at email. And even if you don’t, Idon’t know why email clients can’tjust renderemails like they do a website. So whycan’t— the question is, why can’t we usemodern HTML and CSS in email? Because what you still have to do in 2025apparently is like table inception. Solike tables wrapped in tables, wrappedin tables, wrapped in tables, wrapped intables. It’s horrific. Um, sothat was one of— that was one of theproblems. Just creating atemplate and styling system thatwill render fairly consistently acrossdifferent clients and browsers, etc., isso difficult. So that was one thing. Andthen the other thing was reallyunfortunately, the content notify pluginisn’t very customizable. He has got this concept of templates.So, I can put a template file in mytheme and change the contents of thattemplate, but it's not enough. You canonly change one very small part of the email that gets sent,not the whole email. Um there's nothere's not enough classes in themarkups that I can hook into, you know, justhook into stuff just using basic CSS.It's really not very customizable. And to be fair to Jack, I can now seewhy, because actually making itcustomizable would be really hard.I think, I think it could be better for sure. It could be better.Um, but it would be hard. What I ended uptrying in the end, so I was fiddlingabout with it, hacking it. I decidedeventually I’m just going to hack theplugin itself and just set theversion number to 999 so it never getsoverwritten. And I’m just going to makechanges to the plugin itself becausethat’s the only way I could get themarkup that I needed. So, I starteddoing I think it’s worth saying whythat’s the case, and it’s because thetemplate files that you can put intoyour theme to override them, they getPassed, um, I think it's called amessages variable in the template. But the problem is the messages containa loop of all the jobs that areactually going to be in the email, butthat's all HTML as well. So yeah, youcan't override that. So what you reallywant is for the template to be passed rawdata and then the template deals withthe raw data, essentially, rather thanhaving the markup in there. Now, Jack'sprobably done it that way because heknows very well that people like Keithwill come along and not be able tocreate the markup correctly, so that itbreaks, possibly. But that's whywe ended up just saying, "Let's just dealwith the raw, the raw plug-in tostart, even if it's just a startingpoint. Can we get something working? Yeah. So, my I got something lookingreally good in my, um, local kind of emailtesting environment, and I was like, "OhGod, you know, two days in, or whateverit was. I've done it." Youknow, I barely charged an hour for thiswork. I don't like it; I was like,"I've done it. Clients will be happy."And then I sent it to my Gmail and itjust looked awful. Oh my God, this isThis is horrific. So then, what I thoughtI'ddo is I looked for email templatebuilding tools online. Yep. So, you knowyou can go into Campaign Monitoror Mailchimp and you can create anemail. Yeah, right? A drag-and-dropinterface, kind of WYSIWYG kind ofthing. Um, so I thought, I wonder if there arejust free online tools that can dothat, and then I can grab the HTML andthen I'll put that HTML into thetemplates or back into the plug-in, andthen I'll just play with that.Um, I tried to do that and itcreated a really nice emailtemplate, and then I copied the HTML andoh my God, it was just horrific. Like,it's obviously what's required to makeit work and make it editable in thissoftware. Yeah, but it was like itwas like taking div markup and tryingto do something sensible with it, youknow? ItSo, yeah, I got so far and I was just like, "Right, I think that's it workingnow." Tried it and it just was not there;there was no output, and I was like, "Right, I'mdone now. That, that’s that."So, I’ve gone back to theclient and just said, "Look, I’ve spentthree days kind of unpaid. Not fulleight-hour days, but I have spent the lastthree days trying to get this to workand I can’t." Uh, so yeah. So, lessonlearned. Don’t go anywhere nearemail template design. And somebody pleaseanswer the question as to why it’s so archaic,because I don’t understand that. That’s reallybeyond me. Um, so yeah, very frustrating. In terms of that, just for the viewers,what's happening now with this work? What’s theagreement to sort of make this work goingforward? I said I would go back to where we wereat the start with some very simple brandingchanges, like making the link color theirbrand color and putting the logo atthe top rather than that sort of stuff.Yeah, I think it’s functional, but it doesn’tlook good, and yeah, it’s really frustrating. Um, I always remember email templates being a pain.Everyone always says that. Yeah, I justdidn’t really foresee that, I think. Yeah, it's frustrating. It kind ofbrings us to the next topic, whichis quoting for work when you don't know.And this was one of those situations where, you know,the client said they wanted some job alertsinput put in. We were like, yeah, that'sdoable. There are several solutions outthere. You know what we use? I thinkwe're using Joby Job Manager with thisparticular site. They have an alertsadd-on. So that was the first thing wewanted to try and achieve, but thatwouldn't work because we weren't usingthe Job Manager shortcodes to outputthe jobs, and the alerts hook into that. So yeah, we could have probably done it,but again, it's not going to worknatively out of the box. So we decidedto look for some alternatives. I knewabout Content Notify. It doesexactly what we want. It allows you toselect a post type, and you collect allthe taxonomies in it and say, "Find mecontent when it's new in this," and so on.But it's like, how do you quote forthat work when you haven't done it? Likeyou haven't done it. We had a stab at this,but we hadn't done it,and we completely failed miserably. In terms of getting the right numberof quotes in it, um, I think that’sso, so difficult when you’ve never doneit before. What do you do? What does everyone else do? I’d love toknow. We’re really struggling withthis at the minute, aren’t we? Becausewe’ve got some ongoing clients, and one in particular isasking us to do quite a lot ofmini projects, and it’s just really painfulevery time to try to negotiate internallyabout what we should be charging for something. It’s like I literally have no idea. This is a perfect example; itcould have literally been to install theplugin and change a fewcolors, job done, or like it turnedout to be four or five days ofwork. So, what do you charge? Imean, should we just be on an hourlymodel where we say, "Sorry,client, we haven’t done thisbefore. We know we’re capable, butit could take us anywhere between threehours and three days, so we’re going to haveto charge you an hourly rate.” Is thatThe way to do it? I mean, are clientshappy with that? Is that — I don’t know. I honestly just don’t think that, youknow, I mean, yeah, just imagine yourbuilder saying, "Well, I want to buildan extension." And then he was saying,"Well, I just don’t know how long it’sgoing to take. Just charge me bythe hour, and when I want it done, it’llbe done. Yeah. I’d be like, "No, I needto know how much it’s going to cost." Ithink it really depends on the task,I mean, and the trust, becauseif you really trust that builderthatthey are good at their job and honest,and work hard, then why not payan hourly rate? Like surely that’s just how it’s going to take him or her,as long as it takes. Um, in thiscase, then, in this case, if youtake that building analogy, the builderwould have built the extension to acertain point and then said, "I can’t dothis. I can’t finish it. I haven’t gotthe skills. I’ve tried mybest, and I can’t do it." So what doeshe do then? Does he roll it back to nothaving, you know what I mean? That’s thedifficulty, I think, and that’s where toLike, once you’ve got so far and youcan’t finish it, you’ve done all thattime. I just think it’s so difficult to do. And we could have, yeah. Sorry. Go, go, goto Cameron’s comment there. I was goingto say it says paid scoping block ofhours up front to scope to give them anaccurate quote. And this is exactly whatwe said to each other that we should do.But the problem is until you got intothe specifics of this email template,yeah, this we wouldn’t have known this.So actually it wouldn’t have helpedbecause we’d have, you know, maybeinstalled the plugin, maybe done that,maybe tried to change some of the colorsin the thing, and then thought, “Yeah,that’s doable.” And then that’s that.And then, uh, once you get into thehard parts, that’s when it becomes theknowledge that we’ve gained in that itjust doesn’t work or it’s toodifficult. Excuse me. That’s where itbecomes really difficult. Well, I think in this particularincident—incident sounds like it was amajor incident. In this particular job,I think we didn’t really get a sense ofwhat the client wanted in terms of thedesign of the template or we certainlyI didn't appreciate how difficult that wasgoing to be to start with. Yeah. Andwe now know, like for the future, Imean, would we even do this again? I don'tknow because it is very different,which I think brings up a reallyinteresting question for us. So, Courtney,I'll just bring in Courtney's comment here. Um, couldn't you charge for some of itand take the learning forward to applyfor future clients? Make up the initialloss with future clients? Yes, andI really like that idea. That assumesthat we're going to be asked to do thisthing again. Yeah. Um, which we may, wemay or may not. And then the otherthing is, like you said, do we dothis again in the future if we're asked?I find it really, really hard to sayno, and I think that's partly just mypersonality type, but it'salso, once a client is working withus on their website, it's actually reallydifficult for themto go elsewhere. I mean, we don't makeit difficult necessarily, but I knowwhat you mean. We want to be the solutionto their technical website-related problems. Every time something comes up that we haven'tdone before or we're not 100% sure howwe're going to get from A to B, wejust say no. They're not going to beworking with us for that long becauseit's like, "Well, I need this or Ineed that." But what wecould have done in this particular example, they could havesaid, "We need this job alerts feature andwe need it to do X, Y, and Z." Now, I am95% confident we could have built thatfrom scratch. Yeah, if we'd have built it fromscratch, it would have just cost a lotmore money, though, wouldn't it, for theclient? And that's, I think, that's wherewe perhapsdon't know what the word is, but likeclients, we said we don't likegiving quotes that we think they won'taccept. Maybe we should just dothat. We should just say, "We could buildthis for you exactly as you wanted toand it'll be throwing a number outthere, 10 grand. Or we could try usingthis with these limitations for one. The problem is, Mark, we don’t know what thelimitations are until we start. The content notify plugin, and we were kind of committed to that fairly early on.It looked like it did the job. It met the brief. Yeah.Then the kind of brief sort of changes.What if, like, should we have tried another plugin as well? Just, and then that one might have been, yeah, this just works out of the box.It does everything we want, or another plugin, or another one.It's like, how far do you go?There could always be that five-minute or thirty-minute solution around the corner.I think that always plays on my mind as well; it's like, yeah, we could say you want this.It would cost us five grand to develop it—that's your quote.If we happen to find a plugin that does it in five minutes, then great.But I just don't think we'd be in business for very long if we're always charging.Like, I agree with what it would take for us to build from scratch.When there are these solutions out there, it just takes time to find them and configure them and test them.And I guess that's where experience comes in.We just weren't experienced in this area.But then, how do you gain that experience? Without going through this pain? Justcame to paid scoping. Like how muchdo you charge for paid scoping? Andcan you, because an hour might not beenough? Eight hours might not be enoughto understand whether it’s going to take25 hours or 25 days. That’s what Imean. It took me three orfour days to find out that I couldn’t dowhat I thought. So, atwhat point in the paid scoping processwould I have found that out? I wouldn’thave?That’s not entirely fair.We would have gotten further because wewould haveprobably looked earlier on at thetemplating, looked earlier on at theirdesired design, which shouldn’t havecome after the fact. Um, yeah, that’strue. Yeah. Sam says, “We always ask theclient if they have a budget for this project. There isalways different ways to get the samegoal.” I agree with that. And how manytimes, Sam, when you ask them, “What isthe budget for this project?” did theyactually tell you? Because in my experience, you don’t get a sense ofIf I said to our clients, "Okay, youwant this job alerts, how much do youwant to spend on it?" I wouldn't reallyget a proper answer as to what they wantto spend on it. I don’t know what youthink,Keith, because they really want thatguide from you, I think, as well. Well,they also don’t want to show their hand,you know? Then you might be thinking,"Do you know what? It would be worth spending £3,000on this, but if it’s going to take themfive minutes, I don’t want to tell themthat." Yeah. And that’s totally reasonable. That’s kind of totally reasonable aswell. Like, why should they pay £3,000for something that’s going to take usfive minutes? Just because it providesthat kind of value doesn’t mean that’s a fair pricenecessarily. Hang on. If it takes youtwo things. One, that comes back to thetrust that you were talking aboutbefore. Yeah. And two, why does itmatter if it takes you five minutes ifit delivers exactly what they wantand it provides the value that theythink that it’s going to provide?If they’re willing to spend £3,000 to doX, why does it matter if it takes youone minute or 20 years to do it? I thinkyou'll get the value. I think you werewilling to pay. It comes down totrusting in our expertise because wecould pretend to our clients that we've never heard of Gravity Forms. Yeah. Andnext time a client comes along to us andsays, "Uh, we really want this kind ofform solution that where you can dragand drop, we can make our own forms and,you know, send out differentnotifications and stuff. And we'd belike, "I mean, that's a lot ofwork. Um, that's going to that’s going tocost about 20 grand." And they'll be like,"Do you know what? In the longterm that's actually probably worth it."Is that okay? Is that okayfor us to charge 20 grand for installingGravity Forms? I just becauseyeah, just because theyhad their kind of need met—that kind ofvaluation. Is it okay to sell thaton? And I don't know. I just find thisstuff really hard. Like I'm a bigfollower of Jonathan Stark and the wholevalue-based thing. I think there'sCertain aspects of that philosophy have helped us transform high-rise digital; it's kind of helped us move away frombilling by the hour and just being a pair of development hands, and likeit actually probably helped us start offthe products and stuff like that. You know, productized kind ofservices, and that's been revolutionary. But it does have these kind of limitations for me; I'm sure Jonathan would have the answers to all our questions.But yeah, it just feels like in practice it kind of falls down a little bit, especially for these smaller projects, and I find it really hard.Really, really hard. Cameron says, "I think it's part of the mindset. Are you two blokes in a basement building WordPress websites orare you the world's leading experts in the field of online job management for WordPress?"I think we're somewhere in between, to be honest. I'm not in a basement; I'm in sort of like a garage conversion, to be honest.I get it; I don't know. Yeah. But what difference does that make,I guess, Cameron? Like where you... You going with that question? I'd loveto know,you know, what you're getting at in away.Um, yeah, because I kind ofunderstand, you know, what you're sayingthere, but I don't really understandkind of thepoint that's being made in a way becauseI still don't know how to price things.I think if we were, I think you'retalking about in like the basementanalogy, we're just yeah, we'll charge10 to 20 pounds an hour, and we'll just likecode away until things are done. Um,we're not necessarily that anymore, but we're still being asked todo that kind ofwork. I think that's the difficulty whenyou take on a whole project and you'redoing a lot of consultancy plus thecoding and you're just using a lot ofyour experience in that way. It’s mucheasier to kind of value price things, andjust have kind of, I don't know, it’s kindof more an art form in terms of pricing. Butthe smaller and more technicalthe piece of work gets, I find that'sharder and harder to do, um, especiallywhen so much of it is just researching. The solutions might not always be clear, and you might stumbleacross them. You might not like, I justI don’t know; I wouldn’t know. Thefrustrating thing is that I wouldn’t knowwhat to do next time when this same kind of situation comes up.I don’t feel like we’re in a better place,that we’ve learned a lesson. We’re notlearning. We’re not getting someanswers, which is why I think itfrustrates us so much. It doesfrustrate. Yeah,because usually you make mistakes,you learn from them, and then it doesn’tbother you because you can move on tothe next one and not make those mistakesand get it right. Whereas this onedoesn’t seem to have an answer, and it doesalways rear its head and causestress and confusion and so forth. So maybe we need a paid hour withJonathan Stark, and we can putall these questions to him. I think it’sabout £500 an hour. But this kind ofleads quite nicely into the next topic,which washow do you learn from mistakes goingforward. And I think, Mark, thatspecifically you were talking aboutthis. Maybe code fixes, um, and we comeacross a situation on a newwebsite. We're like, "I am sure we fixedthis problem before." Yeah, but I can'tremember how. It's come up a few timesrecently, hasn't it? I can't think ofan example. Well, the recentexample wasn't really the same sortof thing. I asked you, I think it waslast night, how did we— we've talkedabout this, uh, ACF version three of theblock JSON thing and how can you getthis working? So, I started buildingthis block, and oh, I better build thisin the new version three just so if weever convert the other blocks, it's going to work. And it's like we'vechatted about this on the show. I can'tremember what we decided. I can'tremember what the solution was that wasproposed. And it's just stuff like thatwhere you come across it, you think,"Right, I've done this. I've done thisbefore. I have it with job relay aswell. You know, someone has a problem.We find what the issue is, and thensomeone else has a problem six monthslater, and it's like, "I know I've donethis before. I know this," and I justcan't remember what it was. Um, so how does everyone elsesort ofremember those things? Do youhave a knowledge base or something? Ijust don’t know. What do you think?The answer is blog about it, and thennext time you Google it, your blog postwill come up.Okay. I think where I mean that’s whatwe used to do, isn’t it? We usedto say, “I’ve had this problem.This is how I solved it.” And then I’vedone it loads of times. Not so muchrecently because I’m not really blogginganymore. But I used to do it all thetime. I’d be like, “How do you do thisthing? How do you break out ofcontainers with CSS?” And I’d Google it. I was like, “Oh, there’s my article.”Yeah. So my question is, where do we dothat blog? It doesn’t really matter as longas Google indexes it. But yeah, so Idon’t know. Just wonder how everyoneelse handles this stuff. You comeacross these things all the time.You have a problem, you learn a fix forit. You know, it could have been quitean awkward one. I remember one with jobrelay was, you know, someone had the umAnother slug in WordPress is justcausing conflicts all the time. And itwas like, yeah, as soon as we changed it,it was like a Eureka moment. Oh myGod, we fixed this thing, you know. Andthen I had it six months down the lineand I knew there was something aroundand I just couldn’t remember it. I hadto go back through my emails and it wasa pain. It took me like an hour to findthe solution. I just want to be able tosort of say, "Oh, just check theknowledge base, you know, and we’ll justhave a look if that’s ever come upbefore." Oh, yeah, it does. There we go. And then, but I don’t know how to setthat up. I don’t, because it kind ofrequires like a good search, doesn’t it?And then I don’t know. And discipline tosort of add to it, and it does. Yeah. Imean discipline more than the search. Ithink the search side of it is handledby Google or a half-decent search pluginon the site if that’s what you want todo. Like freeplugins like relevancy are actuallyreally good. Um, you know, you’re notgoing to have the show notes. Rememberwe had the checkout that was broken onrepress.com. Yeah. I can’t remember; weDid. No, but we fixed it and I can't. Iliterally went on to thecheckout. What did we do? Ican't remember. Yeah. I even contactedEasy Digital Downloads and theydidn't fix it. I fixed it, but I can'tremember what I did. Yeah. Yeah. So, so if it ever happensagain, we're back. I don't know what todo. Yeah. And you're right about the discipline thing because where does thatend? Like, does every little bug fix thatyou make get logged on this tool? Imean, that would get ridiculous,wouldn't it? You'd never get any workdone. Um, but maybeI think certainly big things likethat where it's taken; I think you'llknow, your gut feeling will know this has been apain. I'm going to put this on becauseit's going to come upagain. Yeah. Um, but I just, it justdawned on me the other day that I hadcompletely forgotten how to docertain things, and with the realproblems that we've solved, weshould know now. That'swhat we're learning for. That's whywe're trying to build up anExpertise. But I don't know if whateveryone else does is nothing like us orif you should keep it in your mind. I don't know. Yeah. Is there a good solution? Yeah.Anyway, last but not least on the list isthe WordPress.com AI website builder.I think you were having a play with this, weren't you?Yeah. And I was really excited tohave a go. WordPress.com announced an AI builder.It's atwordpress.comai-website-builder. Um, just Google it.It's in the footer of the WordPress.com.Um, so I went on and I was hoping to beable to chat to everybody about howgreat this AI builder is. I've tried itthree times and I just get a loadingscreen. So I haven't ever built awebsite with it. So, I don't really havea whole lot to say, except has anyoneelse tried it and it doesn't work?What's it like? Because it ain't workingfor me. I asked it to build a websitefor a local flower shop and it justkeeps spitting and timing out. Infact, it doesn't time out. Uh, apparently, yeah, I don't know. I meanMaybe there's a team of developers inIndia frantically trying to build me myflower shopwebsite. I don't, I don't. Did you hearabout that? The AI - is itbuilder.ai? No, they had raisedmillions and millions of dollars fromMicrosoft and that, and it turns outit was just a team of humans behindthe scenesworking, pretending to be an AI. Maybe Mark got inspired by that. I don'tknow. I just asked it to build awebsite for my local junior footballteam. I pressed enter and I've got a whitescreen. Has it got a bar that's like aloading bar? No, nothing. Literally awhite screen. Nothing on the web page.Jesus. WordPress.com's setup issite builder processing. And then it putsmy prompt in. But no, literallynothing's happening on the page. I've gotnothing on the page. Just white. So theprompt that it suggests is to build awebsite for my coffee shop. So I'm justgoing to tryagain. Build a website for a coffee shop.Go. Do I need to accept cookies orsomething first?I don't know because there was a cookiePop-up. Yeah, it's not working again. Ithought it might be the Brave Shields orsomething like that that I've turnedoff. Um, I mean to be fair, Ihaven't given this one that long. I don't know how long it's supposed totake, but, uh, I started my other onesfour hours ago. And, uh,it's not come back yet. It hasn't comeback yet. So maybe next week we'll beable to talk about the WordPress.comAI builder. Um, it is new. Theysaid, is it? Well, I think I got somekind of announcement, whether it wasprobably an email and something onsocials. Yeah. Right. Yeah. Um, so yeah,it's way better than Wix. I wasgenuinely quite intrigued to try itout. Like, I'm, I want to see what itcan do. Like, because I've seen somepretty cool stuff with AI and theblock editor and people being able tojust say, "Build me this," and itdoes it all in blocks. And it was prettyawesome. Um, but yeah, anyway,not working for me. So, no, not workingfor me. Right, we will wrap it up there. Thank you very much everyone for joiningus, those that joined us live. If you'relistening after the event on theThank you for listening to the podcast. Ifyou have enjoyed this episode, please like, subscribe, andshare this with someone else. It would be really good if you could do that. Andwe hope to see you next week for thenext episode, which is Friday the13th. [Music]So until then, we’ll see you later.Bye-bye., WP Café #122 | Building Email Templates 😫, Highrise Digital, 01jxe19qwgvmyjsa2vh27q2pkd.