{"id":36,"date":"2026-09-21T21:59:42","date_gmt":"2026-09-21T21:59:42","guid":{"rendered":"https:\/\/configly.app\/updates\/?p=36"},"modified":"2026-09-21T21:59:42","modified_gmt":"2026-09-21T21:59:42","slug":"what-every-configly-change-goes-through","status":"publish","type":"post","link":"https:\/\/configly.app\/updates\/what-every-configly-change-goes-through\/","title":{"rendered":"What every Configly change goes through"},"content":{"rendered":"\n<p>Configly can read your Zendesk configuration and, with Apply Changes, write to your live instance. That&#8217;s a lot of trust to ask for, so the way Configly gets built is designed around one thing: nothing reaches your help desk until it has been questioned, specified, tested and checked in a safe environment first.<\/p>\n\n<p>Here&#8217;s what that looks like, from idea to release.<\/p>\n\n<h2>It starts with a challenge, in both directions<\/h2>\n\n<p>Ideas come from client admin centres, support tickets and my own time in Zendesk. Before one goes anywhere, I put it in front of Claude and ask it to find the weak spots. What problem does this solve, who has it, and does Zendesk already handle it natively?<\/p>\n\n<p>That challenge runs both ways. Claude is a good sanity check. It&#8217;s quick to spot a gap in my reasoning or an assumption I haven&#8217;t tested. What it doesn&#8217;t have is years of living inside Zendesk instances, and that&#8217;s where a lot of the arguments start.<\/p>\n\n<p>Zendesk has plenty of behaviour that isn&#8217;t obvious from the documentation. Triggers run in order and keep cycling until none of them fire, so a change to one can alter what happens in another several steps later. Features and limits vary by plan. Something that looks simple in the admin centre can be a very different shape underneath. When Claude&#8217;s suggestion doesn&#8217;t account for that, I push back, and I&#8217;ve done that a lot.<\/p>\n\n<p>Those arguments have made Configly better. A feature that survives the back and forth comes out sharper than the version I walked in with, and more than a few enhancements started as a disagreement about how Zendesk actually behaves.<\/p>\n\n<p>AI is the sanity check. The expert in the loop is human.<\/p>\n\n<p>Ideas that hold up move forward. The rest go in an archive, which is much longer than the roadmap.<\/p>\n\n<h2>Then it&#8217;s stress tested for risk<\/h2>\n\n<p>The next question is what the feature could do to your instance if it went wrong. A change that touches triggers, macros or routing can have knock-on effects well beyond the thing it was meant to fix. If the answer is uncomfortable, the design changes at this stage, while that&#8217;s still cheap.<\/p>\n\n<h2>It&#8217;s planned in detail before any code exists<\/h2>\n\n<p>Features that make the cut are broken down in Jira into epics, stories and tasks. Each task gets acceptance criteria covering what tests must pass and what you should see when it works.<\/p>\n\n<p>Before building starts, the existing codebase is checked to see exactly what the change touches, and each ticket gets a written plan with the approach, the edge cases and what&#8217;s deliberately out of scope. Code comes after all of that, and Claude writes it against the plan.<\/p>\n\n<h2>The rules the code is written under<\/h2>\n\n<p>Asking an AI to &#8220;do this ticket&#8221; and hoping for the best isn&#8217;t how Configly is built. Every part of the codebase carries its own set of rules that Claude has to load before it starts work. They cover how that part of the system is built and tested, the architectural lines it can never cross, and lessons from past mistakes so they don&#8217;t happen twice. The database separation covered further down is one of those rules, and it&#8217;s written down as absolute.<\/p>\n\n<p>On top of that sits a workflow specification that&#8217;s read fresh at the start of every piece of work, so changes to how work should be done apply immediately rather than relying on anyone remembering them.<\/p>\n\n<p>A few of the rules are there purely to keep the process honest. If a ticket is ambiguous, Claude stops and asks rather than guessing. It can&#8217;t create its own work or widen the scope of what it was asked to do. It can&#8217;t mark anything as finished, only hand it back for review. Those rules sit above everything else, including the ticket itself.<\/p>\n\n<p>The ticket says what to build. The rules make sure it&#8217;s built the same careful way every time.<\/p>\n\n<h2>Tests, then human review, then round again<\/h2>\n\n<p>Automated tests catch broken code. They can&#8217;t tell whether a screen is honest about what an action will do. A button that says &#8220;preview&#8221; but changes something, or a confirmation that hides a side effect, would pass every test and still put your data at risk.<\/p>\n\n<p>So every change also gets a visual review before it can progress. Work that isn&#8217;t right goes back with specific notes and comes round again. This loop takes up most of the time on any feature.<\/p>\n\n<h2>Security is built into the product<\/h2>\n\n<p>Configly works with your configuration: triggers, automations, macros, views, ticket fields and the rest of the setup that shapes how your help desk runs. The data it holds lives in its own database, and support and admin tooling runs on a separate database with no route to it, so a problem in one can&#8217;t reach the other.<\/p>\n\n<p>Where the interface blocks something risky, the server refuses it as well. The button is there for convenience; the backend check is the real protection.<\/p>\n\n<p>Nothing in Configly changes your instance without telling you exactly what will happen first. What-If simulation shows the impact of a change before you commit to it, and Apply Changes shows you the precise differences it&#8217;s about to push. If a screen can&#8217;t be clear about what an action will do, it doesn&#8217;t ship.<\/p>\n\n<h2>Staging, then production<\/h2>\n\n<p>Every change runs on a separate environment first and only reaches production once it has passed review. Production is monitored for errors and backed up daily, weekly and monthly. Releases are versioned, and customer-facing changes are listed in the public changelog.<\/p>\n\n<h2>Try it on your own instance<\/h2>\n\n<p>The best test of this process is the product it produces. Connect your Zendesk instance at <a href=\"https:\/\/configly.app\">configly.app<\/a> in read-only mode and Configly can&#8217;t change a thing. Take a snapshot and you&#8217;ll see your configuration laid out in one place, with the dependencies between your triggers, automations, macros and views mapped for you.<\/p>\n\n<p>Then plan a change you&#8217;d normally hesitate over. Deactivate a trigger, edit a macro, rework a view. Run it through What-If and Configly will show you what else it touches, all without write access to your instance.<\/p>\n\n<p>When you&#8217;re ready to push changes from Configly, upgrade the connection to allow writes. Apply Changes will show you every difference it&#8217;s about to make, item by item, and nothing moves until you confirm. You can stay read-only for as long as you like.<\/p>\n\n<p>That moment, where you know exactly what&#8217;s about to happen before it does, is what all the steps above are for.<\/p>\n\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Configly can read your Zendesk configuration and, with Apply Changes, write to your live instance. That&#8217;s a lot of trust to ask for, so the&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-36","post","type-post","status-publish","format-standard","hentry","category-product-updates"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/posts\/36","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/comments?post=36"}],"version-history":[{"count":1,"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/posts\/36\/revisions"}],"predecessor-version":[{"id":37,"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/posts\/36\/revisions\/37"}],"wp:attachment":[{"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/media?parent=36"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/categories?post=36"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/configly.app\/updates\/wp-json\/wp\/v2\/tags?post=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}