{"id":8512,"date":"2026-07-30T18:57:09","date_gmt":"2026-07-30T15:57:09","guid":{"rendered":"https:\/\/erticaz.com\/ok-goldy-alternative\/"},"modified":"2026-07-30T19:21:12","modified_gmt":"2026-07-30T16:21:12","slug":"ok-goldy-alternative","status":"publish","type":"post","link":"https:\/\/erticaz.com\/en\/ok-goldy-alternative\/","title":{"rendered":"Why did Ok Goldy stop? The engineering lesson behind the failure \u2014 and the free alternative"},"content":{"rendered":"<p><strong>For years, thousands of Google Workspace administrators around the world relied on a free tool called Ok Goldy to accomplish what used to take weeks of manual work. Today, it has stopped. In this article, we dissect exactly what happened, thank those who deserve thanks, and present the free alternative we built at Erticaz \u2014 with a complete usage guide.<\/strong><\/p>\n<h2>\ud83d\ude4f First: A well-deserved thank you to Goldy Arora<\/h2>\n<p>Before any technical talk, this must be said clearly: <strong>Goldy Arora<\/strong> He provided the tech community with a completely free tool, built it in his own time, and saved thousands of organizations around the world cumulative years of exhausting manual work \u2014 without asking for anything in return.<\/p>\n<p>Anyone who has ever managed creating three thousand student accounts one by one from the Google Admin console knows the magnitude of what he provided. Ok Goldy was not just a tool; it was the only free solution in a space where all alternatives are paid.<\/p>\n<p>And when its owner apologized for not continuing due to personal circumstances, he did so frankly and announced it clearly instead of letting it rot silently. This is respectable behavior that deserves appreciation, not blame.<\/p>\n<p><strong>This project is not a competitor to his work, but an extension of it.<\/strong> The original idea \u2014 managing Google Workspace from a spreadsheet \u2014 is his idea. What we did is rebuild it with a different architecture, after its shutdown revealed an engineering lesson worth telling.<\/p>\n<h2>What exactly happened?<\/h2>\n<p>Users began encountering one repeated message on any operation:<\/p>\n<pre><code>Resource has been exhausted (e.g. check quota)<\/code><\/pre>\n<p>The message seems vague, but it is in fact very precise: <strong>The API quota has been exhausted<\/strong>. And the important question is not \"what does it mean\" but: <em>Whose quota exactly was exhausted?<\/em><\/p>\n<h3>The answer is the essence of the story<\/h3>\n<p>When a tool is published on the Google Workspace Marketplace, API calls for all its users operate through <strong>a single Google Cloud project owned by the developer<\/strong> \u2014 not through each organization's own project.<\/p>\n<p>Every cloud project has a daily cap on requests. And when the tool was used by thousands of institutions around the world at the same time, they were all consuming from <strong>the same bucket<\/strong>. A university creating five thousand student accounts in the morning was consuming a quota that a hospital on another continent needed hours later.<\/p>\n<p>So when that cap ran out, the tool didn't break down for one or two users \u2014 but <strong>for everyone at once<\/strong>. And no user could do anything about it, because the problem wasn't with their account in the first place.<\/p>\n<blockquote>\n<p>The outage wasn't a maintenance oversight so much as the inevitable result of an architectural decision: <strong>the tool's very success is what killed it<\/strong>. The more users it gained, the closer its collapse came. And the developer bears the cost and quota of every user for free \u2014 a model that doesn't hold up mathematically.<\/p>\n<\/blockquote>\n<h2>What sets Uruk Workspace apart?<\/h2>\n<p>We built the tool from scratch, and addressed every single point of failure.<\/p>\n<h3>1. Your quota is yours alone \u2014 this is the fundamental difference<\/h3>\n<p>We don't publish it on a Marketplace as a centralized service. Instead, <strong>you copy your own instance<\/strong>. The instance automatically gets an independent Google Cloud project belonging to your own institution.<\/p>\n<p>The direct result: <strong>no other user in the world can exhaust your quota<\/strong>. The outage that struck Ok Goldy is architecturally impossible here, not because we're more careful but because the structure itself is different.<\/p>\n<h3>2. An error in one row doesn't stop the rest<\/h3>\n<p>Each row is processed separately. If row number 47 has an invalid email, it is marked as <code>ERROR<\/code> The reason is written next to it, and the tool completes the remaining five thousand rows without stopping.<\/p>\n<h3>3. Successful rows are never repeated<\/h3>\n<p>Every row that succeeds is marked <code>OK<\/code>, and is skipped in any subsequent run. That is, <strong>re-running is always safe<\/strong> \u2014 accounts will not be created twice, and invitations will not be sent again.<\/p>\n<h3>4. Automatic resumption for large numbers<\/h3>\n<p>Google Apps Script stops any script after six minutes. The tool stops safely before that, saves its position, and resumes automatically after a minute \u2014 until it finishes the entire table. Twenty thousand users are processed without any intervention from you.<\/p>\n<h3>5. Gradual backoff at rate limits<\/h3>\n<p>When encountering <code>rateLimitExceeded<\/code> or a temporary server error, the tool waits and retries with exponential backoff instead of failing immediately. And if the error is a real quota issue, it explains it to you in understandable language instead of showing the raw message.<\/p>\n<h3>6. Dry-run mode before any change<\/h3>\n<p>The option <strong>Dry run<\/strong> checks every row and writes to you what <em>would have happened<\/em> \u2014 without sending any change to Google. You run it, read the results, fix your errors, then actually execute.<\/p>\n<h3>7. Deletion requires written confirmation<\/h3>\n<p>Deletion operations do not execute any row unless you write the word <code>DELETE<\/code> explicitly in it. A wrong click on the menu cannot empty your organization's directory.<\/p>\n<h3>8. Fully open source<\/h3>\n<p>The code is published in full under the MIT license at <a href=\"https:\/\/github.com\/haydary1986\/uruk-workspace\" target=\"_blank\" rel=\"noopener\"><strong>GitHub<\/strong><\/a>. Your security team can review every line before relying on it \u2014 something that cannot be done with a closed tool that manages your organization's accounts and passwords. And if you find a bug or want a feature, open <a href=\"https:\/\/github.com\/haydary1986\/uruk-workspace\/issues\" target=\"_blank\" rel=\"noopener\">issue<\/a> and we will work on it.<\/p>\n<h2>What does the tool do?<\/h2>\n<p>21 ready-made operations distributed across five areas:<\/p>\n<ul>\n<li><strong>Users:<\/strong> Bulk creation within a specific organizational unit \u00b7 Selective field updates \u00b7 Password reset \u00b7 Moving between organizational units \u00b7 Suspension and restoration \u00b7 Deletion \u00b7 Full export<\/li>\n<li><strong>Organizational units:<\/strong> Creating the structure \u00b7 Renaming and moving \u00b7 Deletion \u00b7 Exporting the tree<\/li>\n<li><strong>Groups:<\/strong> Create \u00b7 Update \u00b7 Delete \u00b7 Export<\/li>\n<li><strong>Members:<\/strong> Bulk add and remove \u00b7 Setting roles and delivery settings \u00b7 Exporting memberships<\/li>\n<li><strong>Aliases:<\/strong> Add \u00b7 Remove \u00b7 Export<\/li>\n<\/ul>\n<h2>How to use \u2014 step by step<\/h2>\n<h3>Step 1: Copy the template<\/h3>\n<p>Click on <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/13He7-3tbLmb_5wMBS1b627H-MW0nonFR_x6X6gihQNo\/copy\"><strong>the copy template link<\/strong><\/a>. A copy is created in your account with the tool built in. No installation, no new account.<\/p>\n<p><em>Note:<\/em> You need an account with permissions <strong>Google Workspace Admin<\/strong>. A regular account will be rejected on the first operation, because user management requires administrative privileges in the first place.<\/p>\n<h3>Step 2: Grant permissions and verify<\/h3>\n<p>Open the copy, and you will find a menu <strong>Uruk Workspace<\/strong> at the top. The first command you run will ask for your approval of the permissions.<\/p>\n<blockquote>\n<p>\ud83d\udca1 <strong>Menu didn't appear? Refresh the page (F5).<\/strong> When opening a new copy for the first time, Google sometimes delays loading the script linked to the sheet, so the menu does not appear immediately. One page refresh solves it, and the problem will not recur afterward. This is known behavior in Google Apps Script when copying sheets linked to a script, and it has nothing to do with the tool itself.<\/p>\n<\/blockquote>\n<p>Then run <strong>Setup \u2190 Check my access<\/strong> before anything else. It tells you which account you signed in with, confirms that Google APIs are responding, and counts your organizational units. If an error appears here, the problem is with permissions, not your data \u2014 and you have saved yourself from discovering that after three thousand rows.<\/p>\n<h3>Step 3: Create the template sheets<\/h3>\n<p>Run <strong>Setup \u2190 Create all template sheets<\/strong>. A tab is created for each operation with the correct columns, and with notes on each column explaining what is required and its format.<\/p>\n<h3>Step 4: Fill in the sheet<\/h3>\n<p>Example of creating users \u2014 you fill in the columns: primary email, first name, last name, and the organizational unit such as <code>\/Students\/First Year<\/code>.<\/p>\n<p>Leave the password field empty and it will be generated automatically and written for you in the sheet, with the user forced to change it on first login.<\/p>\n<h3>Step 5: Test first \u2014 do not execute directly<\/h3>\n<p>Open <strong>Settings &amp; run options<\/strong> and enable <strong>Dry run<\/strong>, then run the operation. You will read in the column <code>Status<\/code> What would happen to each row, without any actual change. This step reveals data errors before they become errors in your real directory.<\/p>\n<h3>Step 6: Run and read the result<\/h3>\n<p>Turn off Dry run and run the operation. When finished, read the two columns:<\/p>\n<table>\n<thead>\n<tr>\n<th>Status<\/th>\n<th>Meaning<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>OK<\/code><\/td>\n<td>Executed. It will be skipped in any subsequent run.<\/td>\n<\/tr>\n<tr>\n<td><code>ERROR<\/code><\/td>\n<td>Failed, and the reason is written in the Details column.<\/td>\n<\/tr>\n<tr>\n<td><code>SKIPPED<\/code><\/td>\n<td>Nothing to execute, or an unconfirmed delete row.<\/td>\n<\/tr>\n<tr>\n<td><code>DRY-RUN<\/code><\/td>\n<td>Verify only without executing.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Step 7: Fix the errors and re-run<\/h3>\n<p>Correct rows <code>ERROR<\/code>, then enable the option <strong>Retry rows marked ERROR<\/strong> and re-run. Successful rows will not be repeated, and only the corrected ones will be processed.<\/p>\n<h2>What doesn't the tool do? (Honestly)<\/h2>\n<p>Credibility is more important than exaggeration, so these are its current limitations:<\/p>\n<ul>\n<li>It does not manage <strong>Google Workspace licenses<\/strong><\/li>\n<li>It does not manage <strong>Chrome devices<\/strong><\/li>\n<li>It does not support <strong>Timeline<\/strong> for operations<\/li>\n<li>It does not manage <strong>shared contacts<\/strong> or custom schemas<\/li>\n<\/ul>\n<p>If you need these features, there are mature paid tools such as <strong>GW Manager<\/strong> that are worth their cost. But if what you want is to perform basic operations in bulk, for free, and with code you can review \u2014 then this tool is enough for you.<\/p>\n<h2>Conclusion<\/h2>\n<p>The Ok Goldy story is not a story of neglect, but a lesson that <strong>architecture is destiny<\/strong>. An excellent free tool collapsed because its very success was draining the resource it depended on.<\/p>\n<p>Thanks remain to its owner, who gave the community years of his work for free. What we did was take his idea and rebuild it so that its success cannot kill it.<\/p>\n<p><a href=\"https:\/\/erticaz.com\/en\/uruk\/\"><strong>\u2190 Try Uruk Workspace for free<\/strong><\/a> &nbsp;\u00b7&nbsp; <a href=\"https:\/\/github.com\/haydary1986\/uruk-workspace\" target=\"_blank\" rel=\"noopener\"><strong>The source code on GitHub<\/strong><\/a><\/p>\n<p><em>I developed it <a href=\"https:\/\/erticaz.com\/en\/\">Erticaz for Technical Solutions<\/a> and published it for free under the MIT license. If you need customization, data migration, or running it on a larger scale, <a href=\"https:\/\/erticaz.com\/en\/contact\/\">Contact Us<\/a>.<\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>Dissecting the failure that stopped Ok Goldy, thanking its developer, and a complete usage guide for its free open-source alternative from Erticaz.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_vp_format_video_url":"","_vp_image_focal_point":[],"footnotes":""},"categories":[105,44],"tags":[],"class_list":["post-8512","post","type-post","status-publish","format-standard","hentry","category-105","category-software-and-programs-news"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/posts\/8512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/comments?post=8512"}],"version-history":[{"count":2,"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/posts\/8512\/revisions"}],"predecessor-version":[{"id":8516,"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/posts\/8512\/revisions\/8516"}],"wp:attachment":[{"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/media?parent=8512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/categories?post=8512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/erticaz.com\/en\/wp-json\/wp\/v2\/tags?post=8512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}