<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Memo</title>
    <description>The latest articles on DEV Community by Memo (@instarenewal).</description>
    <link>https://dev.to/instarenewal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4005453%2Fbe28502b-113c-49ea-ba62-8d939a08eea2.png</url>
      <title>DEV Community: Memo</title>
      <link>https://dev.to/instarenewal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/instarenewal"/>
    <language>en</language>
    <item>
      <title>The “Who Logs In?” Audit: Untangling Super-Admin Rights vs. Billing Contact Rights on Client Software</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Wed, 04 Nov 2026 02:08:59 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-who-logs-in-audit-untangling-super-admin-rights-vs-billing-contact-rights-on-client-2mgc</link>
      <guid>https://dev.to/instarenewal/the-who-logs-in-audit-untangling-super-admin-rights-vs-billing-contact-rights-on-client-2mgc</guid>
      <description>&lt;p&gt;Picture a composite scenario. It is 2:15 PM on a Tuesday, and your agency gets an urgent call from a high-value client. Their customer portal or e-commerce stack has started throwing authentication errors, and operations have stalled.&lt;/p&gt;

&lt;p&gt;Your senior developer finds the cause within minutes. A third-party subscription the site depends on lapsed after a failed card renewal. They open the vendor’s console to update the card or retry the charge and hit a wall: &lt;strong&gt;“Insufficient Permissions.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The vendor’s warning emails over the previous weeks went to a former marketing coordinator who left eight months ago. Nobody on the client’s current team saw them. Your developer has technical access but no billing access. The client’s executives are asking why the site is down, and your agency is the one answering.&lt;/p&gt;

&lt;p&gt;This is not a code defect. It is an &lt;strong&gt;account governance failure&lt;/strong&gt;. Agencies routinely fall into the gap between &lt;strong&gt;Super-Admin rights&lt;/strong&gt; (who can configure the system) and &lt;strong&gt;Billing Contact rights&lt;/strong&gt; (who can pay for it, and who gets told when payment fails). A short, repeatable “Who Logs In?” audit closes that gap before it becomes an outage.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Why Super-Admin and Billing Rights Get Confused
&lt;/h2&gt;

&lt;p&gt;Most serious platforms separate technical administration from financial administration, and the split is deliberate. The trouble is that the separation is rarely visible during signup, so clients and agencies each assume the other side has the access.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        +---------------------------------------------+
        |        ACCOUNT OWNER / PRIMARY CONTACT      |
        |  (client-controlled; root or owner identity)|
        +----------------------+----------------------+
                               |
            +------------------+------------------+
            |                                     |
            v                                     v
+-------------------------+         +---------------------------+
|  TECHNICAL ADMIN ROLES  |         |  BILLING / FINANCE ROLES  |
|  (agency engineers,     |         |  (client finance or ops)  |
|   delegated access)     |         |                           |
+-------------------------+         +---------------------------+
| - API keys, webhooks    |         | - Payment methods         |
| - Deployments, config   |         | - Invoices, receipts      |
| - User and team access  |         | - Plan and tier changes   |
| - Integrations          |         | - Billing notifications   |
+-------------------------+         +---------------------------+
            |                                     |
            +------------------+------------------+
                               v
              +-------------------------------+
              |      THE GOVERNANCE GAP       |
              | Alerts reach people who can't |
              | act; people who can act never |
              | see the alerts.               |
              +-------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How major platforms actually draw the line
&lt;/h3&gt;

&lt;p&gt;The details differ by vendor, which is why a per-tool audit beats a general assumption.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; By default, &lt;a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html" rel="noopener noreferrer"&gt;IAM users and roles can’t access the Billing and Cost Management console&lt;/a&gt;, even if their IAM policies grant billing permissions. The root user has to turn on “Activate IAM Access” first. An agency engineer with full administrator permissions can therefore be locked out of invoices and payment settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud:&lt;/strong&gt; The &lt;a href="https://docs.cloud.google.com/billing/docs/how-to/billing-access" rel="noopener noreferrer"&gt;Billing Account Administrator&lt;/a&gt; role manages payment methods, exports, and project links. Google’s own documentation notes that &lt;a href="https://docs.cloud.google.com/billing/docs/how-to/find-billing-account-administrator" rel="noopener noreferrer"&gt;Project Owner and other resource-level admin roles don’t grant the permissions needed to see basic billing account information&lt;/a&gt;. Only Billing Account Administrators can contact Cloud Billing Support, and the person who creates the billing account is an administrator by default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe:&lt;/strong&gt; The &lt;a href="https://docs.stripe.com/dashboard/teams/roles" rel="noopener noreferrer"&gt;Super Administrator role&lt;/a&gt; goes to the creator of a business account. There can be only one Account Owner per account, and only the owner can transfer ownership.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shopify:&lt;/strong&gt; &lt;a href="https://help.shopify.com/en/manual/your-account/manage-account" rel="noopener noreferrer"&gt;Changing the plan requires the store owner or a staff member with the “Manage plan” permission&lt;/a&gt;. Bills are emailed to the store owner and to any staff with the “View billing and receive billing emails” permission.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The common thread is that the person who signed up usually becomes the owner with the broadest rights. Every later handoff, from that person to the agency or to a new employee, is where billing visibility is lost.&lt;/p&gt;

&lt;h3&gt;
  
  
  The two classic onboarding mistakes
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The “Hand Over the Keys” mistake.&lt;/strong&gt; The client gives the agency the original owner’s login. When that employee leaves and IT deactivates their mailbox, the account’s recovery email, MFA prompts, and billing notices can disappear with it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The “Developer as Vendor” mistake.&lt;/strong&gt; The agency creates the account under a developer’s work email and enters the client’s card. When that developer leaves the agency, the client doesn’t hold the identity that owns their own infrastructure.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  2. How the Blame Lands on the Agency
&lt;/h2&gt;

&lt;p&gt;These are composite, illustrative scenarios, not reports of specific incidents. Each reflects a documented permission model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario A: The ghost inbox
&lt;/h3&gt;

&lt;p&gt;A client’s former operations manager signed up for a third-party service with her individual work email. After she leaves, IT removes the mailbox. The client replaces its corporate card, the next renewal fails, and every payment-failure notice goes to an address nobody reads.&lt;/p&gt;

&lt;p&gt;How severe the outcome is depends on the vendor. Some providers suspend features, some downgrade the plan, and some stop service entirely. A real example of the severe end is Google Cloud. If a Cloud Billing account is suspended, &lt;a href="https://docs.cloud.google.com/resource-manager/docs/project-suspension-guidelines" rel="noopener noreferrer"&gt;all resources attached to it are suspended as well, and if it stays invalid for a protracted period some resources might be removed and are not recoverable&lt;/a&gt;. Google’s own restart guidance adds that when a billing account is closed, &lt;a href="https://support.google.com/cloud/answer/7384685" rel="noopener noreferrer"&gt;all billable services in all linked projects are stopped, and some resources might be deleted and not fully recoverable&lt;/a&gt;. Many customers resolve a suspension without losing anything, but the guidance is why a lapsed billing contact matters.&lt;/p&gt;

&lt;p&gt;The site breaks, the client sees “broken,” and they call the agency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario B: The administrator who can’t see the bill
&lt;/h3&gt;

&lt;p&gt;Your engineers have administrator access to the client’s AWS account. A usage spike or an expiring payment method needs attention, and nobody on your side can open the billing console, because the root user never activated IAM access to billing. In Google Cloud, the equivalent is an engineer who is a Project Owner but holds no billing role. The engineer can fix the code but can’t see an invoice, change a payment method, or reach billing support.&lt;/p&gt;

&lt;p&gt;Without a named financial escalation contact, the fix waits for someone on the client side who is out of reach. The agency still gets the blame for the outage.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Step-by-Step: Running the “Who Logs In?” Audit
&lt;/h2&gt;

&lt;p&gt;Make account governance a standard, billable part of onboarding and maintenance. The audit has four stages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        THE 4-STAGE GOVERNANCE AUDIT
 +---------------------------------------------+
 | 1. INVENTORY &amp;amp; MAP                          |
 |    Every SaaS, API, domain, and service     |
 +----------------------+----------------------+
                        v
 +---------------------------------------------+
 | 2. AUDIT ROLES &amp;amp; CONTACTS                   |
 |    Owner vs. technical admin vs. billing    |
 +----------------------+----------------------+
                        v
 +---------------------------------------------+
 | 3. DECOUPLE &amp;amp; DELEGATE                      |
 |    Role-based inboxes, vaults, delegation   |
 +----------------------+----------------------+
                        v
 +---------------------------------------------+
 | 4. DOCUMENT &amp;amp; FORMALIZE                     |
 |    Access matrix + contract language        |
 +---------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Stage 1: Map the software inventory
&lt;/h3&gt;

&lt;p&gt;List every third-party service the project depends on, including small ones like transactional email, search, and form tools. For each, record who owns the account, who receives billing notices, and who holds technical access.&lt;/p&gt;

&lt;p&gt;The table below is an illustrative example with placeholder addresses.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Function&lt;/th&gt;
&lt;th&gt;Account Owner&lt;/th&gt;
&lt;th&gt;Billing Contact&lt;/th&gt;
&lt;th&gt;Technical Admin&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cloud hosting&lt;/td&gt;
&lt;td&gt;Infrastructure&lt;/td&gt;
&lt;td&gt;&lt;code&gt;owner@client.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ap@client.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dev-team@agency.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Payment gateway&lt;/td&gt;
&lt;td&gt;Payments&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cfo@client.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ap@client.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dev-team@agency.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email delivery&lt;/td&gt;
&lt;td&gt;Transactional mail&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ex-employee@client.com&lt;/code&gt; &lt;strong&gt;(RISK)&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ex-employee@client.com&lt;/code&gt; &lt;strong&gt;(RISK)&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dev-team@agency.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Site search&lt;/td&gt;
&lt;td&gt;Search&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev@agency.com&lt;/code&gt; &lt;strong&gt;(RISK)&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dev@agency.com&lt;/code&gt; &lt;strong&gt;(RISK)&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dev-team@agency.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Flag any row where the owner or billing contact is a departed person or an agency employee.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 2: Audit roles and permitted actions
&lt;/h3&gt;

&lt;p&gt;For each service, answer four questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Who receives payment notifications and invoices?&lt;/strong&gt; It should be a monitored role-based inbox, not an individual’s address. On AWS, check the &lt;a href="https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-alternate.html" rel="noopener noreferrer"&gt;alternate contacts for billing, operations, and security&lt;/a&gt;. AWS’s own baseline guidance recommends &lt;a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/aws-startup-security-baseline/acct-01.html" rel="noopener noreferrer"&gt;email distribution lists for these contacts&lt;/a&gt; and notes that you must retain access to them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who holds the owner or root identity?&lt;/strong&gt; It should be a current employee of the client, tied to a client-controlled domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can the agency do its technical work without holding payment liability?&lt;/strong&gt; Delegated roles should cover this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What is the MFA recovery path, and does it depend on one person’s phone?&lt;/strong&gt; Check this before the person leaves, not after.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On that last point, the standards have moved. AWS &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingMFA.html" rel="noopener noreferrer"&gt;ended support for enabling SMS-based MFA&lt;/a&gt;. It now &lt;a href="https://aws.amazon.com/about-aws/whats-new/2025/06/aws-iam-mfa-root-users-across-all-account-types" rel="noopener noreferrer"&gt;enforces MFA for root users on all account types&lt;/a&gt;, and it lets root and IAM users register &lt;a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingMFA.html" rel="noopener noreferrer"&gt;up to eight MFA devices&lt;/a&gt;, so a lost phone doesn’t have to mean a lockout. NIST’s &lt;a href="https://pages.nist.gov/800-63-4/sp800-63b.html" rel="noopener noreferrer"&gt;SP 800-63B-4&lt;/a&gt; classifies SMS and other PSTN-based out-of-band authentication as a restricted authenticator. It remains permitted, but the implementing organization must assess and accept the risk. An owner account whose only second factor is a departed employee’s SMS number is a governance failure waiting to happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 3: Decouple and delegate
&lt;/h3&gt;

&lt;p&gt;Keep financial identity with the client and technical delegation with the agency.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rule 1: The client owns the subscription.&lt;/strong&gt; The client should hold and pay for its own software accounts. Agency-held accounts billed to an agency card and passed through on invoices can create billing friction and ownership disputes when the relationship ends.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rule 2: Use role-based addresses.&lt;/strong&gt; Use shared aliases such as &lt;code&gt;saas-billing@clientcompany.com&lt;/code&gt; for billing, and &lt;code&gt;dev-alerts@agency.com&lt;/code&gt; on the agency side for technical alerts. Individual mailboxes should not be the contact of record for billing or recovery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rule 3: Delegate access, don’t share logins.&lt;/strong&gt; Use each platform’s built-in delegation instead of passing around the owner’s password. Examples:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft 365 partners:&lt;/strong&gt; &lt;a href="https://learn.microsoft.com/partner-center/dap-faq" rel="noopener noreferrer"&gt;Granular delegated admin privileges (GDAP)&lt;/a&gt; give partners specific, time-bound access, in place of the older DAP model that granted broad standing access. GDAP relationships have a defined end date, with a maximum of two years, so put the expiry on your calendar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shopify:&lt;/strong&gt; Give agency staff only the permissions they need and leave the billing and payment permissions with the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS:&lt;/strong&gt; Prefer identity federation with IAM Identity Center over shared credentials. AWS recommends this as a security best practice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud:&lt;/strong&gt; Grant the narrow billing roles that fit the task. The Project Billing Manager role, for example, can link a project to a billing account &lt;a href="https://docs.cloud.google.com/billing/docs/how-to/billing-access" rel="noopener noreferrer"&gt;without granting any rights over resources&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rule 4: Use a password manager for what can’t be delegated.&lt;/strong&gt; Where a service offers no delegated roles, store shared credentials in an encrypted vault such as 1Password, Bitwarden, or Keeper, never in chat or email. Rotate secrets whenever someone with access leaves.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stage 4: Document and formalize
&lt;/h3&gt;

&lt;p&gt;Publish the access matrix from Stage 1 to both sides and attach it to the contract. Every row should name an owner, a billing contact, a technical contact, and a backup. Review it on a schedule.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Contractual and Operational Protection
&lt;/h2&gt;

&lt;p&gt;An audit tells you where the gaps are. The contract decides who pays when one of them breaks something.&lt;/p&gt;

&lt;h3&gt;
  
  
  Put ownership and payment responsibility in the agreement
&lt;/h3&gt;

&lt;p&gt;Add language to your Master Services Agreement or Statement of Work that states where responsibility sits. A sample you can adapt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Third-Party Services and Account Ownership.&lt;/strong&gt; Client retains ownership of, and responsibility for payment of, all third-party software, APIs, hosting, and SaaS subscriptions required to operate the application, and shall maintain current, monitored billing and security contacts for each. Agency is not responsible for service interruptions resulting from lapsed payment methods, unmonitored billing contacts, or access changes made by Client or the third-party provider.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Have a qualified attorney review any limitation-of-liability language. Enforceability varies by jurisdiction, and this sample is not legal advice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Define an emergency escalation protocol
&lt;/h3&gt;

&lt;p&gt;When a payment fails and a tool goes down, speed matters. Agree on the following in writing before an incident:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A named financial escalation contact&lt;/strong&gt; on the client side, with the authority and the platform role to approve payments. On Google Cloud, for example, that means someone who holds the Billing Account Administrator role, since only those administrators can contact Cloud Billing Support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-authorized limits.&lt;/strong&gt; State whether the agency may temporarily cover an unpaid third-party bill up to a set amount (for example, $250) to prevent an outage, with reimbursement guaranteed by the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A response clock.&lt;/strong&gt; Specify how quickly the client contact must respond, and who stands in when they’re out of reach.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  5. Checklist: The “Who Logs In?” Framework for Onboarding
&lt;/h2&gt;

&lt;p&gt;Use this when onboarding a client or launching a major project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ownership verified:&lt;/strong&gt; Every account is registered under a client-controlled domain, not an agency address or a contractor’s personal email.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Billing routing confirmed:&lt;/strong&gt; Invoices, failed-payment alerts, and card-expiry warnings go to a monitored role-based alias.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Billing access mapped:&lt;/strong&gt; Someone with real billing permissions is named for each service, using that platform’s own roles (for example, an AWS root user who has activated IAM billing access, or a Google Cloud Billing Account Administrator).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical access delegated:&lt;/strong&gt; Agency developers use individual, delegated credentials with technical permissions only, not shared owner logins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MFA recovery verified:&lt;/strong&gt; Owner accounts have more than one registered MFA method where the platform allows it, preferably passkeys or security keys. No account depends on one person’s SMS number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backup owner assigned:&lt;/strong&gt; At least two active client stakeholders can administer each critical account. Where a platform allows only one owner, as Stripe does, a second Super Administrator fills the gap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delegation expiries tracked:&lt;/strong&gt; Time-limited relationships, such as Microsoft GDAP, have renewal dates on the calendar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review scheduled:&lt;/strong&gt; Access lists, billing contacts, and departed-user clean-up are reviewed every 90 days.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion: Turning Governance into a Value-Add
&lt;/h2&gt;

&lt;p&gt;Billing contacts that nobody reads and permissions that don’t match responsibilities are a silent risk to any production site. Vendors such as AWS, Google Cloud, Stripe, and Shopify already offer the separation of duties you need. What they can’t do is make sure the right person holds each role when something fails.&lt;/p&gt;

&lt;p&gt;Running a “Who Logs In?” audit at onboarding, and again every quarter, protects your team from blame it didn’t earn and gives clients a clear picture of who owns what. It also positions your agency as the partner that treated account access as part of the engagement.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-who-logs-in-audit-untangling-super-admin-rights-vs-billing-contact-rights" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-who-logs-in-audit-untangling-super-admin-rights-vs-billing-contact-rights&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
    </item>
    <item>
      <title>The “I Didn’t Authorize That” Dispute: How to Pre-Clear Renewal Invoices Without Killing Momentum</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Tue, 03 Nov 2026 02:02:48 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-i-didnt-authorize-that-dispute-how-to-pre-clear-renewal-invoices-without-killing-momentum-3obk</link>
      <guid>https://dev.to/instarenewal/the-i-didnt-authorize-that-dispute-how-to-pre-clear-renewal-invoices-without-killing-momentum-3obk</guid>
      <description>&lt;p&gt;Every agency leader, SaaS provider, and retainer-based business knows the sinking feeling of a notification like &lt;strong&gt;“Dispute opened: Reason: Fraudulent.”&lt;/strong&gt; For ACH debits, the equivalent is a return coded as unauthorized.&lt;/p&gt;

&lt;p&gt;The scenario is painfully predictable:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An annual or quarterly contract renews automatically.&lt;/li&gt;
&lt;li&gt;Your payment processor charges the card or bank account on file.&lt;/li&gt;
&lt;li&gt;The client’s finance team, or a busy executive who forgot the renewal date, spots the charge.&lt;/li&gt;
&lt;li&gt;Instead of contacting account management, they call their bank and say, &lt;em&gt;“I didn’t authorize this.”&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What should have been a contract extension becomes an operational problem. The disputed amount is pulled from your balance, you pay a fee whether you win or lose, and the dispute counts toward the ratios your processor and the card networks monitor. Even if you win by pointing to a clause in a contract signed a year ago, the account is strained.&lt;/p&gt;

&lt;p&gt;This guide covers what a renewal dispute costs, why clients file them, how to build pre-authorization into onboarding, and what to do when one arrives. It reflects card network and regulatory rules as of November 2026.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This article is general information, not legal advice. Have counsel review your contract language, your renewal notices, and your state-law exposure.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. The Real Cost of Renewal Friction
&lt;/h2&gt;

&lt;p&gt;A chargeback costs more than the invoice itself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ Automated charge hits card ]
              │
              ▼
[ Client files "unauthorized" dispute ]
              │
      ┌───────┴────────────────┐
      ▼                        ▼
[ Cash impact ]         [ Monitoring impact ]
• Disputed amount       • Dispute fee, win or lose
  pulled from balance   • Counts toward network and
• Work continues          processor dispute ratios
  unpaid, or stops
      │                        │
      └───────┬────────────────┘
              ▼
[ Relationship strain ]
• Lost trust, escalations, paused work
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What it costs
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fees you can’t recover.&lt;/strong&gt; On Stripe in the US, &lt;a href="https://redo.com/resources/articles/chargebacks/stripe-chargeback-fees" rel="noopener noreferrer"&gt;every dispute carries a $15 fee&lt;/a&gt; that is not returned even if you win. Since June 17, 2025, Stripe also charges &lt;a href="https://support.stripe.com/questions/june-2025-pricing-updates-for-disputes" rel="noopener noreferrer"&gt;a $15 counter fee when you submit evidence&lt;/a&gt;, which is refunded if you win. A lost, contested dispute therefore costs $30 plus the disputed amount. Other processors set their own fees, so check your pricing page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disputes stay on your record even when you win.&lt;/strong&gt; Stripe’s documentation states that &lt;a href="https://redo.com/resources/articles/chargebacks/stripe-chargeback-fees" rel="noopener noreferrer"&gt;all disputes count toward your dispute rate, won or lost&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visa’s VAMP ratio.&lt;/strong&gt; Visa’s Acquirer Monitoring Program (VAMP) combines fraud reports and disputes into one ratio, calculated as &lt;a href="https://fraudio.com/blog/visa-vamp-guide" rel="noopener noreferrer"&gt;(TC40 fraud reports + TC15 disputes) ÷ settled card-not-present transactions&lt;/a&gt;. Since April 1, 2026, merchants in the US, Canada, the EU, Asia Pacific, and Latin America are flagged as “Excessive” at a &lt;a href="https://dodopayments.com/blogs/visa-vamp-explained" rel="noopener noreferrer"&gt;ratio of 1.5% (down from 2.2%), provided they have at least 1,500 combined fraud reports and disputes in a month&lt;/a&gt;. Excessive merchants are charged &lt;a href="https://www.chargeflow.io/blog/vamp-visa-acquirer-monitoring-program" rel="noopener noreferrer"&gt;$8 per disputed or fraud-reported transaction&lt;/a&gt;. Acquirers face a much tighter bar of &lt;a href="https://dodopayments.com/blogs/visa-vamp-explained" rel="noopener noreferrer"&gt;0.5% (Above Standard) and 0.7% (Excessive)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mastercard’s program.&lt;/strong&gt; Mastercard’s Excessive Chargeback Merchant (ECM) tier applies at &lt;a href="https://beancount.io/blog/2026/07/10/visa-mastercard-vamp-chargeback-monitoring-2026-guide" rel="noopener noreferrer"&gt;100 or more chargebacks in a month and a ratio of 1.5% or higher&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your processor’s own limits.&lt;/strong&gt; A small agency will rarely hit a network volume floor like 1,500 disputes a month. But processors and acquirers apply their own risk rules, and &lt;a href="https://chargebackhelp.com/?p=31717" rel="noopener noreferrer"&gt;acquirers push pressure down to merchants&lt;/a&gt;. A handful of disputes on a small account can still draw scrutiny, including reserves, tighter terms, or account review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Awkward account management.&lt;/strong&gt; Continuing work while the client contests payment creates unrecoverable cost. Pausing work risks breaching SLAs and the remaining goodwill.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Why Clients File “Unauthorized” Disputes (It’s Not Always Malice)
&lt;/h2&gt;

&lt;p&gt;To prevent disputes, understand why client contacts go to their bank instead of your support team.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The desk-swap effect.&lt;/strong&gt; The executive who signed the agreement may have moved on. A new accounts payable contact doesn’t recognize your company name on the statement and treats the charge as fraud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The shock invoice.&lt;/strong&gt; A renewal for several thousand dollars with no prior notice triggers alarm in any accounting department.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Descriptor mismatch.&lt;/strong&gt; If your legal entity is “Acme Holdings LLC” but the client knows you as “Launch Digital,” a charge under the legal name is a common trigger for “I don’t recognize this” claims.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The bank as a cancellation shortcut.&lt;/strong&gt; A client who missed the opt-out window, or found cancellation confusing, may use a dispute to stop the charge. This is typically filed as a &lt;em&gt;cancelled recurring&lt;/em&gt; claim (Visa &lt;a href="https://www.chargeflow.io/nl/blog/cancelled-subscription-chargebacks-visa-mastercard-rules" rel="noopener noreferrer"&gt;reason code 13.2&lt;/a&gt;) rather than a fraud claim, and the evidence you need differs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For card payments, “I didn’t authorize this” is usually filed as card-absent fraud (Visa reason code 10.4). For ACH, it arrives as a return code, covered in Section 6.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Designing Pre-Clearance Checkpoints in Onboarding Documents
&lt;/h2&gt;

&lt;p&gt;The strongest prevention is unambiguous agreement during onboarding, long before the first renewal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Essential clauses for your Master Services Agreement
&lt;/h3&gt;

&lt;h4&gt;
  
  
  A. Express recurring billing authorization
&lt;/h4&gt;

&lt;p&gt;Put the payment authorization in its own clearly marked clause, not buried in general terms.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Model clause: Billing &amp;amp; Payment Authorization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Client authorizes [Company Name] to store payment credentials (credit card or ACH details) through its PCI-compliant payment provider and to charge the payment method on file for recurring subscription or retainer fees on each renewal date. Billing will continue at the agreed cadence until Client provides written notice of non-renewal under Section [X].”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For ACH debits, authorization language must also meet the rules of your bank and Nacha, so have your processor or counsel review it.&lt;/p&gt;

&lt;h4&gt;
  
  
  B. Clear non-renewal window rules
&lt;/h4&gt;

&lt;p&gt;State exactly how and when a client can stop a renewal, and make sure your reminder arrives &lt;strong&gt;before&lt;/strong&gt; that deadline. A 30-day reminder is useless if the contract required notice 60 days ahead.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Day 0      Day 275          Day 305        Day 335         Day 358       Day 365
  │           │                │              │               │             │
Contract   First renewal    Opt-out        Invoice preview  Final         Renewal
signed     reminder         deadline       and payment      reminder      charge
           (90 days out)    (60-day        method check     (7 days out)
                            notice)        (30 days out)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Notice period:&lt;/strong&gt; Define whether non-renewal requires 30, 60, or 90 days’ written notice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delivery channel:&lt;/strong&gt; Name the exact email address or portal for notices (for example, &lt;code&gt;billing@yourcompany.com&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  C. A billing-question escalation path
&lt;/h4&gt;

&lt;p&gt;Give clients a fast, documented way to raise a billing question before going to their bank.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Model clause: Billing Inquiries&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Before disputing a charge with its bank or card issuer, Client agrees to notify [Company Name] at &lt;a href="mailto:billing@yourcompany.com"&gt;billing@yourcompany.com&lt;/a&gt; so the parties can resolve the question. [Company Name] will respond to written billing inquiries within five (5) business days and will correct verified billing errors.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A contract cannot take away a cardholder’s right to dispute a charge through their bank, and a clause like this will not bar it. Treat it as a courtesy path that sets expectations and shows good faith, not as a restriction. Avoid wording that penalizes a client for filing a dispute, and have counsel review it.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. The Renewal Pre-Clearance Workflow
&lt;/h2&gt;

&lt;p&gt;Legal terms alone won’t stop a surprised client from calling their bank. Build a communication sequence around every renewal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 1: The renewal notice (30 or more days out)
&lt;/h3&gt;

&lt;p&gt;Send a clear notice to both the primary contact &lt;strong&gt;and&lt;/strong&gt; the accounts payable contact. Timing matters for compliance as well as for the client:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mastercard&lt;/strong&gt; requires notice &lt;a href="https://www.chargebackgurus.com/blog/mastercard-subscription-rules" rel="noopener noreferrer"&gt;7 to 30 days before billing&lt;/a&gt; for recurring charges six months or more apart.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visa and Mastercard&lt;/strong&gt; require &lt;a href="https://docs.finix.com/guides/subscriptions/recurring-payment-guidelines" rel="noopener noreferrer"&gt;a reminder at least 7 days before the first charge after a trial or a change in billing terms&lt;/a&gt;. Neither network’s rules are written around B2B retainers, so confirm what applies with your acquirer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;California&lt;/strong&gt; requires consumer businesses with initial terms of one year or longer to give renewal notice &lt;a href="https://oag.ca.gov/news/press-releases/attorney-general-bonta-issues-consumer-alert-california%E2%80%99s-automatic-renewal-law" rel="noopener noreferrer"&gt;15 to 45 days before renewal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A reminder around day -30, plus a second short reminder 7 to 14 days out, satisfies all of these timing windows and gives the client two chances to react.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pre-renewal notification email template
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight email"&gt;&lt;code&gt;&lt;span class="nt"&gt;Subject&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; Upcoming renewal: [Company Name] services starting [Date]&lt;/span&gt;

Hi [Client Name],

Thank you for your partnership this past year. Your service agreement for
[Product/Service Name] renews soon. Here are the details:

• Service period: [Start Date] to [End Date]
• Renewal amount: $[Amount]
• Payment method on file: [Card Brand / Bank Name] ending in [1234]
• Scheduled billing date: [Exact Date]
• Charge will appear on your statement as: [Descriptor]

What you can do:
1. Review your renewal invoice: [Link]
2. Update your card, bank details, or accounts payable contact: [Billing Portal Link]
3. Change your plan or cancel before [Opt-Out Cutoff Date]: reply to this email
   or contact [Account Manager] at [Email]. Cancellation instructions are
   in Section [X] of your agreement.

Best regards,
[Name / Billing Team]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Stage 2: Account management alignment (14 or more days out)
&lt;/h3&gt;

&lt;p&gt;For high-value contracts, pair automated emails with a human touchpoint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Share results.&lt;/strong&gt; Send a performance or ROI summary before the invoice lands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify accounts payable requirements.&lt;/strong&gt; Ask whether the invoice needs a purchase order number or internal approval. Missing PO numbers are a common reason finance teams reject or dispute charges.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Stage 3: Charge day, with a recognizable descriptor
&lt;/h3&gt;

&lt;p&gt;The statement descriptor is the line your client’s finance team actually sees, and it has hard limits. On Stripe, a descriptor must be &lt;a href="https://support.stripe.com/questions/what-is-a-statement-descriptor-and-how-to-update-it" rel="noopener noreferrer"&gt;5 to 22 characters, contain at least one letter, and cannot include the characters &lt;code&gt;&amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;'&lt;/code&gt;, &lt;code&gt;"&lt;/code&gt;, or &lt;code&gt;*&lt;/code&gt;&lt;/a&gt;. Longer strings get truncated unpredictably.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Risky:&lt;/strong&gt; &lt;code&gt;ACME HOLDINGS LLC&lt;/code&gt; (a legal entity name clients don’t recognize)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better:&lt;/strong&gt; &lt;code&gt;LAUNCH DIGITAL&lt;/code&gt; or &lt;code&gt;LAUNCHDIGITAL RENEWAL&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Send a receipt immediately after the charge that repeats the amount, service period, and how to manage or cancel the subscription.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Regulatory and Network Rules: What Applies to B2B
&lt;/h2&gt;

&lt;p&gt;Most auto-renewal law is written to protect consumers. Whether it reaches your business-to-business contracts depends on who your customer is and where they are. Don’t assume it applies, and don’t assume it doesn’t.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FTC rules.&lt;/strong&gt; The Restore Online Shoppers’ Confidence Act (ROSCA) remains in force. It governs online sales with negative-option features and requires clear disclosure, express informed consent, and a simple cancellation mechanism. The FTC’s broader “Click-to-Cancel” rule was &lt;a href="https://www.cooley.com/news/insight/2025/2025-07-11-click-to-cancel-just-got-cancelled-eighth-circuit-vacates-entirety-of-ftcs-negative-option-rule" rel="noopener noreferrer"&gt;vacated in its entirety by the Eighth Circuit on July 8, 2025&lt;/a&gt;. The FTC &lt;a href="https://www.bclplaw.com/en-US/events-insights-news/im-not-dead-yet-is-the-demise-of-the-ftcs-click-to-cancel-exaggerated.html" rel="noopener noreferrer"&gt;issued an advance notice of proposed rulemaking in March 2026&lt;/a&gt; to begin building a new version, so the rules may change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State auto-renewal laws.&lt;/strong&gt; &lt;a href="https://webiis08.mondaq.com/unitedstates/advertising-marketing-branding/1651834/eighth-circuit-vacates-ftcs-click-to-cancel-rule" rel="noopener noreferrer"&gt;More than half of US states have automatic-renewal laws&lt;/a&gt;. California’s law applies to consumer subscriptions and was strengthened effective July 1, 2025. It now requires &lt;a href="https://oag.ca.gov/news/press-releases/attorney-general-bonta-issues-consumer-alert-california%E2%80%99s-automatic-renewal-law" rel="noopener noreferrer"&gt;an annual reminder, 15 to 45 days’ notice before renewal for terms of a year or longer, and 7 to 30 days’ notice of fee changes&lt;/a&gt;. If you sell to sole proprietors or very small businesses, ask counsel whether these laws could reach them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Card network rules.&lt;/strong&gt; Visa and Mastercard rules focus on trial conversions, changes in billing terms, and infrequent recurring charges, as covered in Section 4. Network compliance &lt;a href="https://docs.finix.com/guides/subscriptions/recurring-payment-guidelines" rel="noopener noreferrer"&gt;does not replace federal or state compliance&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ACH.&lt;/strong&gt; Nacha monitors unauthorized return rates, with a threshold of &lt;a href="https://epcor.org/Portals/0/docs/Return-Reason-Code-Resource.pdf" rel="noopener noreferrer"&gt;0.5% across return codes R05, R07, R10, R11, R29, and R51&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even where no law requires it, the practices these rules describe (clear consent, advance notice, easy cancellation, recorded proof) are what win disputes.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Card Disputes vs. ACH Returns
&lt;/h2&gt;

&lt;p&gt;If you collect by ACH, the “unauthorized” timeline looks different:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Account type&lt;/th&gt;
&lt;th&gt;Return code&lt;/th&gt;
&lt;th&gt;Window to return&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Consumer account&lt;/td&gt;
&lt;td&gt;R10 (customer advises not authorized)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://dodopayments.com/blogs/ach-return-codes/" rel="noopener noreferrer"&gt;Up to 60 calendar days&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business account (CCD/CTX debits)&lt;/td&gt;
&lt;td&gt;R29 (corporate customer advises not authorized)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.dwolla.com/p/ach-operational-guide" rel="noopener noreferrer"&gt;2 banking days&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Business-account debits get a much shorter window, so a late-surfacing dispute is more likely on a card than on a corporate ACH debit. Unauthorized ACH returns generally &lt;a href="https://docs.vopay.com/docs/return-codes-1" rel="noopener noreferrer"&gt;must not be retried&lt;/a&gt; without a new authorization. Card disputes follow the network timelines in the next section.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Structuring Onboarding to Secure Pre-Authorization
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Step 1: MSA sign-off      Step 2: Payment portal     Step 3: Kickoff call
┌──────────────────┐      ┌──────────────────┐       ┌──────────────────┐
│ Separate consent │ ───► │ Tokenized card   │ ────► │ Confirm renewal  │
│ checkbox for     │      │ or bank capture  │       │ dates, notice    │
│ recurring billing│      │ via PCI gateway  │       │ rules, AP contact│
└──────────────────┘      └──────────────────┘       └──────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. A dedicated billing consent checkbox
&lt;/h3&gt;

&lt;p&gt;Don’t bury auto-billing terms in a 20-page agreement. At signing or checkout, add a separate consent line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ ] I authorize [Company] to charge my card or bank account on a recurring basis
    for contract renewals until canceled under the termination terms of the agreement.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Record the timestamp, IP address, and the exact wording shown. This is your best evidence later.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Tokenized payment capture and card updates
&lt;/h3&gt;

&lt;p&gt;Capture payment details through a PCI-compliant gateway such as Stripe, Adyen, or Braintree. Tokenization keeps raw card data off your systems, but it does not by itself refresh expired cards. For that, enable your processor’s card account updater service, which pulls new card details from participating issuers and reduces failed renewals.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The kickoff call
&lt;/h3&gt;

&lt;p&gt;Spend two minutes on billing logistics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirm who receives renewal invoices.&lt;/li&gt;
&lt;li&gt;Ask whether their accounting setup needs PO numbers, vendor portal registration, or tax exemption certificates.&lt;/li&gt;
&lt;li&gt;Record these preferences in your CRM (HubSpot, Salesforce, or equivalent).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. What to Do When a Dispute Arrives
&lt;/h2&gt;

&lt;p&gt;Even with a strong process, some disputes will happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Reach out directly (within 24 hours)
&lt;/h3&gt;

&lt;p&gt;Call or email your primary contact. Often the executive doesn’t know finance filed a dispute. If it was a mistake, they can ask their bank to withdraw it. Check your processor’s guidance before refunding a charge that is already disputed, because you can end up paying twice.&lt;/p&gt;

&lt;h4&gt;
  
  
  Re-engagement email template
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight email"&gt;&lt;code&gt;&lt;span class="nt"&gt;Subject&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; Question about your recent renewal charge ([Invoice #])&lt;/span&gt;

Hi [Client Executive Name],

Our payment processor notified us that a dispute was opened for your renewal
invoice ([Invoice #], $[Amount], processed [Date]).

This payment covers [Start Date] through [End Date] under our agreement
signed [Date]. If your finance team flagged it because of an accounting
update or a missing PO number, we're happy to correct the details or
work out a solution quickly.

Could we have a quick call today to sort this out?

Best regards,
[Name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Respond with evidence before the deadline
&lt;/h3&gt;

&lt;p&gt;Response windows are set by the card networks and typically run &lt;a href="https://www.chargeback.io/zh/blog/stripe-chargeback-policy" rel="noopener noreferrer"&gt;7 to 21 days&lt;/a&gt;, and a missed deadline is an automatic loss. Check the due date in your processor dashboard first. Evidence that supports an “unauthorized” defense:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Proof of consent.&lt;/strong&gt; The signed contract or checkout audit log with IP address, timestamp, and the recurring billing authorization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proof of notification.&lt;/strong&gt; Delivery logs for your renewal notices and receipts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proof of use.&lt;/strong&gt; Platform logs, deliverables, approvals, and email exchanges showing the client used the service during the billed period.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment history.&lt;/strong&gt; Prior successful charges that were not disputed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;A note on Visa’s Compelling Evidence 3.0 (CE 3.0).&lt;/strong&gt; For Visa 10.4 disputes, CE 3.0 lets you show &lt;a href="https://www.checkout.com/blog/visa-compelling-evidence-3-0" rel="noopener noreferrer"&gt;two prior undisputed transactions on the same card, processed 120 to 365 days before the disputed charge, with matching data such as IP address or device&lt;/a&gt;. Stripe notes its validator uses &lt;a href="https://docs.stripe.com/disputes/api/visa-ce3" rel="noopener noreferrer"&gt;120 to 364 days&lt;/a&gt;. This helps with monthly and quarterly billing, but a client’s &lt;em&gt;first annual renewal&lt;/em&gt; generally can’t qualify, because only one earlier charge exists. Annual contracts therefore depend even more on your consent record and renewal notices.&lt;/p&gt;

&lt;p&gt;Also remember that winning a dispute recovers the money but &lt;a href="https://redo.com/resources/articles/chargebacks/stripe-chargeback-fees" rel="noopener noreferrer"&gt;does not remove it from your dispute rate&lt;/a&gt;. Prevention beats representment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary Checklist: Building a Frictionless Renewal Engine
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Contract clarity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Separate recurring billing authorization clause in the MSA&lt;/li&gt;
&lt;li&gt;Unambiguous non-renewal window, with a reminder sent &lt;em&gt;before&lt;/em&gt; the deadline&lt;/li&gt;
&lt;li&gt;Separate consent checkbox with recorded timestamp and IP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Proactive notification&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Renewal notice about 30 days out, plus a second reminder 7 to 14 days out&lt;/li&gt;
&lt;li&gt;Notices go to both the primary contact and accounts payable&lt;/li&gt;
&lt;li&gt;Account manager check-in on high-value accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Billing transparency&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Statement descriptor that matches client-facing branding (22 characters or fewer on Stripe)&lt;/li&gt;
&lt;li&gt;Card account updater enabled&lt;/li&gt;
&lt;li&gt;PO numbers and invoicing requirements collected in advance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dispute readiness&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;24-hour outreach process for any dispute&lt;/li&gt;
&lt;li&gt;Retained logs: consent, IP, timestamps, email delivery receipts, usage records&lt;/li&gt;
&lt;li&gt;Response deadline tracking and a clear escalation path between finance and account management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pairing clear consent with proactive, well-timed renewal communication removes most billing surprises. That protects your processing standing, your recurring revenue, and the relationships behind it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources and Further Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Visa VAMP thresholds: &lt;a href="https://fraudio.com/blog/visa-vamp-guide" rel="noopener noreferrer"&gt;Fraudio&lt;/a&gt;, &lt;a href="https://dodopayments.com/blogs/visa-vamp-explained" rel="noopener noreferrer"&gt;Dodo Payments&lt;/a&gt;, &lt;a href="https://www.chargeflow.io/blog/vamp-visa-acquirer-monitoring-program" rel="noopener noreferrer"&gt;Chargeflow&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Stripe dispute fees: &lt;a href="https://support.stripe.com/questions/june-2025-pricing-updates-for-disputes" rel="noopener noreferrer"&gt;Stripe support&lt;/a&gt;, &lt;a href="https://redo.com/resources/articles/chargebacks/stripe-chargeback-fees" rel="noopener noreferrer"&gt;Redo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Stripe statement descriptor rules: &lt;a href="https://docs.stripe.com/get-started/account/statement-descriptors" rel="noopener noreferrer"&gt;Stripe docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Visa Compelling Evidence 3.0: &lt;a href="https://support.stripe.com/questions/how-does-stripe-support-visa-compelling-evidence-3-0" rel="noopener noreferrer"&gt;Stripe support&lt;/a&gt;, &lt;a href="https://www.checkout.com/blog/visa-compelling-evidence-3-0" rel="noopener noreferrer"&gt;Checkout.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FTC Click-to-Cancel and ROSCA: &lt;a href="https://www.cooley.com/news/insight/2025/2025-07-11-click-to-cancel-just-got-cancelled-eighth-circuit-vacates-entirety-of-ftcs-negative-option-rule" rel="noopener noreferrer"&gt;Cooley&lt;/a&gt;, &lt;a href="https://www.bclplaw.com/en-US/events-insights-news/im-not-dead-yet-is-the-demise-of-the-ftcs-click-to-cancel-exaggerated.html" rel="noopener noreferrer"&gt;BCLP&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;California Automatic Renewal Law: &lt;a href="https://oag.ca.gov/news/press-releases/attorney-general-bonta-issues-consumer-alert-california%E2%80%99s-automatic-renewal-law" rel="noopener noreferrer"&gt;California Attorney General&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Visa and Mastercard recurring billing rules: &lt;a href="https://docs.finix.com/guides/subscriptions/recurring-payment-guidelines" rel="noopener noreferrer"&gt;Finix&lt;/a&gt;, &lt;a href="https://www.chargebackgurus.com/blog/mastercard-subscription-rules" rel="noopener noreferrer"&gt;Chargeback Gurus&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ACH return codes and unauthorized return rates: &lt;a href="https://epcor.org/Portals/0/docs/Return-Reason-Code-Resource.pdf" rel="noopener noreferrer"&gt;EPCOR&lt;/a&gt;, &lt;a href="https://www.dwolla.com/p/ach-operational-guide" rel="noopener noreferrer"&gt;Dwolla&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-i-didn-t-authorize-that-dispute-how-to-pre-clear-renewal-invoices-without" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-i-didn-t-authorize-that-dispute-how-to-pre-clear-renewal-invoices-without&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
    </item>
    <item>
      <title>The “Who Holds the Keys?” Audit: Mapping Registrar Account Ownership vs. Agency Operational Access</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Mon, 02 Nov 2026 02:14:08 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-who-holds-the-keys-audit-mapping-registrar-account-ownership-vs-agency-operational-access-33pg</link>
      <guid>https://dev.to/instarenewal/the-who-holds-the-keys-audit-mapping-registrar-account-ownership-vs-agency-operational-access-33pg</guid>
      <description>&lt;p&gt;In digital marketing, web design, and managed IT services, few situations turn ugly as fast as a client-agency offboarding that goes wrong.&lt;/p&gt;

&lt;p&gt;A client decides to move to a new provider or bring their marketing in-house. They ask for access to their website, DNS records, and domain portfolio. The agency replies with an invoice for “transition fees.” Or it points out that the domain sits inside the agency’s master GoDaddy, Namecheap, or Cloudflare account, so the client has no account to log in to. A routine vendor transition becomes a dispute over digital custody.&lt;/p&gt;

&lt;p&gt;The root cause is usually confusion between &lt;strong&gt;technical administrative access&lt;/strong&gt; and &lt;strong&gt;registrar account ownership&lt;/strong&gt;. Being able to edit DNS records does not make an agency the owner of a domain. And paying a monthly retainer does not mean the client controls the account where the domain actually lives.&lt;/p&gt;

&lt;p&gt;This audit framework explains how the two differ, how to check where your domains actually sit, and how to structure agency-client access so nobody can be held hostage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Admin Rights vs. Account Ownership
&lt;/h2&gt;

&lt;p&gt;Domain governance mixes two layers that are easy to blur: &lt;strong&gt;who is named as the registrant&lt;/strong&gt; and &lt;strong&gt;who controls the registrar account&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A domain registration is not a deed to physical property. It is a registration held through an ICANN-accredited registrar, recorded at the registry (Verisign operates &lt;code&gt;.com&lt;/code&gt;), and governed by the registrar’s terms and ICANN policy. Whether that registration counts as “property” depends on the jurisdiction. The U.S. Ninth Circuit held in &lt;em&gt;Kremen v. Cohen&lt;/em&gt; (2003) that a registrant has an intangible property right in a domain name, at least under California law. Other jurisdictions treat the question differently. Either way, &lt;strong&gt;practical control&lt;/strong&gt; usually comes down to who can log in to the account the domain sits in.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------------------+
|                           REGISTRAR ACCOUNT (OWNER)                               |
|  - Controls account-level login, MFA, recovery email, and payment methods.        |
|  - Can unlock the domain and obtain the Transfer Authorization Code (TAC).        |
+-----------------------------------------------------------------------------------+
                                         |
               +-------------------------+-------------------------+
               |                                                   |
               v                                                   v
+-------------------------------------+   +-------------------------------------+
|        REGISTRANT (ON RECORD)       |   |        DELEGATED / TECH ACCESS      |
|  - The person or organization       |   |  - Edits DNS records (A/CNAME/MX).  |
|    named as holder of the domain.   |   |  - Scope set by the account owner.  |
|  - The party ICANN policy treats    |   |  - Can be revoked at any time.      |
|    as the Registered Name Holder.   |   |                                     |
+-------------------------------------+   +-------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Contact Roles: What Still Exists
&lt;/h3&gt;

&lt;p&gt;Domains historically listed four contacts: registrant, administrative, technical, and billing. That model is largely gone for generic TLDs such as &lt;code&gt;.com&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Registrant (Registered Name Holder):&lt;/strong&gt; The person or organization that holds the registration and is the contract party under ICANN’s policies. Under the ICANN Registration Data Policy, which took effect August 21, 2025, the registrant contact is the only contact universally required for gTLDs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Administrative, technical, and billing contacts:&lt;/strong&gt; These are no longer part of the required data set. Many registrars have stopped collecting them for most gTLDs, and some registries still accept them. Where they exist, they are just designated people, such as an employee or a web developer. Being listed there conveys no ownership.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Historical note:&lt;/strong&gt; ICANN’s older Transfer Policy let either the registrant or the administrative contact (the “Transfer Contact”) authorize transfers. The Transfer Policy Review working group recommended replacing those references with “Registered Name Holder.” The ICANN Board adopted the review’s recommendations on June 7, 2026, and implementation is still to come.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The point of this audit is not to find a technical contact. It is to find out &lt;strong&gt;who controls the registrar account&lt;/strong&gt; and &lt;strong&gt;who is listed as registrant&lt;/strong&gt;. These are often two different parties.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Core Conflict: Agency Master Account vs. Client-Owned Account
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agency master account (high risk):&lt;/strong&gt; The agency registers the client’s domain inside its own registrar account (for example, GoDaddy Pro or a Cloudflare account it owns). Even if the client is named as registrant, the agency holds the login, recovery email, and MFA device. To transfer the domain to a new registrar, the client needs a Transfer Authorization Code (TAC). The client can only get one through the account holder, so in practice the client needs the agency’s cooperation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client-owned account with delegated access (best practice):&lt;/strong&gt; The domain sits in a registrar account created under the client’s legal entity and a corporate email address. The agency is invited as a delegate or member with limited permissions, enough to edit DNS records without touching billing, recovery settings, or transfer controls.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Anatomy of a Domain Custody Battle
&lt;/h2&gt;

&lt;p&gt;Most of these disputes do not start with bad intent. They start with onboarding shortcuts that nobody revisits.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────────┐
│                     CHRONOLOGY OF A CUSTODY FAILURE                     │
├─────────────────────────────────────────────────────────────────────────┤
│  1. ONBOARDING SHORTCUT                                                 │
│     Agency registers the client's domain in its own master account      │
│     to move faster on DNS setup.                                        │
├─────────────────────────────────────────────────────────────────────────┤
│  2. OPERATIONAL BLIND SPOT                                              │
│     Client pays monthly invoices and assumes that covers ownership.     │
│     No asset inventory records where the domain actually lives.         │
├─────────────────────────────────────────────────────────────────────────┤
│  3. RELATIONSHIP BREAKDOWN                                              │
│     Client ends the engagement over performance or pricing.             │
├─────────────────────────────────────────────────────────────────────────┤
│  4. DEADLOCK                                                            │
│     Agency withholds the TAC or account handoff pending disputed fees.  │
│     Client cannot move DNS, email, or the domain itself.                │
└─────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. The Convenience Trap During Onboarding
&lt;/h3&gt;

&lt;p&gt;When a non-technical client cannot find their old registrar login, the account manager says, “We’ll register it in our account for now and sort it out later.” Three years later the developer who set it up has left, the client’s marketing lead has changed, and the domain is still in the agency’s portfolio.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Personal Employee Registration
&lt;/h3&gt;

&lt;p&gt;A client employee registers a core brand domain using a personal email address or personal credit card. When that person leaves on bad terms, the business loses the password-reset emails, MFA codes, and renewal notices tied to that account.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Reseller Trap
&lt;/h3&gt;

&lt;p&gt;Many agencies resell domains through their own registrar or reseller accounts and invoice the client for renewals. A line item like “Domain Renewal – $25/yr” feels like proof of ownership, but it is not. If the agency disappears or a dispute arises, the registrar deals with its own account holder, and the client has no direct account relationship to rely on. GoDaddy’s complaint policy, for example, says it will not release customer or account information without the customer’s permission, and it acts on court orders, not on one party’s claim to a domain.&lt;/p&gt;

&lt;h2&gt;
  
  
  The “Who Holds the Keys?” Audit: Five Steps
&lt;/h2&gt;

&lt;p&gt;Run this audit across your own and your clients’ portfolios.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────────────────────────────────────────┐
│                        DOMAIN AUDIT FLOWCHART                          │
├────────────────────────────────────────────────────────────────────────┤
│  [Step 1: Registration data] ─&amp;gt; Identify registrar &amp;amp; visible registrant│
│                                    │                                   │
│  [Step 2: Account mapping] ──&amp;gt; Who owns the registrar login?           │
│                                    │                                   │
│  [Step 3: MFA &amp;amp; recovery] ───&amp;gt; Where do resets and codes go?           │
│                                    │                                   │
│  [Step 4: DNS &amp;amp; nameservers] &amp;gt; Who can change where the domain points? │
│                                    │                                   │
│  [Step 5: Contract review] ──&amp;gt; Does the MSA match technical reality?   │
└────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 1: Check Registration Data (RDAP)
&lt;/h3&gt;

&lt;p&gt;WHOIS has been replaced by RDAP for generic TLDs. ICANN removed the requirement for gTLD registrars and most registries to run WHOIS on January 28, 2025, and ICANN’s own lookup tool at &lt;code&gt;lookup.icann.org&lt;/code&gt; is RDAP-based.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What to check:&lt;/strong&gt; The registrar of record, the creation and expiry dates, the EPP status codes (such as &lt;code&gt;clientTransferProhibited&lt;/code&gt;), and the nameservers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limitation:&lt;/strong&gt; Registrant name, email, and phone are redacted by default for most gTLD domains, in RDAP as in WHOIS before it. The registrant field may therefore show nothing useful. You cannot rely on a public lookup to prove who the registrant is.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What to do instead:&lt;/strong&gt; Log in to the registrar account that holds the domain and read the registrant details there. Where you do not have access, ask the account holder to show you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Red flag:&lt;/strong&gt; The registrant, where visible or shown in the account, names the agency instead of the client.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Map the Registrar Account
&lt;/h3&gt;

&lt;p&gt;Identify where the domain actually lives. It might be AWS Route 53, Cloudflare Registrar, GoDaddy, Namecheap, or Squarespace Domains (which took over Google Domains).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What to check:&lt;/strong&gt; Who owns the account’s primary login email? Is it a role-based client address or a person?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Red flag:&lt;/strong&gt; The account email is an agency address (&lt;code&gt;ops@agency.com&lt;/code&gt;) or an ex-employee’s personal inbox.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Audit MFA and Recovery Channels
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What to check:&lt;/strong&gt; Where do password resets, SMS codes, and authenticator prompts go?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Red flag:&lt;/strong&gt; MFA is tied to one person’s personal phone, which makes that person a single point of failure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Audit Nameserver and DNS Control
&lt;/h3&gt;

&lt;p&gt;Registration and DNS hosting are separate. The registrar holds the registration, while a DNS provider (often Cloudflare, Route 53, or the registrar itself) answers queries for the domain.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What to check:&lt;/strong&gt; Which nameservers does the domain use, and who administers that DNS account?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk assessment:&lt;/strong&gt; DNS control is powerful. Whoever can edit DNS can redirect the website, change MX records to reroute email, and add TXT records that can satisfy domain-validation checks. DNS access alone does not let someone transfer the domain, but it does let them take the site and the email offline or redirect them. Treat DNS access as sensitive even when the registrar account is safe.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 5: Review Contract Alignment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What to check:&lt;/strong&gt; Does the Master Services Agreement (MSA) state that domain names, DNS zone files, and related accounts belong to the client? Does it require the agency to cooperate with a transfer, and for how long?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Red flag:&lt;/strong&gt; The contract is silent, or it says the agency “manages” assets without saying who owns them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Access Matrix: Who Can Do What
&lt;/h2&gt;

&lt;p&gt;This matrix shows typical outcomes when the client owns the registrar account and delegates limited access. Exact permissions vary by provider and configuration.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action / Capability&lt;/th&gt;
&lt;th&gt;Account Owner (Client)&lt;/th&gt;
&lt;th&gt;Delegated Agency Access (typical)&lt;/th&gt;
&lt;th&gt;Billing-Only User&lt;/th&gt;
&lt;th&gt;DNS-Only Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Obtain the Transfer Authorization Code (TAC)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Only if transfer permission is granted&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Change account login, recovery email, MFA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Add or change payment methods&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Edit A, CNAME, MX, TXT records&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Change nameservers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Depends on permission level&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Usually no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Renew or buy products&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Depends on permission level&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Some platforms let you grant domain transfer permission to a delegate. GoDaddy, for example, lets you give delegates domain management actions, transfer actions, or both. Leave transfer permission off for an agency unless you intend to grant it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices: Agency Access Without Sacrificing Ownership
&lt;/h2&gt;

&lt;p&gt;Agencies need real technical access to do their jobs. Clients need legal and practical control over their core assets. Both are possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Put the Domain in a Client-Owned Account
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rule:&lt;/strong&gt; Register or transfer domains into a registrar account owned by the client’s legal entity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation:&lt;/strong&gt; Create the account with a role-based mailbox, such as &lt;code&gt;domains@clientcompany.com&lt;/code&gt;, rather than an individual’s address. Keep at least two people at the client able to recover the account. The client holds the payment method and the root login.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Use Native Delegation Tools
&lt;/h3&gt;

&lt;p&gt;Never share the root password. Use the provider’s delegation features instead.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GoDaddy:&lt;/strong&gt; Use Delegate Access. GoDaddy’s “Products &amp;amp; Domains” level lets a delegate use products and manage domains without making purchases or viewing payment details. For domains, you choose whether delegates can perform management actions, transfer actions, or both. Whatever the level, delegates cannot manage payment methods or invite other people to the account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare:&lt;/strong&gt; Invite the agency as an account member with a narrow role. Cloudflare’s &lt;strong&gt;DNS&lt;/strong&gt; role can edit DNS records. The &lt;strong&gt;Super Administrator&lt;/strong&gt; role can edit any setting, make purchases, update billing, and manage members, so reserve it for the client’s own staff. Cloudflare recommends keeping more than one Super Administrator so the account does not depend on one person.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Route 53:&lt;/strong&gt; Use a cross-account IAM role with a &lt;strong&gt;custom policy&lt;/strong&gt; limited to the hosted zone actions the agency needs, such as changing record sets. Do not use the managed policy &lt;code&gt;AmazonRoute53FullAccess&lt;/code&gt; for this purpose. AWS documents that it covers domain registration as well as health checks. For domain registration actions, AWS provides the separate &lt;code&gt;AmazonRoute53DomainsFullAccess&lt;/code&gt; policy, which an agency should not need for DNS work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Apply Transfer Locks and Consider Registry Lock
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Registrar lock:&lt;/strong&gt; Keep &lt;code&gt;clientTransferProhibited&lt;/code&gt; enabled on production domains so a domain cannot be transferred without someone deliberately unlocking it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registry Lock:&lt;/strong&gt; For high-value &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.net&lt;/code&gt;, &lt;code&gt;.cc&lt;/code&gt;, and &lt;code&gt;.name&lt;/code&gt; domains, Verisign offers Registry Lock through participating registrars. Changes to a locked domain require out-of-band verification between the registrar and Verisign, such as a phone call and a security phrase. Not every registrar offers it, and reporting in the domain industry has noted that GoDaddy does not offer it to customers. Ask your registrar directly before you rely on it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Write Offboarding Into the MSA
&lt;/h3&gt;

&lt;p&gt;Add a standard asset-handoff clause to every agency agreement. A sample, to adapt with your lawyer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Digital Asset Handoff&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ownership.&lt;/strong&gt; All domain names, DNS zones, SSL/TLS certificates, and related accounts registered or managed for Client are the property of Client. Where any such asset is held in Agency’s account, Agency holds it on Client’s behalf.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access revocation.&lt;/strong&gt; On notice of termination, Client may revoke Agency’s delegated access at any time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transfer cooperation.&lt;/strong&gt; Within five (5) business days of Client’s written request, Agency will provide the Transfer Authorization Code or move the asset into an account Client designates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No withholding.&lt;/strong&gt; Agency will not withhold domain registrations, DNS records, or related credentials as leverage in a fee dispute. Fee disputes are resolved separately under this Agreement.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Emergency Remediation: Recovering a Trapped Domain
&lt;/h2&gt;

&lt;p&gt;If a critical domain is stuck in an agency’s or a former employee’s account, work through these steps in order. Be realistic about each one. Registrars generally do not decide ownership disputes, so the fastest route is almost always cooperation, and the slowest is litigation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Document your claim.&lt;/strong&gt; Gather payment records, invoices, the contract, incorporation documents, and any historical registration data showing your organization registered or paid for the domain. Note the registrar and the current nameservers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Send a formal written request.&lt;/strong&gt; Address it to the agency’s leadership, not just your account manager. Ask for the TAC or a transfer of the domain into your account, and set a reasonable deadline. Refer to the MSA clause if there is one. A short, specific request often works where an angry email does not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protect operations while you negotiate.&lt;/strong&gt; If you control the DNS provider, you may be able to keep the site and email running. If the agency controls DNS, ask for a copy of the full zone file so you can rebuild it elsewhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understand what the registrar will and won’t do.&lt;/strong&gt; Registrars tend to treat the account holder as their customer. GoDaddy’s published complaint process, for example, says it will comply with a court order about a customer’s domain, and points disputes to the UDRP or the courts. It also says it will not release account information without the customer’s permission. Do not expect a registrar to hand over an account because you can show you paid for it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use the right legal tool.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UDRP:&lt;/strong&gt; The Uniform Domain-Name Dispute-Resolution Policy lets a trademark owner obtain transfer of a domain only if it proves three things: the domain is identical or confusingly similar to its trademark, the registrant has no rights or legitimate interests, and the domain was registered and is being used in bad faith. It was designed for abusive cybersquatting. Panels have repeatedly dismissed complaints that turn on a contract or business dispute, such as a disagreement over what an agency agreed to hand over. A fee dispute with your own agency is exactly that kind of dispute, so a UDRP complaint may fail even if you hold the trademark.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;URS:&lt;/strong&gt; The Uniform Rapid Suspension system only suspends a domain. It cannot transfer one. It applies mainly to newer gTLDs, not to &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.net&lt;/code&gt;, or &lt;code&gt;.org&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Courts:&lt;/strong&gt; For a contractual or ownership dispute with a vendor, a court claim is usually the appropriate route. Registrars act on court orders. Speak to a lawyer who handles domain and commercial disputes in your jurisdiction.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Executive Audit Checklist
&lt;/h2&gt;

&lt;p&gt;Use this list to review your own or a client’s portfolio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ownership&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every domain is listed in a central inventory with its registrar, account owner, and expiry date.&lt;/li&gt;
&lt;li&gt;Each domain sits in an account owned by the client’s legal entity.&lt;/li&gt;
&lt;li&gt;The registrant named on each domain is the client entity, not the agency or an individual.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Access&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The registrar account email is a role-based mailbox, not a personal address.&lt;/li&gt;
&lt;li&gt;At least two people at the client can recover the account.&lt;/li&gt;
&lt;li&gt;MFA is not tied to one person’s personal phone.&lt;/li&gt;
&lt;li&gt;Agency access is through delegation or named members, not a shared password.&lt;/li&gt;
&lt;li&gt;Delegated access excludes billing, recovery settings, and (unless intended) transfer permission.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;clientTransferProhibited&lt;/code&gt; is enabled on production domains.&lt;/li&gt;
&lt;li&gt;High-value domains have been assessed for Registry Lock.&lt;/li&gt;
&lt;li&gt;DNS administration is held by a known party, and changes are logged where the provider allows it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Contracts&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The MSA states that the client owns domains, DNS, and related accounts.&lt;/li&gt;
&lt;li&gt;The MSA requires the agency to cooperate with transfers within a defined number of days.&lt;/li&gt;
&lt;li&gt;The MSA says assets cannot be withheld in a fee dispute.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Offboarding&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A written offboarding checklist exists and names who revokes which access.&lt;/li&gt;
&lt;li&gt;Renewal notices go to a monitored shared mailbox rather than an individual.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Securing Your Digital Footprint
&lt;/h2&gt;

&lt;p&gt;Technical admin rights are an operational necessity for agencies, but they are not a substitute for owning or controlling the registrar account.&lt;/p&gt;

&lt;p&gt;Keep &lt;strong&gt;account ownership&lt;/strong&gt; with the client and give the agency &lt;strong&gt;delegated operational access&lt;/strong&gt;. That lets the agency do its job, lets the client leave when it needs to, and keeps a billing or performance dispute from turning into a hostage situation.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-who-holds-the-keys-audit-mapping-registrar-account-ownership-vs-agency" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-who-holds-the-keys-audit-mapping-registrar-account-ownership-vs-agency&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
    </item>
    <item>
      <title>The “Net-Zero Retainer” Fallacy: Why Bundling Renewal Costs into Fixed-Fee Contracts Destroys Agency Margins</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Sun, 01 Nov 2026 02:05:08 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-net-zero-retainer-fallacy-why-bundling-renewal-costs-into-fixed-fee-contracts-destroys-3ef4</link>
      <guid>https://dev.to/instarenewal/the-net-zero-retainer-fallacy-why-bundling-renewal-costs-into-fixed-fee-contracts-destroys-3ef4</guid>
      <description>&lt;p&gt;Across the digital agency landscape, the &lt;strong&gt;all-in maintenance care plan&lt;/strong&gt; is often pitched as a win-win recurring revenue model. Agencies bundle hosting, domain renewals, premium plugin licenses, security tooling, and core updates into one flat monthly or annual fee, for example $300 to $500 per month.&lt;/p&gt;

&lt;p&gt;On paper, this gives the agency predictable MRR (monthly recurring revenue) and gives the client one simple invoice. In practice, it hides a financial problem we’ll call &lt;strong&gt;the Net-Zero Retainer Fallacy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When an agency absorbs volatile third-party vendor costs inside a fixed-fee contract, with no adjustment mechanism and no pass-through billing, the retainer’s real margin erodes every renewal cycle. A care plan that launched at a healthy gross margin (say, 70%) can slowly become an administrative burden, or a net loss.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A note on the numbers:&lt;/strong&gt; Retainer prices, margins, and cost scenarios in this article are illustrative models. Vendor price changes, dates, and policies are cited from public sources and current as of November 1, 2026. Verify them before quoting them to clients.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Anatomy of the Net-Zero Retainer
&lt;/h2&gt;

&lt;p&gt;The Net-Zero Retainer appears when the growth of bundled third-party hard costs outpaces the price of a fixed agency maintenance agreement.&lt;/p&gt;

&lt;p&gt;Most agencies price care plans from a snapshot of vendor costs on the day the contract is signed. The vendors don’t hold still. SaaS pricing is rising far faster than general inflation. Vertice’s SaaS Inflation Index, which tracks real contract pricing, &lt;a href="https://www.vertice.one/insights/saas-inflation-rate" rel="noopener noreferrer"&gt;put SaaS price inflation at about 12% year over year&lt;/a&gt; in 2025, several times the consumer inflation rate. A flat $3,600 annual retainer (which is $300 a month) leaves the agency holding all of that vendor pricing risk.&lt;/p&gt;

&lt;p&gt;Here is the sample cost-squeeze that results. The retainer stays the same while vendor costs climb:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------+
|              THE AGENCY MARGIN SQUEEZE (ILLUSTRATIVE)                 |
+-----------------------------------------------------------------------+
|  YEAR 1:  [Vendor Hard Costs: $40] -------------&amp;gt; [Margin: $260]      |  $300 Retainer
|  YEAR 2:  [Vendor Hard Costs: $85] -------&amp;gt; [Margin: $215]            |  $300 Retainer
|  YEAR 3:  [Vendor Hard Costs: $170] --&amp;gt; [Margin: $130]                |  $300 Retainer
|  YEAR 4:  [Vendor Hard Costs: $290] -&amp;gt; [Margin: $10]                  |  $300 Retainer
+-----------------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What Vendors Have Actually Done Recently
&lt;/h2&gt;

&lt;p&gt;The squeeze isn’t hypothetical. Here are recent, documented examples relevant to a typical agency stack:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vendor / Asset&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;th&gt;Effective&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;.com&lt;/code&gt; registry (Verisign)&lt;/td&gt;
&lt;td&gt;Wholesale fee rises from $10.26 to $10.97 (about 6.9%)&lt;/td&gt;
&lt;td&gt;November 1, 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;.net&lt;/code&gt; registry (Verisign)&lt;/td&gt;
&lt;td&gt;Wholesale fee rises from $10.91 to $12.00 (about 10%)&lt;/td&gt;
&lt;td&gt;March 1, 2027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;.io&lt;/code&gt; registry (Identity Digital)&lt;/td&gt;
&lt;td&gt;Wholesale fee rises from $50 to $56 (12%)&lt;/td&gt;
&lt;td&gt;January 19, 2027&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft 365 Business Basic&lt;/td&gt;
&lt;td&gt;$6 to $7 per user per month (about 16.7%)&lt;/td&gt;
&lt;td&gt;July 1, 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Microsoft 365 Business Standard&lt;/td&gt;
&lt;td&gt;$12.50 to $14 per user per month (12%)&lt;/td&gt;
&lt;td&gt;July 1, 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Twilio SendGrid&lt;/td&gt;
&lt;td&gt;Permanent free plan retired; replaced by a 60-day trial&lt;/td&gt;
&lt;td&gt;May 27, 2025&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WP Rocket&lt;/td&gt;
&lt;td&gt;Unlimited-site “Infinite” plan replaced by tiered “Multi” plans with site caps&lt;/td&gt;
&lt;td&gt;Rolled out in phases&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sources: &lt;a href="https://domainnamewire.com/2026/08/27/verisign-announces-net-price-increase/" rel="noopener noreferrer"&gt;Domain Name Wire (.net)&lt;/a&gt;, &lt;a href="https://domainnamewire.com/2026/07/21/io-price-increase/" rel="noopener noreferrer"&gt;Domain Name Wire (.io)&lt;/a&gt;, &lt;a href="https://www.openprovider.com/blog/com-price-increase-domain-resellers" rel="noopener noreferrer"&gt;Openprovider (.com)&lt;/a&gt;, &lt;a href="https://www.theregister.com/2025/12/05/microsoft_365_prices_up_2026" rel="noopener noreferrer"&gt;The Register (Microsoft 365)&lt;/a&gt;, &lt;a href="https://www.twilio.com/en-us/changelog/sendgrid-free-plan" rel="noopener noreferrer"&gt;Twilio changelog&lt;/a&gt;, and &lt;a href="https://pricetimeline.com/news/135" rel="noopener noreferrer"&gt;PriceTimeline (WP Rocket)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Registry prices are wholesale fees. Registrars set their own retail prices on top, so the amount your clients’ renewals actually go up will vary by registrar.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Domain Registry Increases: The Quiet Compounder
&lt;/h2&gt;

&lt;p&gt;Domain pricing is split across several parties. ICANN sets policy and holds the registry contracts. Registry operators such as Verisign (which runs &lt;code&gt;.com&lt;/code&gt; and &lt;code&gt;.net&lt;/code&gt;) charge registrars a wholesale fee. Registrars then set the retail price. Domains were once treated as a negligible $10–$15 line item, but the wholesale layer now moves on a predictable schedule.&lt;/p&gt;

&lt;h3&gt;
  
  
  Case Study: The &lt;code&gt;.com&lt;/code&gt; Price Ladder
&lt;/h3&gt;

&lt;p&gt;Verisign’s &lt;code&gt;.com&lt;/code&gt; Registry Agreement allows increases of up to 7% in each of the final four years of every six-year cycle, and Verisign has used that room repeatedly. The wholesale price sat at $7.85 for years, rose to $10.26 by 2024, and &lt;a href="https://www.openprovider.com/blog/com-price-increase-domain-resellers" rel="noopener noreferrer"&gt;goes to $10.97 on November 1, 2026&lt;/a&gt;, roughly 40% above the old $7.85 baseline. Verisign must give registrars &lt;a href="https://domainnamewire.com/2025/11/19/verisign-can-increase-com-prices-in-2026/" rel="noopener noreferrer"&gt;at least six months’ notice&lt;/a&gt; before an increase.&lt;/p&gt;

&lt;p&gt;Industry observers expect that further 7% steps could be available in 2027, 2028, and 2029. The compounding math is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cost after n years = Initial cost × (1 + r)^n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here &lt;em&gt;r&lt;/em&gt; is the annual rate of increase and &lt;em&gt;n&lt;/em&gt; is the number of years. If Verisign took the full 7% in each of the next three years, the wholesale &lt;code&gt;.com&lt;/code&gt; fee would go from $10.97 to roughly $13.44 (10.97 × 1.07³). That is about $3.18 more per domain per year than today’s $10.26.&lt;/p&gt;

&lt;p&gt;Across 200 client domains that is roughly $636 a year in wholesale drift, and across 500 domains it is about $1,590 a year, before any registrar markup. A flat retainer absorbs every dollar of it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Other Extensions Move Too
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.net&lt;/code&gt;&lt;/strong&gt; rises about 10%, from $10.91 to $12.00, on March 1, 2027.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.io&lt;/code&gt;&lt;/strong&gt; rises 12%, from $50 to $56, on January 19, 2027. &lt;code&gt;.io&lt;/code&gt; is a country-code TLD for the British Indian Ocean Territory, and its long-term future has been debated because of the UK–Mauritius Chagos negotiations. Reporting in April 2026 said the UK &lt;a href="https://domainincite.com/?p=31642" rel="noopener noreferrer"&gt;had frozen its plans&lt;/a&gt; to cede the islands, so &lt;code&gt;.io&lt;/code&gt; continues to operate normally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.info&lt;/code&gt; and &lt;code&gt;.pro&lt;/code&gt;&lt;/strong&gt; rise from $21 to $23.50, and &lt;strong&gt;&lt;code&gt;.mobi&lt;/code&gt;&lt;/strong&gt; from $40 to $51, on the same January 2027 date.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One practical lever: registries typically bill a registration or renewal at the price in force when the order is placed, and a domain can be renewed for up to ten years in total. Renewing before an announced effective date (before March 1, 2027 for &lt;code&gt;.net&lt;/code&gt;, for example) locks in the old wholesale price for those years. That only helps if someone owns the calendar.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. SaaS and Software License Tier Creep
&lt;/h2&gt;

&lt;p&gt;The biggest source of margin loss in bundled retainers is vendors changing how they package and meter their products. Agencies relied for years on “unlimited site” and agency-wide licenses. Several vendors have narrowed or removed them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Site caps replacing unlimited tiers.&lt;/strong&gt; WP Rocket’s unlimited Infinite plan ($299 per year) was &lt;a href="https://pricetimeline.com/news/135" rel="noopener noreferrer"&gt;replaced by Multi plans with site limits&lt;/a&gt;, reportedly 50 sites at the same price at first. Popup Maker also &lt;a href="https://wppopupmaker.com/announcements/introducing-our-new-pricing-plans/" rel="noopener noreferrer"&gt;dropped its unlimited-site plan&lt;/a&gt; in favor of scaling plans.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free tiers becoming trials.&lt;/strong&gt; SendGrid &lt;a href="https://www.twilio.com/en-us/changelog/sendgrid-free-plan" rel="noopener noreferrer"&gt;retired its free Email API and Marketing Campaigns plans on May 27, 2025&lt;/a&gt;. Sending paused for free accounts after a 60-day transition. New accounts get a 60-day trial of 100 emails per day, and paid plans start at $19.95 per month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-seat repricing.&lt;/strong&gt; Microsoft’s July 1, 2026 list-price increase pushed Business Basic to $7 and Business Standard to $14 per user per month, while Business Premium stayed at $22. Existing customers generally keep their old price until their next renewal after July 1, so the increase reaches a client tenant at renewal time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage-based scaling.&lt;/strong&gt; Many providers meter monthly active users, API calls, bandwidth, or storage, and move high-usage customers to higher tiers.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Client Growth Paradox
&lt;/h3&gt;

&lt;p&gt;Under a bundled retainer, &lt;strong&gt;client success reduces agency profitability&lt;/strong&gt;. Consider this hypothetical e-commerce client whose traffic doubles over 18 months:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Order volume increases usage on the client’s CRM, email automation, and tax-calculation tools.&lt;/li&gt;
&lt;li&gt;The host moves the account to a larger plan to handle more concurrent PHP workers.&lt;/li&gt;
&lt;li&gt;The transactional email service moves from an entry tier (for example SendGrid’s $19.95 Essentials) to a higher one (SendGrid Pro starts at $89.95).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Say the agency’s hard costs rise from $80 to $380 a month under an all-inclusive $500 care plan. The client pays the same fee, and the agency’s gross margin falls from &lt;strong&gt;84% to 24%&lt;/strong&gt;: $420 of margin becomes $120. The agency did good work, and the work made the contract worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Operational Risk of Holding Client Assets
&lt;/h2&gt;

&lt;p&gt;Bundling renewals under agency-owned master accounts also creates operational exposure beyond margin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                       ┌─────────────────────────┐
                       │   Agency Master Account │
                       └────────────┬────────────┘
                                    │
               ┌────────────────────┼────────────────────┐
               ▼                    ▼                    ▼
      ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐
      │ Client A Assets │  │ Client B Assets │  │ Client C Assets │
      └─────────────────┘  └─────────────────┘  └─────────────────┘
                                    │
                         [Failed Credit Card / Churn]
                                    │
                                    ▼
                         ┌────────────────────┐
                         │ Account Suspension │
                         │ Affects ALL Assets │
                         └────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You are the customer of record.&lt;/strong&gt; If the agency holds the registrar or hosting account, vendors bill and suspend the agency’s account, not the client’s. If a client stops paying the retainer, the agency has to decide whether to keep covering vendor renewals. Your contract governs who is responsible, so check it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consolidated payment risk.&lt;/strong&gt; Dozens of client subscriptions on one master card mean one expired card or fraud block can interrupt many services at once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expiry has a clock.&lt;/strong&gt; If a domain renewal fails, ICANN’s &lt;a href="https://www.icann.org/resources/pages/errp-2013-02-28-en" rel="noopener noreferrer"&gt;Expired Registration Recovery Policy&lt;/a&gt; requires registrars to send expiration notices and gTLD registries to offer a 30-day Redemption Grace Period. During that period DNS resolution is disabled and the domain can be restored, usually with an added fee. Country-code TLDs follow their own rules, and some have no redemption period at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exit friction.&lt;/strong&gt; When a client leaves, untangling domain ownership, certificates, and license keys from an agency master account is slow and a common source of disputes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to Unbundle Renewal Costs Cleanly
&lt;/h2&gt;

&lt;p&gt;To restore margin and reduce liability, shift from &lt;strong&gt;absorptive bundling&lt;/strong&gt; to &lt;strong&gt;unbundled pass-through structures&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Establish Clear Contract Boundaries
&lt;/h3&gt;

&lt;p&gt;Separate &lt;strong&gt;agency labor and expertise&lt;/strong&gt; from &lt;strong&gt;third-party infrastructure and licensing&lt;/strong&gt; in your agreements.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Sample MSA clause framework&lt;/strong&gt; (have your own counsel review before use):&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Agency service retainers cover professional labor, management, monitoring, and advisory services only. All third-party software licenses, domain registrations, hosting infrastructure fees, and API utility usage remain the financial responsibility of the Client. Agency may pass through vendor cost adjustments with at least 60 days’ advance written notice, or as much notice as the vendor gave Agency, if shorter.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Because Verisign gives registrars six months’ notice of &lt;code&gt;.com&lt;/code&gt; increases, there is rarely a good reason to give clients less than 60 days.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Move Billing to Client-Owned Accounts Where Possible
&lt;/h3&gt;

&lt;p&gt;Wherever vendors support it, have the client own the account and the payment method, and give the agency delegated access.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Asset Type&lt;/th&gt;
&lt;th&gt;Legacy Bundled Approach&lt;/th&gt;
&lt;th&gt;Unbundled Standard&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Domain registration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agency buys on its own registrar account and charges the client a flat fee.&lt;/td&gt;
&lt;td&gt;Client registers on a client-owned registrar account; agency gets delegated or team access where the registrar supports it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hosting&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agency hosts on a master reseller account and absorbs plan upgrades.&lt;/td&gt;
&lt;td&gt;Site runs on a client-owned hosting account (for example WP Engine, Flywheel, AWS, or Vercel) with agency team access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Premium plugins and modules&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agency uses a master license and absorbs vendor price changes.&lt;/td&gt;
&lt;td&gt;Client holds individual licenses, or the agency resells licenses with automatic pass-through.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Usage-based SaaS (email, search, CRM)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Included in a generic “site maintenance” cap.&lt;/td&gt;
&lt;td&gt;Billed directly to the client based on actual usage.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3: Move to Pass-Through Plus a Management Fee
&lt;/h3&gt;

&lt;p&gt;For stacks the agency curates itself (a CDN, a web application firewall, and a backup suite, for example), use a pass-through model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total monthly invoice = Actual third-party costs + Fixed management fee
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pass-through billing:&lt;/strong&gt; Invoice the actual cost of the stack, with a defined handling fee if you want to cover the admin time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Management fee:&lt;/strong&gt; Charge a separate flat monthly fee (or hourly rate for out-of-scope work) for auditing, configuration, monitoring, and emergency response.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If a vendor raises its price by 15%, the client’s invoice reflects it and the agency’s labor margin is unaffected. Expect clients to scrutinize a rising invoice, so the vendor notices you forward become part of your credibility. Show them the source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Transition Protocol for Existing Client Portfolios
&lt;/h2&gt;

&lt;p&gt;Changing existing fixed-fee plans takes communication and a schedule.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit your portfolio.&lt;/strong&gt; For every active retainer, map the actual hard costs (domains, hosting, licenses, usage-based services) against the monthly fee collected. Flag accounts below the gross margin target you’ve set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;List renewal dates and price-change dates.&lt;/strong&gt; Record which assets renew when and where an announced vendor change lands (for example &lt;code&gt;.net&lt;/code&gt; on March 1, 2027). Where it makes sense, renew early to lock in current wholesale pricing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give notice 60 days before each renewal.&lt;/strong&gt; Send clients a clear explanation of the vendor adjustments, with the vendor’s own announcement attached.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offer migration help.&lt;/strong&gt; Provide a simple hand-off process to move domains and hosting accounts into client-owned accounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frame it as ownership and transparency.&lt;/strong&gt; For most clients, the pitch is that they hold direct ownership and control of their digital assets while you keep providing management, optimization, and oversight.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By unbundling third-party renewals from fixed-fee agreements, agencies stop absorbing vendor inflation, reduce their liability, and tie their revenue to what clients actually pay them for: professional expertise.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-net-zero-retainer-fallacy-why-bundling-renewal-costs-into-fixed-fee" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-net-zero-retainer-fallacy-why-bundling-renewal-costs-into-fixed-fee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
    </item>
    <item>
      <title>The “Broken Handshake” Liability: Why Agency Agreements Must Define Post-Termination Asset Custody</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Sat, 31 Oct 2026 02:05:31 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-broken-handshake-liability-why-agency-agreements-must-define-post-termination-asset-custody-2136</link>
      <guid>https://dev.to/instarenewal/the-broken-handshake-liability-why-agency-agreements-must-define-post-termination-asset-custody-2136</guid>
      <description>&lt;p&gt;When an agency retainer ends, the digital relationship often doesn’t. Long after the final invoice is paid, the agency may still be logged in, listed as an account owner or admin, or connected through live API keys and OAuth tokens to its former client’s systems. This article calls that leftover access &lt;strong&gt;orphaned administrative authority&lt;/strong&gt;, and uses &lt;strong&gt;“Broken Handshake”&lt;/strong&gt; as shorthand for the moment the commercial relationship ends but the technical one does not. Neither term is a legal standard.&lt;/p&gt;

&lt;p&gt;The assets involved include domain registrars, cloud infrastructure (AWS, Google Cloud), ad platforms (Meta, Google Ads, TikTok), analytics and tag management, and SaaS and martech integrations. When the agreement says nothing about who holds these assets after exit, small lapses can cause real damage. A missed renewal notice, an unrevoked integration or an ad account stuck in the wrong portfolio can lead to a site outage, a data exposure or a lawsuit.&lt;/p&gt;

&lt;p&gt;This article is general information, not legal advice. Outcomes depend on jurisdiction, the contract and the facts.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Anatomy of the “Broken Handshake”
&lt;/h2&gt;

&lt;p&gt;In fast-moving agency work, access is granted informally to hit deadlines. At exit, offboarding is often treated as an administrative chore rather than a risk-control workflow. The gap between “contract ended” and “access actually transferred” is where problems start.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common assets caught in custodial limbo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Domains and DNS:&lt;/strong&gt; Agency-held registrar accounts (GoDaddy, Namecheap and others), DNS providers such as Cloudflare, and registrant records that point to the agency or an individual employee.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advertising and marketing accounts:&lt;/strong&gt; Meta business portfolios (formerly Business Manager), Google Ads manager links, TikTok ad accounts and programmatic platforms where the agency is the owner rather than a partner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud and hosting:&lt;/strong&gt; AWS and Google Cloud accounts or organizations, WP Engine installs, and Vercel or Netlify team seats.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics and tagging:&lt;/strong&gt; Google Tag Manager containers, Segment workspaces, BigQuery datasets and Mixpanel projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS and integrations:&lt;/strong&gt; HubSpot, Salesforce Marketing Cloud, Zapier connections and OAuth tokens that link third-party apps to client data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Ownership vs. Access: What Platforms Actually Allow
&lt;/h2&gt;

&lt;p&gt;Many exit disputes come down to one question: was the asset created inside the client’s account, or the agency’s? Platform rules make the answer hard to change later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meta.&lt;/strong&gt; Meta distinguishes between giving someone access to an asset and owning it, and partner access never transfers ownership. Meta’s documentation states that an ad account can belong to only one business portfolio. An ad account that is created in, or claimed into, a portfolio may be permanently tied to it and can’t be moved to another. Meta also notes that accounts whose payment methods are managed by a third party can’t be moved. In practice, if an agency created the ad account inside its own portfolio, the client usually can only receive it as a shared asset. The usual workaround is a new ad account in the client’s portfolio, which costs the client its history inside the old account. Pixels and datasets follow the same one-owner model. Agencies that handle these cases report that ownership transfers go through Meta support and can take days, not minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Ads.&lt;/strong&gt; The model is friendlier to clients. Linking an existing account to an agency’s manager account does not by itself hand ownership to the manager. An administrator on the client account can remove a manager’s access, and Google’s documentation says client-account users can always unlink a manager that holds ownership. The practical caution is that resources defined at the manager level, such as shared audience lists or conversion tracking, may not travel with the client account. Check those before anyone unlinks during a dispute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Domains.&lt;/strong&gt; Since &lt;strong&gt;August 21, 2025&lt;/strong&gt;, ICANN’s Registration Data Policy has made the registrant contact the only required contact for most gTLDs. Administrative, technical and billing contacts are no longer required, and many registrars have deleted that data. For most domains, control now comes down to two things: who is named as registrant, and who holds the registrar account login. Timing also matters. Under the Transfer Policy in effect as of September 2026, a material change of registrant can trigger a 60-day inter-registrar transfer lock unless the registrar offers and the holder uses an opt-out. ICANN’s Board approved a set of Transfer Policy Review recommendations on June 7, 2026, but implementation was still pending at the time of writing. Agencies should therefore plan registrant changes well before the exit date and confirm current rules with the registrar.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Legal Exposure When the Contract Is Silent
&lt;/h2&gt;

&lt;p&gt;When a contract doesn’t allocate custody, courts fall back on general doctrines. The results vary by jurisdiction and are hard to predict.&lt;/p&gt;

&lt;h3&gt;
  
  
  Apparent authority mostly exposes the client
&lt;/h3&gt;

&lt;p&gt;Under the Restatement (Third) of Agency §3.11, ending an agent’s actual authority does not by itself end its apparent authority. Apparent authority lasts until it is no longer reasonable for a third party to believe the agent is still authorized. This mainly protects third parties who dealt with the agent and received no notice of the termination. The practical consequence is that a &lt;strong&gt;client&lt;/strong&gt; can remain bound by a former agency’s dealings with vendors who were never told the relationship ended. The agency’s exposure is different: acting beyond its actual authority after termination can make it liable to the client. Both sides therefore benefit from notifying vendors, and from the agency removing itself as the contact on the client’s accounts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Illustrative scenario (hypothetical, not a reported case):&lt;/em&gt; A registrar’s renewal notice goes to a former agency’s shared inbox months after the contract ended. Nobody acts on it, and the domain lapses. The client’s loss, and any dispute over who was responsible for the notice, would turn on the contract and the facts. A clear transfer clause removes that ambiguity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Courts treat digital assets as property
&lt;/h3&gt;

&lt;p&gt;Courts have increasingly applied ordinary property doctrines to digital assets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Kremen v. Cohen&lt;/em&gt;, 337 F.3d 1024 (9th Cir. 2003):&lt;/strong&gt; The Ninth Circuit held that a domain name is intangible property that can support a conversion claim under California law.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Salonclick LLC v. Superego Management LLC&lt;/em&gt;, 2017 WL 239379 (S.D.N.Y. Jan. 18, 2017):&lt;/strong&gt; A company alleged that its former marketing contractor kept control of its domains and social media accounts after the relationship ended. At the motion-to-dismiss stage, the court let conversion and replevin claims proceed. It also let a breach-of-fiduciary-duty claim proceed against the independent contractor, based on allegations that it had access to sensitive accounts and a corporate credit card. These were allegations and not final findings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;MasterMind Involvement Marketing, Inc. v. Art Institute of Atlanta, LLC&lt;/em&gt;, 389 F. Supp. 3d 1291 (N.D. Ga. 2019):&lt;/strong&gt; A social media agency sued to collect unpaid fees. The defendants counterclaimed and sought an injunction for the return of 16 social media accounts. The court granted the injunction, ordered the agency to hand over login information and control, and found a substantial likelihood of success on a conversion claim and irreparable harm to the clients’ business and reputation. The agency’s own fee claim did not stop the order.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;JLM Couture, Inc. v. Gutman&lt;/em&gt;, No. 21-2535 (2d Cir. Jan. 17, 2024):&lt;/strong&gt; This is a counterweight. In a dispute between a fashion company and its former designer, the Second Circuit vacated an order giving the company exclusive control of social media accounts. It said ownership analysis should treat accounts like other property and begin with who the original owner was. Courts do not hand accounts to whoever asks first, so documenting who created and owns each asset from day one matters.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Withholding access over unpaid fees is high-risk
&lt;/h3&gt;

&lt;p&gt;Some agencies hold accounts back to pressure a client to pay a disputed invoice. &lt;em&gt;MasterMind&lt;/em&gt; shows how poorly that can go. Absent an express contractual right, withholding client-owned accounts invites conversion and related claims, and courts can order the assets returned on an expedited basis while the fee dispute continues. A better course is to pursue the fee through the contract’s normal remedies and keep custody of the assets out of the dispute.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Operational Risk Analysis
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk vector&lt;/th&gt;
&lt;th&gt;Typical cause&lt;/th&gt;
&lt;th&gt;Commercial impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Administrative lockout&lt;/td&gt;
&lt;td&gt;Agency holds the only owner or super-admin role&lt;/td&gt;
&lt;td&gt;Client cannot add staff, change billing or update security settings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orphaned billing&lt;/td&gt;
&lt;td&gt;Agency or former-employee payment method remains on a client ad account or domain&lt;/td&gt;
&lt;td&gt;Unintended charges, failed payments that pause campaigns, disputed reimbursements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stale integrations&lt;/td&gt;
&lt;td&gt;OAuth tokens, API keys or service-account keys never revoked&lt;/td&gt;
&lt;td&gt;Continued data access by a party with no business need; a larger attack surface if the agency is breached&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unreachable renewals&lt;/td&gt;
&lt;td&gt;Vendor notices go to agency staff or shared inboxes&lt;/td&gt;
&lt;td&gt;Domain, SSL or license lapses nobody sees until the site breaks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data-protection exposure&lt;/td&gt;
&lt;td&gt;Client personal data left on agency servers, cloud storage or test environments&lt;/td&gt;
&lt;td&gt;Possible GDPR and, from 2027, DPDP compliance problems (see Section 5)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  5. Data Protection Obligations at Exit
&lt;/h2&gt;

&lt;p&gt;Asset custody and data custody overlap. Under &lt;strong&gt;GDPR Article 28(3)(g)&lt;/strong&gt;, a processor must, at the controller’s choice, delete or return all personal data after the end of the services and delete existing copies unless Union or Member State law requires storage. An agency processing client personal data typically falls under this rule. The agency’s exit checklist should therefore include a documented return-or-delete step and written confirmation.&lt;/p&gt;

&lt;p&gt;India’s Digital Personal Data Protection Act, 2023 and the DPDP Rules, 2025 were notified in November 2025 and are being phased in. Most substantive obligations, including security safeguards and erasure and retention rules, are scheduled to take effect around May 2027. In early 2026 MeitY proposed shortening some timelines for larger data fiduciaries, so check the current schedule. Agencies serving Indian clients should build deletion and return steps into their exit process now.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Contractual Solutions: Drafting the Asset Custody Clause
&lt;/h2&gt;

&lt;p&gt;Treat &lt;strong&gt;asset custody and transfer&lt;/strong&gt; as a core pillar of the agreement, alongside IP, payment and confidentiality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key terms to define
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ownership from day one.&lt;/strong&gt; Require that assets be created in the client’s own accounts (the client’s registrar account, business portfolio and cloud organization) with the agency as a partner or user. Because platforms such as Meta don’t allow ad accounts to be moved between portfolios, this is far easier to get right at kickoff than at exit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Definition of client assets.&lt;/strong&gt; List what counts (domains, ad accounts, tag containers, hosting, repositories, SaaS subscriptions) and separate it from agency-owned proprietary tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transfer duty and timeline.&lt;/strong&gt; Define who receives ownership, administrative and billing roles, and within what window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sequencing.&lt;/strong&gt; The agency removes its own access only after the client confirms it holds full control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No withholding.&lt;/strong&gt; Fee disputes are resolved through the contract’s payment remedies and never by suspending or retaining client assets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revocation of integrations.&lt;/strong&gt; Require revocation of API keys, OAuth tokens, webhooks and SSH keys, and removal of agency payment methods.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data return or deletion.&lt;/strong&gt; Require return or deletion of client data on the client’s instruction, with written confirmation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Defined liability cutoff.&lt;/strong&gt; Limit the agency’s responsibility for events after a completed transfer, with carve-outs for gross negligence and willful misconduct.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  7. Model Contractual Clauses
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Illustrative language only. Have counsel adapt it to your jurisdiction and governing law. Some provisions, especially deemed-acceptance and liability-release terms, may not be enforceable everywhere.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  Post-Termination Asset Custody
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Client Digital Assets.&lt;/strong&gt; “Client Digital Assets” means all domain names, advertising accounts (including Meta, Google Ads and TikTok), analytics properties, tag management containers, hosting and cloud accounts, source code repositories and third-party SaaS subscriptions registered, created or managed for Client during the Term.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Ownership at Creation.&lt;/strong&gt; Agency shall create or register Client Digital Assets in Client’s name or within accounts owned by Client, and shall not register them in Agency’s own name or portfolios without Client’s written consent. Where a platform does not permit transfer of an asset created in an Agency-owned account, Agency shall disclose this in writing before creation and, on termination, provide continued access and a full data export.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Transfer Duty.&lt;/strong&gt; Within ten (10) business days after the effective date of termination (the “Transition Period”), Agency shall:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(a) reassign all owner, administrator, registrant and billing roles on Client Digital Assets to Client’s designated representative;&lt;/li&gt;
&lt;li&gt;(b) remove Agency’s own payment methods from Client Digital Assets;&lt;/li&gt;
&lt;li&gt;(c) revoke all API tokens, webhooks, service accounts and third-party integrations connecting Agency systems to Client Digital Assets;&lt;/li&gt;
&lt;li&gt;(d) remove Agency user accounts and external roles only after Client confirms in writing that it holds full administrative control of the relevant asset; and&lt;/li&gt;
&lt;li&gt;(e) provide written confirmation of the foregoing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. No Withholding.&lt;/strong&gt; Agency shall not suspend, withhold, restrict or condition the transfer of any Client Digital Asset because of a dispute over fees or any other claim. Agency’s remedies for non-payment are limited to those otherwise available under this Agreement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Data Return or Deletion.&lt;/strong&gt; At Client’s election, Agency shall return or securely delete all Client data, including personal data, and certify completion in writing, except where applicable law requires retention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Client Cooperation and Acknowledgment.&lt;/strong&gt; Client shall designate a recipient within three (3) business days after notice of termination and shall sign an Acknowledgment of Transfer within three (3) business days after receiving each asset. If Client fails to designate a recipient or accept a transfer after two written notices, Agency’s transfer obligation for the affected asset is satisfied on documented written tender.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Cessation of Custody; Limitation.&lt;/strong&gt; On completion of the transfer (or the end of the Transition Period, if Agency has met its obligations under Sections 3 to 6), Agency’s custodial and administrative duties regarding the transferred Client Digital Assets end. Agency is not liable for downtime, expiration, suspension, loss or security incidents affecting those assets after that date, except to the extent caused by Agency’s gross negligence, willful misconduct or breach of this clause.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  8. The Agency Offboarding Framework: Operationalizing the Contract
&lt;/h2&gt;

&lt;p&gt;A clause only works if someone executes it. This four-phase checklist uses the same timeline as the model clause.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Trigger&lt;/th&gt;
&lt;th&gt;Key actions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1. Audit and inventory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Termination notice&lt;/td&gt;
&lt;td&gt;Map every account, SSO login, OAuth grant, API key and billing method. Classify each asset as client-owned or agency-owned, and record where the platform won’t allow a transfer (for example, a Meta ad account sitting in the agency’s portfolio). Confirm who receives vendor notices.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2. Ownership transfer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;First days of the Transition Period&lt;/td&gt;
&lt;td&gt;Update registrant and registrar-account ownership, allowing for the registrant-change lock described in Section 2. Invite client admins to Meta, Google, cloud and tag platforms. Get the client’s written confirmation of full control.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3. Access revocation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Client confirms control&lt;/td&gt;
&lt;td&gt;Remove agency seats and secondary emails. Revoke OAuth tokens, API keys, webhooks and SSH keys. Remove agency payment methods. Notify third-party vendors of the contact change.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4. Sign-off and data disposition&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;End of Transition Period&lt;/td&gt;
&lt;td&gt;Sign an Acknowledgment of Transfer. Return or delete client data per the client’s election and applicable law. Issue written confirmation.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  9. Summary Comparison: Traditional vs. Asset-Custody Contracts
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Contract feature&lt;/th&gt;
&lt;th&gt;Traditional agency contract&lt;/th&gt;
&lt;th&gt;Asset-custody contract&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Post-termination scope&lt;/td&gt;
&lt;td&gt;Covers deliverables and final billing&lt;/td&gt;
&lt;td&gt;Defines who owns each asset and when roles transfer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Third-party accounts&lt;/td&gt;
&lt;td&gt;Silent; agency staff remain on domain, hosting and ad accounts&lt;/td&gt;
&lt;td&gt;Requires transfer of owner and admin roles within a set window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Asset creation&lt;/td&gt;
&lt;td&gt;Agency may create assets in its own accounts&lt;/td&gt;
&lt;td&gt;Assets are created in client-owned accounts from day one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integrations&lt;/td&gt;
&lt;td&gt;Tokens and webhooks stay active until someone notices&lt;/td&gt;
&lt;td&gt;Requires systematic revocation and written confirmation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fee disputes&lt;/td&gt;
&lt;td&gt;Withholding access is possible and risky&lt;/td&gt;
&lt;td&gt;Prohibits withholding; fee claims go through normal remedies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Liability&lt;/td&gt;
&lt;td&gt;Open-ended claims of negligence, conversion or breach of fiduciary duty&lt;/td&gt;
&lt;td&gt;Clear cutoff after a completed transfer, with carve-outs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Defining post-termination custody replaces an informal exit with a predictable process. Spelling out ownership at creation, transfer timelines, revocation duties and data return or deletion reduces the risk of lockouts, lapsed domains, data exposure and disputes for both agencies and clients.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-broken-handshake-liability-why-agency-agreements-must-define-post" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-broken-handshake-liability-why-agency-agreements-must-define-post&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
    </item>
    <item>
      <title>The “Broken Handover” Audit: What to Do When a Client Fires Another Agency and Leaves You With Unmanaged DNS</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Fri, 30 Oct 2026 02:05:58 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-broken-handover-audit-what-to-do-when-a-client-fires-another-agency-and-leaves-you-with-4ihi</link>
      <guid>https://dev.to/instarenewal/the-broken-handover-audit-what-to-do-when-a-client-fires-another-agency-and-leaves-you-with-4ihi</guid>
      <description>&lt;p&gt;Winning a new client account often feels like a victory, until the onboarding kickoff exposes a looming infrastructure problem.&lt;/p&gt;

&lt;p&gt;The client has recently parted ways with their former agency, sometimes on bad terms. The previous agency may have deleted the management portal, kept the domain registrar login, or left a web of custom DNS records scattered across third-party cloud accounts. Often there was no malice, only years of neglect. The client’s marketing leads don’t know where the domain is registered, who holds administrative access, or why transactional emails are landing in spam.&lt;/p&gt;

&lt;p&gt;We’ll call this scenario a &lt;strong&gt;Broken Handover&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Inheriting unmanaged DNS is high-stakes for any agency or managed service provider (MSP). A single mistake during onboarding can mean website downtime, broken SaaS integrations, lost email, or lasting reputational damage.&lt;/p&gt;

&lt;p&gt;This triage guide walks through an audit framework for securing, reconstructing and taking control of an unmanaged DNS setup while keeping the risk of disruption as low as possible. Where a step depends on a standard, a deadline or a vendor policy, the current rule is noted so you can verify it against your own environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before You Touch Anything
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Get written authority.&lt;/strong&gt; Registrars, DNS hosts and cloud vendors will want proof that you act for the legal domain owner. Get a signed letter of authority or an email from someone with signing power at the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snapshot the current state.&lt;/strong&gt; Save timestamped output of &lt;code&gt;dig&lt;/code&gt; queries for the apex and &lt;code&gt;www&lt;/code&gt;, plus every MX, TXT and NS record. Screenshot whatever dashboards you can reach. This is your rollback reference and your evidence if anything is later disputed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Freeze change requests.&lt;/strong&gt; Ask the client to pause new site launches, email platform changes and marketing-tool onboarding until the audit is done.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Phase 1: Triage &amp;amp; Emergency Stabilization (Hours 0–4)
&lt;/h2&gt;

&lt;p&gt;Your priority is stabilization. Before changing any record, establish who controls what, and make sure a former vendor can’t sabotage the account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│               DNS STABILIZATION TIMELINE                │
└─────────────────────────────────────────────────────────┘

  Hours 0–4      Establish Authority &amp;amp; Lock Registrars
  ┌──────────┐   • Get written client authority
  │ PHASE 1  │   • Identify registrar &amp;amp; authoritative NS
  └────┬─────┘   • Secure registrar login, MFA, locks
       │
  Hours 4–12     Reconstruct the Zone
  ┌────▼─────┐   • Build record inventory from multiple sources
  │ PHASE 2  │   • Audit mail records (SPF, DKIM, DMARC)
  └────┬─────┘   • Lower TTLs to 300s (if old DNS host reachable)
       │
  Hours 12–24    Eliminate Takeover Risks
  ┌────▼─────┐   • Find dangling CNAMEs, stale IPs, lame NS
  │ PHASE 3  │   • Reclaim or delete orphaned records
  └────┬─────┘   • Keep dead records out of the new zone
       │
  Day 2+         Stage, Cut Over, Verify
  ┌────▼─────┐   • Stage new zone &amp;amp; CAA records
  │ PHASE 4  │   • Handle DNSSEC DS records first
  └──────────┘   • Switch NS; keep old zone live 48–72h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Identify Ownership &amp;amp; Location
&lt;/h3&gt;

&lt;p&gt;Don’t rely on the client’s memory. Establish ground truth from the public DNS and registration data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Registration data (registrar, dates, status codes, nameservers)&lt;/span&gt;
whois example.com

&lt;span class="c"&gt;# Delegation as published by the parent zone&lt;/span&gt;
dig example.com NS +short
dig +trace example.com NS

&lt;span class="c"&gt;# Does each listed nameserver actually answer for the zone?&lt;/span&gt;
dig @ns1.provider.com example.com SOA +norec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use ICANN’s lookup tool. On 28 January 2025, gTLD registries and registrars stopped being required to offer WHOIS, except for .com, .name and .post, and RDAP is now the required protocol, according to &lt;a href="https://www.icann.org/en/contracted-parties/registry-operators/registration-data-access-protocol/rdap-faqs-31-08-2018-en" rel="noopener noreferrer"&gt;ICANN’s RDAP FAQ&lt;/a&gt;. WHOIS may therefore be unavailable for some TLDs, and ccTLDs follow their own rules. Registrant details are often redacted. The registrar, creation date, nameservers and EPP status codes are generally still visible.&lt;/p&gt;

&lt;p&gt;Two different things need answering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The domain registrar:&lt;/strong&gt; where the name is registered (for example Namecheap, GoDaddy, Cloudflare Registrar or Amazon Route 53 registered domains).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The authoritative nameservers:&lt;/strong&gt; where the live DNS zone is actually hosted (for example Cloudflare, Route 53, DigitalOcean, or a server owned by the former agency).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are often different companies. If the client controls the registrar but the former agency controls the DNS host, you can still re-delegate the domain to a new provider without the agency’s cooperation. You just need a complete, reconstructed zone ready first.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Secure Registrar Access &amp;amp; Apply Locks
&lt;/h3&gt;

&lt;p&gt;If the client still holds the registrar credentials, log in and lock things down immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Strengthen authentication.&lt;/strong&gt; Enable the strongest MFA the registrar supports, preferably FIDO2/WebAuthn security keys or passkeys where offered, otherwise an authenticator app (TOTP). TOTP is not hardware-based. Remove SMS-based recovery wherever possible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean up contacts.&lt;/strong&gt; Remove recovery and notification emails that belong to the former agency, and replace them with a client-owned role mailbox. Contact changes can trigger side effects (see the next section).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable registrar locks.&lt;/strong&gt; &lt;code&gt;clientTransferProhibited&lt;/code&gt; blocks transfers to another registrar, and &lt;code&gt;clientUpdateProhibited&lt;/code&gt; and &lt;code&gt;clientDeleteProhibited&lt;/code&gt; add further protection. These are registrar-level locks that anyone with account access can toggle, so they’re only as strong as the account’s security. For high-value domains, ask whether the registrar offers registry lock, which requires out-of-band verification for changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify new contact emails.&lt;/strong&gt; After you change registrant contact data, the registrar typically sends a verification email. If it isn’t confirmed within the deadline (commonly 15 days), the domain can be suspended. Make sure someone monitors that inbox.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mind the change-of-registrant lock.&lt;/strong&gt; Under the current ICANN Transfer Policy, a material change to registrant information can trigger a confirmation step and a 60-day inter-registrar transfer lock. Some registrars offer an opt-out before you make the change, but they aren’t required to. If you plan to move the domain to a different registrar, ask about the opt-out first. ICANN’s Board approved 47 Transfer Policy Review recommendations on 7 June 2026, but implementation was still pending as of September 2026. Check the policy in force when you act.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. What to Do If You’re Locked Out Entirely
&lt;/h3&gt;

&lt;p&gt;If the former agency registered the domain in its own name or won’t hand over credentials, escalate in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Document your claim.&lt;/strong&gt; Gather invoices and card statements showing the client paid for registration and renewals, the signed contract and any IP-ownership or asset-transfer clauses, business formation documents, and any trademark registrations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make a written demand.&lt;/strong&gt; Send a formal request to the former agency citing the contract. Many handovers are resolved at this stage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go to the registrar.&lt;/strong&gt; Ask the registrar about its account-recovery or ownership-verification process, and submit your documentation. Processes and evidentiary requirements vary, and some registrars will only act on a court order. ICANN itself &lt;a href="https://www.icann.org/en/blogs/details/the-issue-of-youtubeislamcom-and-domain-disputes-4-8-2009-en" rel="noopener noreferrer"&gt;does not resolve individual domain disputes&lt;/a&gt;, and ultimately courts decide ownership rights.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consider a formal proceeding, with counsel.&lt;/strong&gt; The UDRP lets a complainant seek transfer of a domain, but it requires showing that the domain is confusingly similar to a trademark the complainant has rights in, that the registrant lacks legitimate interests, and that the domain was registered and used in bad faith. ICANN’s own ombudsman describes this as a narrow category to approach with caution. A dispute that is really about a contract may fit poorly. In the U.S., the Anticybersquatting Consumer Protection Act offers a court route. Country-code registries run their own schemes. For example, Nominet’s Dispute Resolution Service for .uk domains has been used to recover domains from web developers who registered them on a client’s behalf.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prepare the replacement setup in parallel.&lt;/strong&gt; Build and test the new zone and email configuration now, so you can cut over quickly the moment control is restored.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Phase 2: Complete DNS Zone Reconstruction (Hours 4–12)
&lt;/h2&gt;

&lt;p&gt;If the former agency won’t provide a clean zone export (a BIND-format file), reconstruct the zone from several sources. Start by asking politely for an export anyway. If the DNS host still lets you in, export from there.&lt;/p&gt;

&lt;p&gt;Be skeptical of automatic importers. DNS providers’ onboarding scans query common hostnames and can miss records, including DKIM selectors and anything created by a wildcard. Cloudflare’s own guidance is to review scan results manually and add anything missing before changing nameservers. A BIND zone-file import followed by a record-by-record comparison is more reliable.&lt;/p&gt;

&lt;p&gt;You can try a zone transfer against each authoritative server, though well-configured servers refuse it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dig AXFR example.com @ns1.provider.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Zone Reconstruction Matrix
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Record Type&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;How to Recover Unmanaged Entries&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;A / AAAA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Maps names to IPv4/IPv6 addresses&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dig&lt;/code&gt; only answers for names you already know. Combine passive DNS history (SecurityTrails, VirusTotal), certificate transparency logs (crt.sh), the site’s sitemap and internal links, and the hosting control panel.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CNAME&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Aliases one name to another, often pointing at SaaS or cloud apps&lt;/td&gt;
&lt;td&gt;Enumerate subdomains with &lt;code&gt;subfinder&lt;/code&gt; or &lt;code&gt;amass&lt;/code&gt;, search crt.sh, and check each SaaS vendor’s custom-domain settings. Note that wildcard certificates can hide subdomain names in CT logs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Routes inbound email&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dig example.com MX +short&lt;/code&gt;. Preserve priority values exactly. Compare against the mail provider’s admin console.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TXT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Email authentication, domain-verification tokens, ACME validation&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dig example.com TXT +short&lt;/code&gt;, then compare against each vendor’s dashboard. Verification tokens for Google Workspace, Microsoft 365, Atlassian and others should be kept unless the service is retired.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SRV&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Service locators for SIP, Teams/Skype federation, XMPP and others&lt;/td&gt;
&lt;td&gt;Query known service labels, such as &lt;code&gt;_sip._tls&lt;/code&gt; and &lt;code&gt;_sipfederationtls._tcp&lt;/code&gt; for Microsoft 365 voice/Teams federation, or &lt;code&gt;_xmpp-server._tcp&lt;/code&gt;. In Microsoft 365, Autodiscover is normally a CNAME (&lt;code&gt;autodiscover.outlook.com&lt;/code&gt;), whereas &lt;code&gt;_autodiscover._tcp&lt;/code&gt; SRV records appear in other Exchange setups.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CAA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Restricts which certificate authorities may issue certificates&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dig example.com CAA +short&lt;/code&gt;. Record anything present before you change it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Authoritative nameservers, and delegated subdomains&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;dig example.com NS&lt;/code&gt;. Check for delegated child zones (for example &lt;code&gt;app.example.com&lt;/code&gt; delegated to another provider) and recreate those delegation records.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Also look for &lt;code&gt;_acme-challenge&lt;/code&gt; CNAMEs or TXT records. Certificate automation may depend on them, and with certificate lifetimes shrinking (see Phase 4) a missing validation record causes outages on a predictable schedule.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deep-Dive: Auditing Email Authentication (SPF, DKIM, DMARC)
&lt;/h3&gt;

&lt;p&gt;Email deliverability is often the first casualty of a bad handover. Mailbox providers have also raised the bar. Google and Yahoo began enforcing bulk-sender rules in February 2024, and Microsoft followed for Outlook.com consumer accounts from 5 May 2025. The rules cover senders of roughly 5,000 or more messages per day and require SPF, DKIM and at least a &lt;code&gt;p=none&lt;/code&gt; DMARC policy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Current SPF record&lt;/span&gt;
dig example.com TXT +short | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"v=spf1"&lt;/span&gt;

&lt;span class="c"&gt;# DKIM selector records (selectors vary by sending platform)&lt;/span&gt;
dig google._domainkey.example.com TXT +short
dig selector1._domainkey.example.com CNAME +short
dig k1._domainkey.example.com CNAME +short

&lt;span class="c"&gt;# DMARC policy&lt;/span&gt;
dig _dmarc.example.com TXT +short
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Audit SPF.&lt;/strong&gt; A domain may publish only one SPF record. Under RFC 7208, evaluation is limited to 10 DNS-querying terms (&lt;code&gt;include&lt;/code&gt;, &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;mx&lt;/code&gt;, &lt;code&gt;ptr&lt;/code&gt;, &lt;code&gt;exists&lt;/code&gt; and &lt;code&gt;redirect&lt;/code&gt;) and two “void” lookups. Exceeding either causes a permanent error, so legitimate mail can fail SPF. Remove includes for services the client no longer uses, such as old Mailchimp or ActiveCampaign setups, and stale IP ranges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Locate DKIM selectors.&lt;/strong&gt; DNS cannot list selectors, so you can’t discover them by querying the zone. Find them in the &lt;code&gt;s=&lt;/code&gt; tag of a &lt;code&gt;DKIM-Signature&lt;/code&gt; header on real outgoing mail, or in each sending platform’s authentication settings. Common examples are &lt;code&gt;google&lt;/code&gt; for Google Workspace, &lt;code&gt;selector1&lt;/code&gt; and &lt;code&gt;selector2&lt;/code&gt; for Microsoft 365, and &lt;code&gt;k1&lt;/code&gt; for Mailchimp. Mailbox-provider guidance sets 1024 bits as the minimum DKIM key length and recommends 2048 bits. Keys are generated by the sending service and you publish the record it gives you. A 2048-bit key exceeds the 255-character limit of a single DNS string, so it must be split into multiple quoted strings, which most DNS providers do automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set up DMARC monitoring.&lt;/strong&gt; If the previous agency left DMARC at &lt;code&gt;p=none&lt;/code&gt;, or none exists, publish a record that collects aggregate reports and review them before tightening. Move to &lt;code&gt;p=quarantine&lt;/code&gt;, then &lt;code&gt;p=reject&lt;/code&gt;, once all legitimate senders pass.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Example baseline DMARC record for the audit phase
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@youragency.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DMARC’s specification changed in May 2026, when the IETF published RFC 9989, RFC 9990 and RFC 9991, replacing the original RFC 7489. The record version tag stays &lt;code&gt;v=DMARC1&lt;/code&gt;, so existing records keep working. The &lt;code&gt;pct&lt;/code&gt;, &lt;code&gt;rf&lt;/code&gt; and &lt;code&gt;ri&lt;/code&gt; tags were removed and a &lt;code&gt;t&lt;/code&gt; testing flag was added, which is why the example above omits &lt;code&gt;pct&lt;/code&gt;. Failure (&lt;code&gt;ruf&lt;/code&gt;) reports are optional, are not sent by many receivers, and can include message content, so they aren’t a reliable audit tool. If your reporting address is on a different domain than the one being protected, the reporting domain may need to publish an authorization record. Most DMARC reporting services handle this for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 3: Securing “Dangling” Records &amp;amp; Subdomain Takeovers (Hours 12–24)
&lt;/h2&gt;

&lt;p&gt;A critical risk in an unmanaged handover is the &lt;strong&gt;dangling CNAME&lt;/strong&gt;. The previous agency may have cancelled cloud services (AWS S3, GitHub Pages, Heroku, Azure, Shopify and others) without deleting the DNS records pointing to them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│              SUBDOMAIN TAKEOVER MECHANICS               │
└─────────────────────────────────────────────────────────┘

 1. DNS Record Active         2. Cloud Service Cancelled
┌─────────────────────┐      ┌───────────────────────────┐
│ promo.example.com   │─────►│ example.s3.amazonaws.com  │
│ (CNAME Record)      │      │ (Deleted by Old Agency)   │
└─────────────────────┘      └─────────────┬─────────────┘
                                           │
 3. Attacker Claims Endpoint               │
┌──────────────────────────────────────────┴─────────────┐
│ Attacker creates a resource with the same name         │
│ Result: Attacker serves content from                   │
│ promo.example.com                                      │
└────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not theoretical. Infoblox’s research into a threat actor it tracks as &lt;a href="https://www.infoblox.com/threat-intel/threat-actors/hazy-hawk/" rel="noopener noreferrer"&gt;Hazy Hawk&lt;/a&gt; describes hijacked subdomains of organizations including the US CDC, Deloitte and UNICEF. The actor claimed abandoned cloud resources (such as S3 buckets and Azure endpoints) behind dangling CNAMEs and used them to distribute scams and malicious content. Infoblox’s May 2025 report noted that finding vulnerable records takes effort, since every cloud provider handles dropped resources differently and some, such as Azure, have built-in protections. Its recommendation is to remove DNS records whenever a cloud resource is shut down. An agency inheriting a client’s DNS should treat every dangling record as a defect, whether or not the provider is currently exploitable.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Audit for Dangling Records
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build the CNAME list.&lt;/strong&gt; Pull every CNAME from your reconstructed inventory, including passive DNS and certificate-transparency results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test where each one points.&lt;/strong&gt; A non-resolving target (NXDOMAIN) is a strong warning sign:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; host&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
     &lt;/span&gt;&lt;span class="nv"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dig +short CNAME &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
     &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$target&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="k"&gt;continue
     &lt;/span&gt;dig +short &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$target&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"NO ANSWER: &lt;/span&gt;&lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="s2"&gt; -&amp;gt; &lt;/span&gt;&lt;span class="nv"&gt;$target&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="k"&gt;done&lt;/span&gt; &amp;lt; subdomains.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check the HTTP response.&lt;/strong&gt; Where the target still resolves, look for “unclaimed” fingerprints. The community-maintained &lt;a href="https://github.com/edoverflow/can-i-take-over-xyz" rel="noopener noreferrer"&gt;can-i-take-over-xyz&lt;/a&gt; list tracks these. For example, an S3 target returning &lt;code&gt;NoSuchBucket&lt;/code&gt; (message: “The specified bucket does not exist”) is listed as vulnerable. GitHub Pages (“There isn’t a GitHub Pages site here”) and Heroku (“No such app”) are listed as edge cases, so verify before assuming either way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the delegation itself.&lt;/strong&gt; If a domain’s NS records point to a DNS provider where the zone no longer exists, whoever creates the zone there may be able to answer for your domain. This is called a lame delegation, and Infoblox ties it to what it calls Sitting Ducks attacks. Query each nameserver for the zone’s SOA. A &lt;code&gt;REFUSED&lt;/code&gt; or &lt;code&gt;SERVFAIL&lt;/code&gt; response, or an answer without the &lt;code&gt;aa&lt;/code&gt; flag, means that server isn’t properly serving the zone.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Immediate Remediation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Delete any CNAME pointing to an unallocated third-party resource. Confirm in logs or with the client that nothing legitimate depends on it.&lt;/li&gt;
&lt;li&gt;If the service is still needed, re-create the backend resource first, then point the record to it.&lt;/li&gt;
&lt;li&gt;Remove stale A/AAAA records that point to decommissioned IP addresses, since reassigned IPs can serve someone else’s content.&lt;/li&gt;
&lt;li&gt;Don’t import dead records into the new zone.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Phase 4: Re-Hosting &amp;amp; Cutover (Day 2 Onward)
&lt;/h2&gt;

&lt;p&gt;Once the inventory is verified, move authoritative DNS to a provider your agency can manage, with proper access controls and an audit trail. Treat the provider’s SLA as a procurement factor. Route 53 advertises a 100% availability SLA, and Cloudflare provides an SLA on its Business and Enterprise plans but not on Free or Pro. An SLA is a service-credit commitment, not a guarantee that outages won’t happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Lower Time-To-Live (TTL) Values
&lt;/h3&gt;

&lt;p&gt;If you can still reach the old DNS provider, reduce TTLs on key records to &lt;strong&gt;300 seconds&lt;/strong&gt; at least one full old-TTL period before cutover. A common recommendation is 24–48 hours ahead. Lower TTLs mean record changes take effect faster.&lt;/p&gt;

&lt;p&gt;Lowering your record TTLs does not speed up the nameserver switch itself. The delegation is cached according to the parent zone’s TTL, which for .com and .net is 172800 seconds (48 hours). Some large resolvers cap NS caching at lower values, but plan for the full window. If the former agency controls the DNS host and you can’t edit TTLs, you can still re-delegate, so plan for the slower switch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Stage the New Zone
&lt;/h3&gt;

&lt;p&gt;At your new provider (for example Cloudflare, which assigns each zone its own pair of nameservers):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create the zone and import records from your reconstructed BIND file, or enter them manually.&lt;/li&gt;
&lt;li&gt;Decide proxy/CDN settings deliberately. Proxied records return the provider’s addresses, so differences in comparisons are expected. Leave mail-related hosts DNS-only.&lt;/li&gt;
&lt;li&gt;Compare old and new answers for every name in your inventory, not just the apex:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Compare record types between old and new authoritative servers&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;t &lt;span class="k"&gt;in &lt;/span&gt;A AAAA CNAME MX TXT SRV CAA&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"== &lt;/span&gt;&lt;span class="nv"&gt;$t&lt;/span&gt;&lt;span class="s2"&gt; =="&lt;/span&gt;
  diff &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;dig @ns1.oldagency.com example.com &lt;span class="nv"&gt;$t&lt;/span&gt; +short | &lt;span class="nb"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;dig @&amp;lt;assigned-ns&amp;gt;.ns.cloudflare.com example.com &lt;span class="nv"&gt;$t&lt;/span&gt; +short | &lt;span class="nb"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Prepare CAA Records and Handle DNSSEC
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;CAA (Certification Authority Authorization).&lt;/strong&gt; CAA records tell certificate authorities which of them may issue certificates for the domain. They are checked by CAs at issuance and don’t stop anyone who still has control of your DNS from editing them, so publish them after you’ve secured DNS control. Inventory every service that issues certificates for the client (hosting, CDN, SaaS custom domains) before restricting issuance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issue "digicert.com"
example.com. IN CAA 0 iodef "mailto:security@clientdomain.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;DNSSEC.&lt;/strong&gt; If the domain currently has a DS record at the registry, changing nameservers without handling it can make validating resolvers return SERVFAIL for the domain. The safe sequence is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove the DS record at the registrar.&lt;/li&gt;
&lt;li&gt;Wait at least the DS TTL. Many guides recommend 24–48 hours.&lt;/li&gt;
&lt;li&gt;Change the nameservers.&lt;/li&gt;
&lt;li&gt;Once the new zone is serving correctly, enable DNSSEC at the new provider and publish its new DS record at the registrar.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This matters more than it used to. Since 15 March 2026, certificate authorities must validate DNSSEC when it is present for CAA and domain-control lookups (&lt;a href="https://cabforum.org/2025/06/18/ballot-sc-085v2-require-validation-of-dnssec-when-present-for-caa-and-dcv-lookups" rel="noopener noreferrer"&gt;CA/Browser Forum Ballot SC-085v2&lt;/a&gt;). A broken chain of trust can therefore block certificate issuance and renewal, not just resolution.&lt;/p&gt;

&lt;p&gt;Certificate lifetimes are also shrinking. Under CA/Browser Forum Ballot SC-081v3, the maximum validity for publicly trusted TLS certificates fell to 200 days on 15 March 2026, drops to 100 days on 15 March 2027, and reaches 47 days on 15 March 2029. Domain-validation reuse shrinks on the same schedule. Any certificate renewed by hand is a future outage, so move to automated renewal as part of the handover.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Cut Over Nameservers at the Registrar
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Log in to the registrar portal and open the nameserver settings.&lt;/li&gt;
&lt;li&gt;Replace all old nameservers with your new provider’s assigned set. Don’t mix old and new.&lt;/li&gt;
&lt;li&gt;Query the TLD’s servers and public resolvers to confirm the new delegation is visible.&lt;/li&gt;
&lt;li&gt;Test web, email (send and receive, then check SPF/DKIM/DMARC results in message headers), and certificate renewal.&lt;/li&gt;
&lt;li&gt;Keep the old zone live and unchanged for &lt;strong&gt;at least 48–72 hours&lt;/strong&gt; so resolvers still holding the old delegation get consistent answers. Then decommission it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Phase 5: Client Communication &amp;amp; the “Handover Report”
&lt;/h2&gt;

&lt;p&gt;Non-technical stakeholders often don’t see why an infrastructure audit takes time or costs money. A structured &lt;strong&gt;DNS Health &amp;amp; Audit Report&lt;/strong&gt; turns the triage into a clear business outcome.&lt;/p&gt;

&lt;h3&gt;
  
  
  Executive Summary Template
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Client:&lt;/strong&gt; [Client Name]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Date:&lt;/strong&gt; [Date]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prepared By:&lt;/strong&gt; [Your Agency Name]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audit Status:&lt;/strong&gt; [e.g., DNS control re-established and migrated]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Critical Risks Identified &amp;amp; Resolved&lt;/strong&gt; &lt;em&gt;(edit to match your findings)&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security Risk:&lt;/strong&gt; [e.g., CNAME records pointed to abandoned cloud resources, exposing the brand to subdomain hijacking.]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deliverability Risk:&lt;/strong&gt; [e.g., SPF exceeded the 10-lookup limit; DKIM keys were missing or 1024-bit; no DMARC record was published.]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access Risk:&lt;/strong&gt; [e.g., Registrar administrative rights were tied to former agency staff accounts.]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Actions Taken&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reconstructed the zone configuration, comprising [X] records.&lt;/li&gt;
&lt;li&gt;Migrated authoritative DNS to [provider], which offers [SLA terms, if any].&lt;/li&gt;
&lt;li&gt;Enabled [MFA method] and registrar locks on the domain account.&lt;/li&gt;
&lt;li&gt;Published CAA records and aligned SPF/DKIM/DMARC email authentication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Outstanding Items &amp;amp; Recommendations&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[e.g., Move DMARC from monitoring to enforcement after reviewing 30 days of reports.]&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Master Checklist: Unmanaged DNS Rescue Audit
&lt;/h2&gt;

&lt;p&gt;Use this checklist internally whenever you onboard a client with an abandoned or unmanaged DNS setup.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Access &amp;amp; Authority&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Obtain written authority from the client&lt;/li&gt;
&lt;li&gt;Identify the registrar and authoritative nameservers (RDAP/WHOIS, &lt;code&gt;dig&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Confirm each listed nameserver answers authoritatively for the zone&lt;/li&gt;
&lt;li&gt;Reset administrative and recovery contacts to client-owned addresses&lt;/li&gt;
&lt;li&gt;Enable the strongest available MFA; remove SMS recovery&lt;/li&gt;
&lt;li&gt;Enable registrar locks (&lt;code&gt;clientTransferProhibited&lt;/code&gt; and related)&lt;/li&gt;
&lt;li&gt;Confirm registrant-email verification is completed&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zone File Reconstruction&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Request a zone export; attempt AXFR; import any BIND file&lt;/li&gt;
&lt;li&gt;Query active A, AAAA, CNAME, MX, TXT, SRV and CAA records&lt;/li&gt;
&lt;li&gt;Search certificate transparency logs (crt.sh) for hidden subdomains&lt;/li&gt;
&lt;li&gt;Pull historical records from passive DNS databases&lt;/li&gt;
&lt;li&gt;Check for delegated child zones and ACME validation records&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email &amp;amp; Deliverability Hardening&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;One SPF record, within the 10-lookup and 2-void-lookup limits&lt;/li&gt;
&lt;li&gt;Locate DKIM selectors from message headers and sending platforms; use 2048-bit keys&lt;/li&gt;
&lt;li&gt;Publish DMARC with aggregate (&lt;code&gt;rua&lt;/code&gt;) reporting; plan the move to enforcement&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vulnerability Remediation&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Scan for dangling CNAMEs pointing to unclaimed cloud hosts&lt;/li&gt;
&lt;li&gt;Check for lame delegations&lt;/li&gt;
&lt;li&gt;Remove stale A/AAAA records pointing to decommissioned IPs&lt;/li&gt;
&lt;li&gt;Leave dead records out of the new zone&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Lower TTLs on the old zone to 300 seconds 24–48 hours ahead (if accessible)&lt;/li&gt;
&lt;li&gt;Stage the new zone and compare every name against the old servers&lt;/li&gt;
&lt;li&gt;Remove the DS record, wait out its TTL, then change nameservers&lt;/li&gt;
&lt;li&gt;Verify web, email and certificate renewal after cutover&lt;/li&gt;
&lt;li&gt;Re-enable DNSSEC with the new provider’s DS record&lt;/li&gt;
&lt;li&gt;Publish CAA records after DNS control is secured&lt;/li&gt;
&lt;li&gt;Keep the legacy zone live for 48–72 hours after cutover&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-broken-handover-audit-what-to-do-when-a-client-fires-another-agency-and" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-broken-handover-audit-what-to-do-when-a-client-fires-another-agency-and&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
    </item>
    <item>
      <title>The Multi-Tenant Licensing Crisis: Tracking Per-Seat vs. Per-Site Agency Tooling</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Thu, 29 Oct 2026 01:59:50 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-multi-tenant-licensing-crisis-tracking-per-seat-vs-per-site-agency-tooling-46g</link>
      <guid>https://dev.to/instarenewal/the-multi-tenant-licensing-crisis-tracking-per-seat-vs-per-site-agency-tooling-46g</guid>
      <description>&lt;h2&gt;
  
  
  Executive Summary
&lt;/h2&gt;

&lt;p&gt;For years, many WordPress agencies built their margins on “unlimited site” developer licenses. One agency key, a standard plugin stack and a few hundred client sites was a workable model, and vendors encouraged it.&lt;/p&gt;

&lt;p&gt;The picture in late 2026 is more mixed than “unlimited licenses are gone.” Several vendors have retired or capped their unlimited tiers. Others still sell them. Either way, the pricing metric now drives agency margin, whether it counts sites, seats, or both.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WP Rocket&lt;/strong&gt; began phasing out its Infinite plan in 2025 and replaced it with Multi tiers of 50, 100 and 500 sites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Astra&lt;/strong&gt; announced in April 2025 that it no longer offers unlimited-site licenses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elementor&lt;/strong&gt; now lists Essential, Advanced Solo, Advanced, Expert and One plans plus a One Agency tier. According to a September 2026 pricing roundup, the older Studio and Agency plans were removed from its price list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ACF PRO, Gravity Forms and WPML&lt;/strong&gt; still sell unlimited-site agency tiers, at $249/year, $259/year and €199/year respectively.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The core operational problem is unchanged. When a client leaves, a license key often stays active on a site the agency no longer earns from. It consumes a site slot, can push you into a more expensive tier at renewal, and can leave a client’s site tied to a key the agency should no longer control.&lt;/p&gt;

&lt;p&gt;Unmonitored keys on offboarded sites create two risks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Margin leakage:&lt;/strong&gt; paying for site slots or seats that no longer produce revenue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance and continuity risk:&lt;/strong&gt; running vendor licenses on sites outside your contract, and cutting off a former client’s access to updates without warning.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This article covers how per-seat and per-site pricing differ, what vendors actually do when licenses lapse, and a practical framework for auditing and governing licenses across client environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Anatomy of Multi-Tenant License Leakage
&lt;/h2&gt;

&lt;p&gt;When an agency builds dozens or hundreds of sites on a standard stack, developers often paste the agency’s key into each site’s settings. The key can also end up in &lt;code&gt;wp-config.php&lt;/code&gt;, a deployment blueprint or a shared password manager.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agency master license (site-capped tier)
  ├── Active client (retainer paid)       → key active, generating revenue
  ├── Offboarded client site ("ghost")    → key active, no revenue
  └── Staging / dev instance              → may or may not count against the cap,
                                            depending on the vendor's detection rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The “Ghost Site” Problem
&lt;/h3&gt;

&lt;p&gt;Offboarding checklists usually cover credentials, DNS and hosting. Application-level license activations are easy to forget. They live in the database, in &lt;code&gt;wp-config.php&lt;/code&gt; or in environment variables, and they stay registered on the vendor’s side until someone deactivates them.&lt;/p&gt;

&lt;p&gt;If a former client moves the site to a new host with the key still in place, the vendor’s licensing system can keep counting that domain against the agency’s allocation.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Silent Margin Drift Happens
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tier selection at renewal:&lt;/strong&gt; WP Rocket’s transition of Infinite customers shows how site count can drive price. Its email to customers said the Infinite license would move to a Multi tier based on the customer’s current website count, excluding staging sites. In the example shared publicly, an agency was moved to Multi 500, with a regular price of $599/year. Ghost sites inflate that count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard activation caps:&lt;/strong&gt; ACF PRO’s Freelancer tier covers 10 sites, and Agency covers unlimited. A published agency case study describes an “Activation limit reached” error when an additional site was activated. Hitting a cap with ghost sites on the account means blocked activations for live projects, or a forced tier upgrade.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-seat creep:&lt;/strong&gt; Seat-based tools such as Figma, Asana and HubSpot charge per user. Former contractors or client staff left active in shared workspaces add cost month after month until someone audits the user list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Staging and dev sites:&lt;/strong&gt; Vendors handle these differently, so assuming they are free is risky. ACF PRO and WPML exclude recognized staging and development sites, but ACF’s detection depends on hostname patterns. A published ACF license walkthrough notes that a staging copy under a path such as &lt;code&gt;/staging&lt;/code&gt; on the production domain is treated as production. WP Rocket’s FAQ says local domains don’t count and that subdomains and subfolders share one license under one top-level domain.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. How Vendor Licensing Actually Behaves
&lt;/h2&gt;

&lt;p&gt;Public documentation is less dramatic than “audits and blacklists.” In practice, the documented consequences of license problems are mostly about &lt;strong&gt;updates, support, new activations and tier changes&lt;/strong&gt;, not sudden site breakage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gravity Forms:&lt;/strong&gt; If a license expires, the plugin and add-ons stay installed and keep operating. You can no longer download the core plugin or add-ons, you see expiry reminders in the admin, and you can’t use that key to register a new site, even when restoring a backup. Gravity Forms also warns that an un-updated installation may eventually fail in unpredictable ways as WordPress and integrations change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WPML:&lt;/strong&gt; If you don’t renew, you can’t update WPML to new versions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WP Rocket:&lt;/strong&gt; The Multi license requires yearly renewal for continued access to support and updates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ACF PRO:&lt;/strong&gt; A WP Engine community thread quotes ACF’s documentation as saying field data outside the ACF admin screens isn’t affected by license status. The same thread’s answers suggest that revoking a key you share across sites is a coarse tool, and that having clients buy their own license avoids the problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Licensing Terms Have Tightened
&lt;/h3&gt;

&lt;p&gt;Two documented reasons stand out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Incentive misalignment on unlimited plans.&lt;/strong&gt; A Freemius analysis argues that with an unlimited license, the vendor wants to minimize abuse of the agency’s key while the agency has no reason to care about site count. WP Rocket’s own customer notice said it had offered the Infinite license for over a decade before phasing it out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ownership and strategy shifts.&lt;/strong&gt; ACF was acquired by WP Engine in 2022. WP Engine has been majority-owned by private equity firm Silver Lake since a $250 million investment in 2018. In October 2024, WordPress forked ACF’s free plugin into Secure Custom Fields. The dispute is a reminder that a plugin’s ownership, update channel and licensing can change quickly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each vendor’s terms of service define its enforcement rights, so read them directly. This article found no vendor publicly documenting retroactive invoicing for excess site activations, so budget for the documented behaviors above rather than for audit penalties.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Real Operational Risks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lost update access:&lt;/strong&gt; On a lapsed or reassigned key, a client’s site can’t pull updates. For a security-critical plugin, that gap matters. Gravity Forms’ July 2025 supply-chain incident is a reminder of how important clean, current plugin sources are. Malicious code was found in manually downloaded versions 2.9.11.1 and 2.9.12 from the official download page on July 9–10, 2025, and Gravity Forms said its licensing and update API was not compromised.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocked new activations:&lt;/strong&gt; An expired or capped key can block you from licensing a new client site in the middle of a launch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reputation and support load:&lt;/strong&gt; Clients who see expired-license notices in their admin will ask the agency about them, whether or not the site still works.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Per-Seat vs. Per-Site: A Structural Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criteria&lt;/th&gt;
&lt;th&gt;Per-Seat (user/operator)&lt;/th&gt;
&lt;th&gt;Per-Site (domain/installation)&lt;/th&gt;
&lt;th&gt;Hybrid (seat + site limits)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Billing metric&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Number of user accounts.&lt;/td&gt;
&lt;td&gt;Number of sites or domains activated.&lt;/td&gt;
&lt;td&gt;User cap plus site limit.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Typical examples&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Figma, Asana, HubSpot&lt;/td&gt;
&lt;td&gt;ACF PRO, Gravity Forms, WPML, Elementor, WP Rocket&lt;/td&gt;
&lt;td&gt;Plans combining both metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Margin effect&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Overhead tied to team and contractor headcount.&lt;/td&gt;
&lt;td&gt;Closer to a per-client cost, so it can be re-billed.&lt;/td&gt;
&lt;td&gt;Needs allocation per client contract.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Offboarding failure mode&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unused seats keep billing.&lt;/td&gt;
&lt;td&gt;Ghost sites consume capacity or push you to a higher tier.&lt;/td&gt;
&lt;td&gt;Both failure modes at once.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Main audit task&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reconcile the user list against current staff and contractors.&lt;/td&gt;
&lt;td&gt;Reconcile the activation list against active client domains.&lt;/td&gt;
&lt;td&gt;Do both.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  4. Illustrative Math: What Ghost Sites Can Cost
&lt;/h2&gt;

&lt;p&gt;The numbers below are a &lt;strong&gt;hypothetical model&lt;/strong&gt;, not a measured industry average. Substitute your own vendor tiers and churn rate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assumptions:&lt;/strong&gt; an agency runs 150 live client sites, offboards 20% of clients each year (30 sites) and adds 30 new ones. No keys are deactivated at offboarding.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Live client sites&lt;/th&gt;
&lt;th&gt;Activated sites on vendor account&lt;/th&gt;
&lt;th&gt;Ghost sites&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;150&lt;/td&gt;
&lt;td&gt;150&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;150&lt;/td&gt;
&lt;td&gt;180&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;150&lt;/td&gt;
&lt;td&gt;210&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;By year 3, 60 of 210 activations (about 29%) belong to former clients.&lt;/p&gt;

&lt;p&gt;Whether that costs money depends entirely on the vendor’s tiers. Take a purely hypothetical per-site vendor with a 200-site tier at $400/year and a 500-site tier at $700/year. Crossing 200 activations means paying the higher tier, an extra $300/year for ghost sites, and that excess would recur every year until the keys are cleaned up.&lt;/p&gt;

&lt;p&gt;Check your actual contracts. If a vendor sells an unlimited tier, as ACF, Gravity Forms and WPML still do, ghost sites may cost nothing in license fees, though they still carry the security and ownership risks above. The place where ghost-site math bites hardest is capped tiers such as WP Rocket Multi (50/100/500) and Elementor Expert (25).&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A Framework for License Governance
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Phase 1: Ingestion          Phase 2: Deployment          Phase 3: Offboarding
• Central key inventory     • Keys supplied via config   • Deactivate site activations
• Client ID binding         • Environment scoping        • Remove keys from client host
• Renewal dates tracked     • Staging naming rules       • Notify client of next steps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Phase 1: Keep Keys Out of Site Settings Where You Can
&lt;/h3&gt;

&lt;p&gt;Several vendors support defining the key in code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ACF PRO&lt;/strong&gt; supports an &lt;code&gt;ACF_PRO_LICENSE&lt;/code&gt; constant in &lt;code&gt;wp-config.php&lt;/code&gt;. ACF’s own code checks for the constant and activates the key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gravity Forms&lt;/strong&gt; supports &lt;code&gt;GF_LICENSE_KEY&lt;/code&gt;, but it only pre-populates the key at installation on a single-site install, or when new sites are created on a multisite network. It is not a way to change keys on already-installed sites.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// wp-config.php — read the key from the server environment rather than hardcoding it&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'ACF_PRO_LICENSE'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'AGENCY_ACF_LICENSE_KEY'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'GF_LICENSE_KEY'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="nb"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;'AGENCY_GRAVITY_FORMS_KEY'&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// install-time only&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two caveats apply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A constant means the master key lives on the client’s server. Offboarding must therefore include removing it from the host, because the key sits in the client’s environment either way.&lt;/li&gt;
&lt;li&gt;Activation data may still be stored by the plugin after activation. Don’t assume a constant means nothing is written to the database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For staging and development, don’t try to block vendor license calls in code. It is fragile and can break plugin behavior. Instead, use hostnames the vendor recognizes as non-production. For ACF, that means a staging subdomain, not a path on the production domain. Confirm each vendor’s current rules in its documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 2: Prefer Client-Owned Licenses Where It Makes Commercial Sense
&lt;/h3&gt;

&lt;p&gt;A centralized proxy that forwards license checks under your master key is technically possible, but it is risky. It likely conflicts with vendor terms, depends on spoofable request data, and can break when a vendor changes its API. A better pattern for most agencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the agency tier for sites you actively manage and bill under a retainer.&lt;/li&gt;
&lt;li&gt;Have clients buy their own license for tools you only configure once.&lt;/li&gt;
&lt;li&gt;Use a vendor’s own multi-site management tools where one exists, instead of building around its licensing system.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Phase 3: Offboarding Checklist
&lt;/h3&gt;

&lt;p&gt;When a client leaves, run license cleanup alongside access revocation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deactivate the site’s activation in each vendor account.&lt;/li&gt;
&lt;li&gt;Remove license constants and keys from the client’s host or config.&lt;/li&gt;
&lt;li&gt;Confirm the plugin shows an unlicensed state, with no agency key left in the database.&lt;/li&gt;
&lt;li&gt;Send the client direct purchase links for the licenses they now need, and note the update implications from Section 2.&lt;/li&gt;
&lt;li&gt;Update your inventory and close out any seat assignments in shared tools.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  6. Contract and Record-Keeping Steps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Contract Language
&lt;/h3&gt;

&lt;p&gt;Update client agreements to say who owns each license and what happens at termination. Have your lawyer review the wording. A starting point:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Software licenses provided under the Agency Maintenance Retainer remain the property of the Agency. On termination, agency-provided premium software keys will be deregistered, and the Client is responsible for procuring its own licenses to continue receiving updates and support.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  A Central License Inventory
&lt;/h3&gt;

&lt;p&gt;Keep one source of truth that ties each client, domain and vendor license together. A spreadsheet works at small scale. A record per client might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"client_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CLI-88402"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"domain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"example-client.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"contract_status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Active"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"licenses"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"vendor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Advanced Custom Fields"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"tier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Agency"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"registered"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-01-15"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"renewal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-01-15"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"vendor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Gravity Forms"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"tier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Elite"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"registered"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-01-15"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"renewal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-01-15"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Reconciliation
&lt;/h3&gt;

&lt;p&gt;Compare active client domains against each vendor’s activation list on a schedule. Most vendors expose activated sites in an account dashboard. Some may offer an API, so check each vendor’s documentation before building automation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Reconcile active client domains against a vendor activation export (CSV or API data)
&lt;/span&gt;&lt;span class="n"&gt;ACTIVE_CLIENT_DOMAINS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;alpha.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;beta.io&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gamma.net&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_orphaned_activations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vendor_activations&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;vendor_activations: iterable of dicts with at least a &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; key.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;vendor_activations&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;ACTIVE_CLIENT_DOMAINS&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Example input, e.g. loaded from a vendor dashboard export
&lt;/span&gt;&lt;span class="n"&gt;activations&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;alpha.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;activated&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2025-01-15&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;former-client.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;activated&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2024-03-02&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;orphan&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;find_orphaned_activations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;activations&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;REVIEW: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;orphan&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; (activated &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;orphan&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;activated&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script only flags candidates. A person should confirm each one before deactivating anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Conclusion: Turning License Governance into a Service
&lt;/h2&gt;

&lt;p&gt;The shift from unlimited licenses to capped tiers is uneven across vendors. WP Rocket, Astra and Elementor have moved toward limits, while ACF PRO, Gravity Forms and WPML still sell unlimited agency plans. That unevenness is the reason to treat licenses as managed inventory: you need to know which of your vendors cap sites, which count staging, and what each does when a key lapses.&lt;/p&gt;

&lt;p&gt;Agencies that track activations against active clients can avoid paying for ghost sites on capped plans and can plan renewals ahead of time. Once that inventory exists, it can also support a paid service. A &lt;strong&gt;license management retainer&lt;/strong&gt;, where clients fund the premium tools their sites depend on, turns a hidden cost into a transparent line item.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-multi-tenant-licensing-crisis-tracking-per-seat-vs-per-site-agency-tooling" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-multi-tenant-licensing-crisis-tracking-per-seat-vs-per-site-agency-tooling&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>The WebAssembly (Wasm) Module Expiry Trap: Tracking Client Edge Runtimes and Binaries</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Wed, 28 Oct 2026 01:53:54 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-webassembly-wasm-module-expiry-trap-tracking-client-edge-runtimes-and-binaries-36f7</link>
      <guid>https://dev.to/instarenewal/the-webassembly-wasm-module-expiry-trap-tracking-client-edge-runtimes-and-binaries-36f7</guid>
      <description>&lt;p&gt;As compute moves closer to users, engineering teams and agencies increasingly ship &lt;strong&gt;WebAssembly (Wasm) modules to edge platforms&lt;/strong&gt; such as Cloudflare Workers, Fastly Compute and Vercel Functions on the Edge runtime. Wasm offers near-native performance on compute-heavy work, lets teams use languages like Rust, Go and C, and runs inside a sandbox. It also creates an operational blind spot: &lt;strong&gt;a compiled Wasm binary has no expiry date, but the things it depends on do.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;.wasm&lt;/code&gt; file is an opaque artifact. It is tied to the compiler toolchain that produced it, the compilation target it was built for, the system-interface version it imports, the limits of the plan it is deployed on, and sometimes the signing identity used to approve it. When any of these moves, a module that ran for months can stop building, stop deploying or stop instantiating. Nothing in the binary itself warns you.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Anatomy of the Edge Wasm Lifecycle
&lt;/h2&gt;

&lt;p&gt;Edge platforms remove server maintenance, but they move that complexity into the build pipeline and the artifact lifecycle.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Source Code (Rust / Go / C)]
       │
       ▼  Compiler toolchain + compilation target
[Wasm Binary (.wasm)]
       │
       ▼  Optional: signing / attestation (your policy)
[Bundle or package uploaded to the platform]
       │
       ▼  Edge runtime (e.g. workerd, a Wasmtime-based host)
[Client execution]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The three major platforms handle Wasm differently:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;How Wasm is delivered&lt;/th&gt;
&lt;th&gt;Detail worth tracking&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloudflare Workers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A &lt;code&gt;.wasm&lt;/code&gt; file is imported into the Worker and instantiated with &lt;code&gt;WebAssembly.instantiate()&lt;/code&gt;. Wrangler bundles any module ending in &lt;code&gt;.wasm&lt;/code&gt; or &lt;code&gt;.wasm?module&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Worker size is capped at 3 MB (Free) or 10 MB (Paid) after gzip, with a 1-second startup limit.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fastly Compute&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A package built by the Fastly CLI from your project, using the toolchain pinned in &lt;code&gt;rust-toolchain.toml&lt;/code&gt; for Rust.&lt;/td&gt;
&lt;td&gt;Fastly validates Rust versions against its SDK before supporting them.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vercel Functions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Wasm works with the &lt;code&gt;edge&lt;/code&gt;, &lt;code&gt;nodejs&lt;/code&gt; and &lt;code&gt;bun&lt;/code&gt; runtimes.&lt;/td&gt;
&lt;td&gt;On the Edge runtime, &lt;code&gt;WebAssembly.instantiate&lt;/code&gt; requires the Wasm source to come from an &lt;code&gt;import&lt;/code&gt; statement.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Cloudflare’s &lt;a href="https://developers.cloudflare.com/workers/platform/limits" rel="noopener noreferrer"&gt;limits page&lt;/a&gt; also lists 64 MB as the pre-compression bundle limit and notes that larger bundles can slow startup. The Wasm module ships inside the deployment, so a plan or bundle-size change can break a client’s Worker even if no code changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Silent Vectors of Failure
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Vector 1: Toolchain and target drift
&lt;/h3&gt;

&lt;p&gt;Compilation targets get renamed and removed, and compiler releases occasionally produce bad output for a given platform. Real examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The WASI target rename.&lt;/strong&gt; Rust 1.78 (May 2024) introduced &lt;code&gt;wasm32-wasip1&lt;/code&gt; as a rename of &lt;code&gt;wasm32-wasi&lt;/code&gt;. Rust 1.84 (January 2025) removed the old target entirely, so projects still referencing &lt;code&gt;wasm32-wasi&lt;/code&gt; failed after upgrading the compiler.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fastly’s CLI target.&lt;/strong&gt; Fastly’s Rust guide says CLI 11.0.0 and later supports only the &lt;code&gt;wasm32-wasip1&lt;/code&gt; target for Rust services, which requires Rust 1.78.0 or higher.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A compiler release that produced broken packages.&lt;/strong&gt; Fastly’s Rust guide states that Rust 1.91.0 is not compatible with Compute and that 1.91.1 fixed the problem. The Fastly CLI was also updated to refuse builds with 1.91.0. Fastly’s engineering team had confirmed those packages would crash when handling incoming requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last case shows the risk of floating toolchains. A pipeline that tracks the &lt;code&gt;stable&lt;/code&gt; channel can pick up a compiler release the platform has not validated, and the failure appears at runtime rather than at build time. Fastly’s own guidance is to avoid updating Rust until Fastly releases an SDK that supports the new version.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vector 2: WASI and runtime version drift
&lt;/h3&gt;

&lt;p&gt;The system interface that Wasm modules import is still evolving, so modules built against older interface versions need deliberate migration.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WASI 0.3.0 was released on June 11, 2026.&lt;/strong&gt; It moves async support into the Component Model itself, using built-in &lt;code&gt;stream&lt;/code&gt;, &lt;code&gt;future&lt;/code&gt; and &lt;code&gt;async func&lt;/code&gt; primitives. The &lt;code&gt;wasi:io&lt;/code&gt; package, which WASI 0.2 used for async, is replaced by these primitives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtimes follow on their own schedules.&lt;/strong&gt; The WASI project said Wasmtime 46 would ship WASI 0.3.0 with Component Model async enabled by default. The Wasmtime 46.0.0 release notes confirm that WASI 0.3.0 support and the &lt;code&gt;component-model-async&lt;/code&gt; feature are enabled by default, and the release landed on June 22, 2026.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not every host moves at the same time.&lt;/strong&gt; Your edge platform’s runtime version, your local test runtime and your toolchain’s WASI target can each be on different interface versions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloudflare mitigates part of this with &lt;strong&gt;compatibility dates&lt;/strong&gt;. Its open-source &lt;code&gt;workerd&lt;/code&gt; runtime is versioned by date, and the README states that updating &lt;code&gt;workerd&lt;/code&gt; will never break your &lt;em&gt;JavaScript&lt;/em&gt; code because Workers can pin to an older compatibility date. That promise covers the JavaScript API surface. It does not cover whether your Wasm module’s own imports still match what you built it against, so you still need to test the module itself.&lt;/p&gt;

&lt;p&gt;Also note that Fastly’s original runtime, Lucet, reached end-of-life and was archived in March 2022. Its maintainers directed users to Wasmtime, which absorbed Lucet’s features. Documentation or blog posts that still refer to Lucet as a current edge runtime are out of date.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vector 3: Signing identities and embedded time-limited material
&lt;/h3&gt;

&lt;p&gt;None of the platform documentation reviewed for this article describes mandatory signature checks on uploaded Wasm modules. Signing is usually a policy your own team or a client’s security team adds to the pipeline. Where it exists, it creates its own expiry risk:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Module signatures are a proposal, not a universal standard.&lt;/strong&gt; The WebAssembly module signatures proposal embeds signatures in the module so a runtime or deploy gate can verify them before instantiation. &lt;code&gt;wasmsign2&lt;/code&gt; is a reference implementation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyless signing changes what “expired” means.&lt;/strong&gt; Sigstore’s public Fulcio service issues short-lived certificates valid for 10 minutes, so verification has to prove the artifact was signed &lt;em&gt;while the certificate was valid&lt;/em&gt;, using a timestamp or transparency-log entry, rather than checking whether the certificate is valid now. A verification step that checks the certificate’s validity at deploy time will reject every keyless-signed artifact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key-based signing carries a rotation burden.&lt;/strong&gt; If your pipeline signs with a long-lived key or certificate and the deploy gate verifies it, an expired or rotated key will block deployments until the pipeline and the gate agree again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedded time-limited material is a self-inflicted trap.&lt;/strong&gt; If a build embeds an evaluation license or a time-limited credential, the module works until that timestamp passes. Platform documentation does not describe this behavior. It is a design choice, and it is easy to forget when a client engagement ends.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Vector 4: Plan tiers, size limits and startup budgets
&lt;/h3&gt;

&lt;p&gt;Limits can change what a deployment is allowed to do. Cloudflare’s published limits differ between Free and Paid plans for Worker size (3 MB vs. 10 MB compressed), and both plans allow 1 second of startup time. A Wasm module that grew past the Free-plan cap, or a client account moved between plans, can produce a failed deployment that has nothing to do with your code. Separately, Workers that exceed their CPU time limit return Cloudflare’s Error 1102, which is easy to mistake for a runtime bug if you are not watching resource limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Best Practices for Mitigating Edge Wasm Drift
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pin compiler toolchains and targets.&lt;/strong&gt; Avoid &lt;code&gt;stable&lt;/code&gt; or &lt;code&gt;latest&lt;/code&gt; in compilation stages. Commit a &lt;code&gt;rust-toolchain.toml&lt;/code&gt; that names both the exact compiler version and the target:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;  &lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="n"&gt;toolchain&lt;/span&gt;&lt;span class="k"&gt;]&lt;/span&gt;
  &lt;span class="n"&gt;channel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;version validated for your platform's SDK&amp;gt;"&lt;/span&gt;
  &lt;span class="n"&gt;targets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"wasm32-wasip1"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Upgrade deliberately, after the platform vendor says the new version is supported.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read release notes for your target and your runtime.&lt;/strong&gt; Target renames (&lt;code&gt;wasm32-wasi&lt;/code&gt; to &lt;code&gt;wasm32-wasip1&lt;/code&gt;) and interface changes (WASI 0.2 to 0.3) are announced well in advance. Put the dates in your team’s calendar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run synthetic probes against deployed modules.&lt;/strong&gt; Exercise a cold-start path for each deployed module on a schedule, so a broken package or failed instantiation shows up in your monitoring before a client reports it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep artifacts in a registry with metadata.&lt;/strong&gt; Store each build with its compiler version, target, WASI version, build date, size and the signing identity used. Cosign can store and sign Wasm modules as OCI artifacts, which gives you a versioned, verifiable record.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make signature verification time-aware.&lt;/strong&gt; If you use keyless signing, verify against the signing time evidenced by the transparency log or a timestamp authority rather than the current time. If you use long-lived keys, track their expiry dates like any other certificate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canary and roll back.&lt;/strong&gt; Route a small share of traffic to newly compiled modules, and keep the previous known-good build deployable so a link or instantiation failure can be reversed quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Record limits and plan tier per client.&lt;/strong&gt; Note the Worker size, startup time and plan tier against each client deployment, and re-check them when the client’s account changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  An inventory template for client edge deployments
&lt;/h3&gt;

&lt;p&gt;For each client edge deployment, record:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Platform and plan tier&lt;/td&gt;
&lt;td&gt;Size and startup limits differ by plan.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compiler version and target&lt;/td&gt;
&lt;td&gt;Detects drift such as &lt;code&gt;wasm32-wasi&lt;/code&gt; removal or an unvalidated Rust release.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WASI version and runtime version&lt;/td&gt;
&lt;td&gt;Detects interface mismatches such as WASI 0.2 vs. 0.3.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compatibility date (Cloudflare)&lt;/td&gt;
&lt;td&gt;Shows which runtime behavior the Worker is pinned to.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Signing method and key/certificate expiry&lt;/td&gt;
&lt;td&gt;Prevents deploy-gate failures.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Account owner and billing contact&lt;/td&gt;
&lt;td&gt;Ensures someone can act when the platform plan changes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Last successful cold-start probe&lt;/td&gt;
&lt;td&gt;Shows when the module was last confirmed working.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  4. Conclusion
&lt;/h2&gt;

&lt;p&gt;WebAssembly at the edge delivers real speed and language flexibility, but a compiled module is not a write-once file. It depends on a compiler version, a compilation target, a system-interface version, a platform’s limits and, where you use it, a signing identity. Each of these has changed within the last two years, and several changes broke previously working builds. Teams that treat Wasm modules as living components, with pinned toolchains, recorded metadata and regular health probes, can avoid most of these failures and diagnose the rest faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/workers/runtime-apis/webassembly/javascript/" rel="noopener noreferrer"&gt;Cloudflare Workers: Wasm in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/workers/platform/limits" rel="noopener noreferrer"&gt;Cloudflare Workers limits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastly.com/documentation/guides/compute/developer-guides/rust" rel="noopener noreferrer"&gt;Fastly: Rust on the Compute platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vercel.com/docs/functions/runtimes/wasm" rel="noopener noreferrer"&gt;Vercel: Using WebAssembly (Wasm)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wasi.dev/releases/wasi-p3" rel="noopener noreferrer"&gt;WASI 0.3 release notes (wasi.dev)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bytecodealliance/wasmtime/releases/tag/v46.0.0" rel="noopener noreferrer"&gt;Wasmtime 46.0.0 release notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rust-lang/rust/pull/132562" rel="noopener noreferrer"&gt;Rust: removal of the &lt;code&gt;wasm32-wasi&lt;/code&gt; target&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/WebAssembly/design/issues/1413" rel="noopener noreferrer"&gt;WebAssembly module signatures proposal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-webassembly-wasm-module-expiry-trap-tracking-client-edge-runtimes-and" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-webassembly-wasm-module-expiry-trap-tracking-client-edge-runtimes-and&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
    </item>
    <item>
      <title>The “Single Source of Truth” Fallacy: Why Shared Agency Spreadsheets Are Silently Costing You Clients</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Tue, 27 Oct 2026 01:56:58 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-single-source-of-truth-fallacy-why-shared-agency-spreadsheets-are-silently-costing-you-3ia3</link>
      <guid>https://dev.to/instarenewal/the-single-source-of-truth-fallacy-why-shared-agency-spreadsheets-are-silently-costing-you-3ia3</guid>
      <description>&lt;p&gt;Picture this (an illustrative composite, not a single real case). It’s Thursday afternoon. Your agency’s largest retainer client, a $15,000/month enterprise account, emails your account director asking for an urgent breakdown of Q3 performance, media spend efficiency and upcoming deliverable timelines.&lt;/p&gt;

&lt;p&gt;Within minutes, three team members scramble. The media buyer pulls data from the ad platform, the SEO lead exports numbers from Google Analytics, and the project manager opens “Master Client Tracker v4_FINAL_revised.”&lt;/p&gt;

&lt;p&gt;By 4:00 PM, a polished deck lands in the client’s inbox. It contains a fatal flaw: the media buyer typed a figure into a cell by hand, the SEO lead missed a deleted row, and the project manager’s summary formula skipped half the deliverables. &lt;strong&gt;The numbers the client received contradict each other.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The client notices that traffic doesn’t line up with conversion spend. Internal panic follows, then finger-pointing. Trust erodes, and some months later the client moves to another agency.&lt;/p&gt;

&lt;p&gt;If that sounds familiar, you’re in good company. Many growing agencies run on the same fragile arrangement: &lt;strong&gt;the shared agency spreadsheet&lt;/strong&gt; as the “single source of truth.”&lt;/p&gt;

&lt;p&gt;Spreadsheets are not the villain. They are flexible, familiar and often free, and plenty of small agencies run well on them. The problem is the gap between what a spreadsheet &lt;em&gt;feels&lt;/em&gt; like (one authoritative record) and what it often &lt;em&gt;is&lt;/em&gt; (a pile of copies, manual inputs and unreviewed formulas).&lt;/p&gt;

&lt;h2&gt;
  
  
  What the research says about spreadsheet errors
&lt;/h2&gt;

&lt;p&gt;Spreadsheet risk is one of the better-studied topics in information systems. Professor Raymond Panko of the University of Hawaii has spent decades reviewing the research.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Errors are the norm, not the exception.&lt;/strong&gt; Panko’s review of spreadsheet audit studies found errors in roughly 94% of the operational spreadsheets examined, with average cell error rates of around 5% in some of those studies. Other field audits found lower cell error rates, from under 1% to about 2.5%. The studies use different definitions of “error,” so treat any single percentage as indicative rather than precise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Experience doesn’t make people immune.&lt;/strong&gt; In a controlled comparison, undergraduates, MBA students with little spreadsheet experience and MBA students with 250+ hours of experience showed no significant difference in error rates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small error rates compound.&lt;/strong&gt; Even a 1% error rate per cell makes a mistake somewhere in a large, interdependent model likely. Panko summarizes the position as “not whether there is an error but how many errors there are and how serious they are.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two well-documented incidents show how this plays out outside agencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JPMorgan’s “London Whale” losses (2012).&lt;/strong&gt; The bank’s own task force report found that the value-at-risk model in its Chief Investment Office ran through a series of Excel spreadsheets completed manually by copying and pasting data between them. It also found a formula that divided by the sum of two rates instead of their average, which likely muted the calculated volatility by about half. The report described the manual process as “error prone.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public Health England (2020).&lt;/strong&gt; The agency failed to include 15,841 positive COVID-19 cases, reported for 25 September to 2 October 2020, in its daily totals. Reporting pointed to lab results being loaded into the older .xls Excel format, which caps a sheet at 65,536 rows. Records beyond the cap were silently dropped. The modern .xlsx format allows 1,048,576 rows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither case involved a marketing agency, and the stakes were far higher. The mechanics, though, are the ones your team faces: manual copy-paste, formulas nobody reviewed, and a tool that fails quietly rather than loudly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where spreadsheets start to strain
&lt;/h2&gt;

&lt;p&gt;With three or four people and a handful of clients, a shared Google Sheet or Excel workbook is hard to beat. Strain tends to appear as accounts, channels and contributors pile up. There is no universal tipping point, and “15 clients” is a rule of thumb rather than a measured threshold. Several things push agencies toward the wall:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-channel inputs:&lt;/strong&gt; paid social, search, programmatic, email, analytics and CRM data, each with its own export format.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared team capacity:&lt;/strong&gt; freelancers, designers, copywriters and media buyers split across accounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Varied billing structures:&lt;/strong&gt; retainers, project add-ons, hourly overages and milestone pricing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point you are asking a flat grid to model relationships: this client has these projects, which have these tasks, time entries and invoices. Spreadsheets &lt;em&gt;can&lt;/em&gt; enforce some rules (data validation, protected ranges), but they have no native relational model. They can’t guarantee, for example, that every time entry points to a real project or that deleting a client doesn’t orphan its tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three silent killers of the spreadsheet “source of truth”
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Version sprawl
&lt;/h3&gt;

&lt;p&gt;A cloud spreadsheet edited live is, in principle, a single document. Sprawl creeps in when people export, download or duplicate it. By default in Google Sheets, even viewers and commenters can make a copy, download or print the file unless the owner switches that off. Meanwhile, files get emailed as Excel attachments or pasted into decks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The symptom:&lt;/strong&gt; several “current” versions in circulation, with tabs and exports that diverge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The cost:&lt;/strong&gt; budget changes, scope updates and campaign adjustments made on stale data while a colleague works from a different copy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Version history helps (Google Sheets, for instance, lets you review and restore earlier versions), but it only tracks the file you’re looking at. It can’t reconcile copies that have already left it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Broken formulas and hardcoded numbers
&lt;/h3&gt;

&lt;p&gt;Spreadsheets depend on human precision: a misplaced range, a deleted header row, a sorted column that detaches a formula from its data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The symptom:&lt;/strong&gt; to hit a deadline, someone overwrites a formula with a typed-in number so the totals balance. Researchers who audit spreadsheets classify hardcoded numbers inside formulas as a poor-practice error even when the result happens to be correct.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The cost:&lt;/strong&gt; the override becomes permanent, and later dashboards inherit it with no flag. Multiplied across many clients and trackers, leadership ends up making capacity and margin decisions on numbers nobody can fully trace.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Blunt access control
&lt;/h3&gt;

&lt;p&gt;The common perception is that spreadsheets offer only “Editor” or “Viewer.” The reality is more nuanced. Google Sheets also has a Commenter role, and lets owners protect specific sheets or ranges and restrict who can edit them. Excel offers sheet and workbook protection as well. But these controls are limited:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google’s own documentation says range protection shouldn’t be used as a security measure, because people with access can still print, copy, paste and export copies of a protected sheet.&lt;/li&gt;
&lt;li&gt;Hiding a sheet isn’t protection either: all editors can unhide it.&lt;/li&gt;
&lt;li&gt;Granting edit rights remains the path of least resistance, so many agencies give contractors broad access to avoid bottlenecks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The cost:&lt;/strong&gt; one accidental deletion of a sort order, a conditional-formatting rule or a key range can quietly break the tracker everyone relies on, often right before a client presentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The financial toll: reporting, retention and time
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Reporting errors undermine trust
&lt;/h3&gt;

&lt;p&gt;Enterprise clients compare your reports against their own ad dashboards and analytics. When your numbers disagree with what they see natively, the likely conclusion is that something is wrong with your process. There is no reliable public statistic ranking data discrepancies as a leading cause of client departures, so treat any claim that they are the “number one” trigger with suspicion. What the survey evidence does show is that communication and transparency matter. In Swydo’s analysis of why clients leave marketing agencies, 57% of departing clients cited poor communication and transparency, and price ranked only sixth (37%). Clients could name several reasons, so percentages exceed 100%. Setup’s 2024 Marketing Relationship Survey found dissatisfaction with delivery to be the top reason clients end relationships, cited by 48%. Both are vendor-published surveys, so read them as directional.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-------------------------------------------------------------------+
|                    THE HIDDEN CHAIN REACTION                       |
|                                                                   |
|  [ Spreadsheet error / data silo ]                                |
|         ↓                                                         |
|  [ Inconsistent reporting to the client ]                         |
|         ↓                                                         |
|  [ Erosion of executive trust ]                                   |
|         ↓                                                         |
|  [ Higher churn risk and a costly replacement-client hunt ]       |
+-------------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Manual reporting eats billable capacity
&lt;/h3&gt;

&lt;p&gt;Published estimates of time spent on manual client reporting vary enormously and mostly come from vendors who sell reporting tools. AgencyAnalytics cites 1.5 to 4 hours per client per reporting cycle. Other vendor surveys claim figures from a few hours to well over 10 hours per client per month. Your real number depends on how many data sources you pull and how much assembly is manual. The useful move is to measure it: have each account manager log reporting hours for two months, then multiply by your blended internal rate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scope creep hides in disconnected tabs
&lt;/h3&gt;

&lt;p&gt;When time tracking, task lists and billing live in separate sheets, unbilled work is harder to see. No credible benchmark says agencies lose a specific percentage of retainer revenue to this. The practical fix is to compare hours logged per client against what the retainer covers each month, and to flag overruns while there is still time to act.&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving from fragile sheets to a real single source of truth
&lt;/h2&gt;

&lt;p&gt;You don’t need heavyweight enterprise software to escape the trap. A single source of truth is a design principle: each important fact is stored in one authoritative place, and everything else reads from it. In practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use relational structures for operational data.&lt;/strong&gt; Move clients, projects, tasks, time entries and invoices into a tool where records link to each other, whether that is a structured no-code database or an agency management platform. A task should belong to a project, which belongs to a client, so changing one record updates every view.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automate the data pipeline.&lt;/strong&gt; Connect ad platforms, analytics and finance tools through native connectors, APIs or automation layers instead of copy-pasting. This is exactly the manual step identified in the JPMorgan model review. Automations still need monitoring, because connectors fail when credentials expire or a platform changes its API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apply role-based access.&lt;/strong&gt; Give people the least access they need, and prefer tools where permissions can be set per record or view rather than relying on file-level sharing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define your metrics once.&lt;/strong&gt; Write down what “Active Client,” “Conversion” and “Retainer Margin” mean, and make every report use the same definitions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you stay on spreadsheets for now, add guardrails.&lt;/strong&gt; Keep inputs and calculations on separate tabs, protect formula ranges, ban typed-over formulas, use a named-version habit before big changes, and have a second person review any figure going to a client. Panko’s research found that people who expect errors, and review in layers, catch more of them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion: treat the spreadsheet as a risk, not a record
&lt;/h2&gt;

&lt;p&gt;Shared spreadsheets are not doomed to fail, and they are often the right starting point. But the research on error rates, and costly real-world failures rooted in manual copying and unreviewed formulas, suggest that a spreadsheet should not be your only line of defense once client numbers, billing and team capacity depend on it.&lt;/p&gt;

&lt;p&gt;By recognizing version sprawl, formula fragility and thin access controls, you can decide deliberately when to move to structured tools and automated reporting. Doing so won’t guarantee a client stays, but it removes one avoidable reason for them to doubt your numbers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Is your agency ready to trade fragile spreadsheets for something sturdier? Audit your current client trackers this week: count the copies, find the hardcoded cells, and check who can edit what.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Panko, R., &lt;a href="https://arxiv.org/pdf/0802.3457" rel="noopener noreferrer"&gt;“Spreadsheet Errors: What We Know. What We Think We Can Do”&lt;/a&gt; and &lt;a href="https://arxiv.org/pdf/1602.02601" rel="noopener noreferrer"&gt;“What We Don’t Know About Spreadsheet Errors Today”&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Powell et al. field audit summary, via &lt;a href="https://arxiv.org/pdf/0908.1190" rel="noopener noreferrer"&gt;“Error Estimation in Large Spreadsheets using Bayesian Statistics”&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;JPMorgan Chase Task Force report on 2012 CIO losses, as summarized by &lt;a href="https://baselinescenario.com/2013/02/09/the-importance-of-excel" rel="noopener noreferrer"&gt;James Kwak, Baseline Scenario&lt;/a&gt; and &lt;a href="https://research.isg-one.com/analyst-perspectives/2013/01/29/the-spreadsheet-and-the-whale" rel="noopener noreferrer"&gt;ISG&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theregister.com/2020/10/05/test_and_trace/" rel="noopener noreferrer"&gt;The Register: England’s under-reported COVID-19 cases and Excel’s .xls row limit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google Help: &lt;a href="https://support.google.com/docs/answer/180897" rel="noopener noreferrer"&gt;Protect, hide and edit sheets&lt;/a&gt; and &lt;a href="https://support.google.com/docs/answer/144687" rel="noopener noreferrer"&gt;Protect a sheet or range&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.swydo.com/blog/client-churn-kpis/" rel="noopener noreferrer"&gt;Swydo: Client churn KPIs and why clients leave&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://klicksdesign.com/insights/agency-client-retention/" rel="noopener noreferrer"&gt;Klicks Design: summary of Setup’s 2024 Marketing Relationship Survey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://agencyanalytics.com/blog/marketing-reporting" rel="noopener noreferrer"&gt;AgencyAnalytics: Marketing reporting guide for 2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-single-source-of-truth-fallacy-why-shared-agency-spreadsheets-are-silently" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-single-source-of-truth-fallacy-why-shared-agency-spreadsheets-are-silently&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>The “Silent Registrar Lockout”: How Agency-Client Miscommunication Breaks Domain Transfers During Offboarding</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Mon, 26 Oct 2026 01:56:41 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-silent-registrar-lockout-how-agency-client-miscommunication-breaks-domain-transfers-during-2imj</link>
      <guid>https://dev.to/instarenewal/the-silent-registrar-lockout-how-agency-client-miscommunication-breaks-domain-transfers-during-2imj</guid>
      <description>&lt;p&gt;Offboarding a digital client should be a clean operational milestone. Deliverables are archived, final invoices are settled, and control of core digital infrastructure (websites, hosting, analytics and primary domain names) is handed back to the client.&lt;/p&gt;

&lt;p&gt;One of the most common friction points in these transitions happens quietly, beneath the offboarding workflow. This article calls it &lt;strong&gt;the Silent Registrar Lockout&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A Silent Registrar Lockout is not an official industry term. It describes a domain that cannot be moved at the moment an agency or client tries to hand it over. Broken code or missing DNS records are rarely the cause. The usual causes are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a registrar-imposed transfer lock that nobody knew about&lt;/li&gt;
&lt;li&gt;registrar account access held by someone who has left&lt;/li&gt;
&lt;li&gt;a contact detail changed at the wrong moment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is the same each time: website and email downtime risk, and a strained relationship with a client who is already leaving. This guide explains the mechanisms behind domain locks and gives you a &lt;strong&gt;30-day pre-offboarding checklist&lt;/strong&gt; to avoid them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Scope note:&lt;/strong&gt; ICANN’s Transfer Policy governs generic top-level domains (gTLDs) such as &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.net&lt;/code&gt; and &lt;code&gt;.org&lt;/code&gt;. Country-code domains (ccTLDs) such as &lt;code&gt;.uk&lt;/code&gt;, &lt;code&gt;.eu&lt;/code&gt; or &lt;code&gt;.in&lt;/code&gt; follow their own registry rules, so check the relevant registry’s policy before applying anything below to them.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What Causes a “Silent Registrar Lockout”?
&lt;/h2&gt;

&lt;p&gt;A registrar-to-registrar transfer looks simple on paper:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Unlock the domain.&lt;/li&gt;
&lt;li&gt;Get the authorization code (also called an Auth code, AuthInfo code or EPP code).&lt;/li&gt;
&lt;li&gt;Submit it at the receiving registrar.&lt;/li&gt;
&lt;li&gt;Approve any confirmation requests.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In practice, several independent controls sit in the way. Each is sensible on its own, but they collide when an offboarding is rushed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 [ Offboarding begins ]
                           │
        ┌──────────────────┼───────────────────┐
        ▼                  ▼                   ▼
 [1. Registrar lock]  [2. Registrant      [3. Registrar account
  clientTransfer-      details changed?     access: who can log in,
  Prohibited?          (name/org/email)     pass MFA, approve emails?]
        │                  │                   │
  Toggle it off     60-day lock applies   Account held by ex-employee
  (or ask registrar unless you opted out  or dead mailbox = stuck
  to do it within   BEFORE the change
  5 calendar days)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three catalysts account for most lockouts.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Change of Registrant 60-Day Lock
&lt;/h3&gt;

&lt;p&gt;Under ICANN’s Transfer Policy, a “Change of Registrant” is a &lt;em&gt;material change&lt;/em&gt; to the registrant’s name, organization or email address. A material change is anything that is not a typographical correction.&lt;/p&gt;

&lt;p&gt;When one happens, the registrar &lt;strong&gt;must&lt;/strong&gt; impose a 60-day inter-registrar transfer lock. The only exception is a registrar that offers an opt-out, and the registrant must use it &lt;em&gt;before&lt;/em&gt; the change request.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The mistake:&lt;/strong&gt; Three days before offboarding, an agency “cleans up” the registrant record. It swaps &lt;code&gt;webmaster@agency.com&lt;/code&gt; for &lt;code&gt;admin@client.com&lt;/code&gt;, intending to help. That is a material change to the email address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The result:&lt;/strong&gt; The domain cannot move to another registrar for 60 days, unless the registrar offers an opt-out that was used beforehand. ICANN itself does not place or lift an individual domain’s lock. Some registrars add their own rules for removing the lock, such as extra email confirmation or a waiting period, so ask yours exactly how it handles this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two clarifications prevent misdiagnosis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The lock is imposed by the registrar, not the registry.&lt;/strong&gt; ICANN’s policy does not require a specific EPP status code for it. If a registrar uses &lt;code&gt;clientTransferProhibited&lt;/code&gt;, it must also prevent the customer from removing that status themselves. The lock may therefore be invisible in a public lookup, so ask the registrar for the date it ends.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The policy tells registrars to warn the prior registrant.&lt;/strong&gt; Anyone who intends to move the domain to a different registrar is advised to request the transfer &lt;em&gt;before&lt;/em&gt; the Change of Registrant, to avoid triggering the lock.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Orphaned Registrar Accounts and Multi-Factor Authentication
&lt;/h3&gt;

&lt;p&gt;Major registrars and DNS providers such as Cloudflare, GoDaddy, Namecheap and AWS support multi-factor authentication (MFA) on their accounts. That is good security. It becomes a problem when the account’s only administrator no longer works for the agency.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The mistake:&lt;/strong&gt; The registrar account is tied to a former project manager or developer. It may be tied to a dead alias such as &lt;code&gt;tech-dept-2022@agency.com&lt;/code&gt;, or MFA may live on a departed employee’s phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The result:&lt;/strong&gt; On handoff day, nobody can unlock the domain, retrieve the Auth code or approve confirmation emails. Account recovery usually means identity and business verification through the registrar’s support team. How long that takes varies by registrar and can run to days or more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note who actually has authority over the transfer. Under ICANN’s policy, the &lt;strong&gt;Registered Name Holder&lt;/strong&gt; is the only party with authority to approve or deny a transfer request. If the client is the registered holder but the agency controls the account, the client has a formal path through the registrar’s support process, but the path is slower than a clean handoff.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Registrar Locks: &lt;code&gt;clientTransferProhibited&lt;/code&gt; and Friends
&lt;/h3&gt;

&lt;p&gt;Registrars set a lock status on domains to prevent unauthorized transfers, and many apply it by default or on request. ICANN’s policy lets a registrar apply &lt;code&gt;clientTransferProhibited&lt;/code&gt; only on registration or at the holder’s request, with the terms in the registration agreement.&lt;/p&gt;

&lt;p&gt;Two rules matter for offboarding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A registrar must let the holder remove the lock. If it offers no self-service toggle, it must remove the lock, and provide the Auth code, within &lt;strong&gt;five calendar days&lt;/strong&gt; of the holder’s request.&lt;/li&gt;
&lt;li&gt;A registrar generally cannot deny a transfer merely because the domain is locked, unless the holder had a reasonable opportunity to unlock it first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The mistake:&lt;/strong&gt; The agency emails the client an Auth code but leaves the domain locked. Or a registry-level hold exists that nobody checked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The result:&lt;/strong&gt; The transfer fails or stalls. Because the failure happens between two registrars, neither the agency nor the client sees an error until someone checks the transfer status.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Technical Anatomy of a Transfer Failure
&lt;/h2&gt;

&lt;p&gt;The Extensible Provisioning Protocol (EPP) defines the status codes registries and registrars use. ICANN’s guidance splits them into two families:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client&lt;/strong&gt; status codes are set by registrars.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server&lt;/strong&gt; status codes are set by registries and take precedence over client codes.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;EPP Status&lt;/th&gt;
&lt;th&gt;Set by&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;th&gt;How to resolve it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ok&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Registry&lt;/td&gt;
&lt;td&gt;No pending operations or prohibitions on the record.&lt;/td&gt;
&lt;td&gt;A transfer can proceed once you have the Auth code. Also confirm the registrar’s own rules in its dashboard.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;clientTransferProhibited&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Registrar&lt;/td&gt;
&lt;td&gt;The registrar lock is on and transfers are rejected.&lt;/td&gt;
&lt;td&gt;Turn off the registrar lock in the dashboard. If there is no toggle, ask the registrar to remove it (policy limit: five calendar days).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;clientUpdateProhibited&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Registrar&lt;/td&gt;
&lt;td&gt;Updates to the domain object, such as nameservers or contact records, are blocked.&lt;/td&gt;
&lt;td&gt;Turn off the update lock before changing nameservers or contacts.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;serverTransferProhibited&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Registry&lt;/td&gt;
&lt;td&gt;The registry is blocking transfers.&lt;/td&gt;
&lt;td&gt;Needs a conversation with the current registrar. Typical causes include a legal dispute (for example UDRP or a court order) or a paid registry-lock service. Some registries also use it for post-registration or post-transfer locks.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If a transfer is still rejected after you unlock the domain, check for a server-level status first, then for a registrar-imposed Change of Registrant lock. The second one may not appear as a status at all.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reading the Record Today: RDAP, Not WHOIS
&lt;/h3&gt;

&lt;p&gt;ICANN ended its contractual obligations for gTLD registries and registrars to provide WHOIS (port 43 and web-based WHOIS) on &lt;strong&gt;28 January 2025&lt;/strong&gt;. The replacement is the Registration Data Access Protocol (RDAP). ICANN provides a lookup at &lt;code&gt;lookup.icann.org&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Two practical points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An RDAP lookup reliably shows the registrar, registration dates, nameservers and EPP status codes.&lt;/li&gt;
&lt;li&gt;Registrant identity, including the registrant email, is &lt;strong&gt;typically redacted&lt;/strong&gt; in public results. You usually cannot audit the registrant email from a public lookup, so check it inside the registrar account instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Transfer Mechanics Worth Knowing
&lt;/h3&gt;

&lt;p&gt;These timings come from ICANN’s Transfer Policy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Five-day default approval.&lt;/strong&gt; The registry completes a requested transfer unless the current registrar sends a rejection within five calendar days. If the current registrar does nothing, the transfer proceeds. A registrar may deny a transfer only on specific grounds, such as evidence of fraud, a pending UDRP, a court order, or non-payment for a previous registration period on a domain past its expiration date.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Early-life locks.&lt;/strong&gt; A registrar may deny a transfer within 60 days of initial registration, or within 60 days after a previous inter-registrar transfer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Term extension.&lt;/strong&gt; A completed transfer adds one year to the existing registration, up to a maximum total of ten years.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Is Changing: ICANN’s 2026 Transfer Policy Overhaul
&lt;/h2&gt;

&lt;p&gt;Part of this guide may soon become outdated. The ICANN Board adopted the Transfer Policy Review working group’s 47 recommendations on &lt;strong&gt;7 June 2026&lt;/strong&gt;. Registrar and industry reporting describes the main changes as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Change of Registrant 60-day lock is removed.&lt;/li&gt;
&lt;li&gt;The post-registration and post-transfer lock shortens from 60 days to a fixed 30 days.&lt;/li&gt;
&lt;li&gt;The Auth code becomes a one-time Transfer Authorization Code (TAC), described by some registrars as valid for 14 days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;None of this is in force yet.&lt;/strong&gt; As of late October 2026, registrars report that implementation is pending and ICANN has not announced an effective date. The working group recommended an 18-month implementation window, and registrars expect the changes to be phased in. Until ICANN publishes an effective date, plan for the current rules and check ICANN’s Transfer Policy page before relying on the new ones.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 30-Day Pre-Offboarding Checklist
&lt;/h2&gt;

&lt;p&gt;Start a month before contract end. Discovering a 60-day hold or an access problem in week one still leaves room to work around it. Discovering it on the last day does not.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 1: Assessment and Audit (Day -30 to Day -21)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identify who holds the registrar account.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Note where each domain is registered, such as GoDaddy, Namecheap, Cloudflare or AWS.&lt;/li&gt;
&lt;li&gt;Confirm whether the domain sits in an agency master portfolio or a dedicated client account.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run an RDAP check.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Look up the domain at &lt;code&gt;lookup.icann.org&lt;/code&gt; or another RDAP client.&lt;/li&gt;
&lt;li&gt;Record the registrar, the creation date, the last transfer date, the expiry date and the EPP status codes.&lt;/li&gt;
&lt;li&gt;Confirm the domain is not within 60 days of initial registration or a previous inter-registrar transfer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit registrant details inside the registrar account.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Check the registrant name, organization and email. These are usually redacted publicly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do not edit them casually.&lt;/strong&gt; If a change is needed, first ask the registrar whether it offers an opt-out of the Change of Registrant lock, and use it &lt;em&gt;before&lt;/em&gt; submitting the change.&lt;/li&gt;
&lt;li&gt;If no opt-out exists, the safest sequence is to transfer first and change registrant details at the receiving registrar afterwards, as ICANN’s policy advises.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Stage 2: Access and Governance (Day -20 to Day -10)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verify login and MFA.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Test the registrar login now, not on handoff day.&lt;/li&gt;
&lt;li&gt;Confirm MFA is attached to a shared team vault or a monitored role mailbox, and not to one employee’s personal phone.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document DNS and plan the nameserver strategy.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Export all DNS records: A, CNAME, MX, TXT, SPF, DKIM and DMARC.&lt;/li&gt;
&lt;li&gt;Check whether the registrar also hosts DNS. A registrar transfer does not change DNS by itself, but if DNS lives at the old registrar, plan the move separately.&lt;/li&gt;
&lt;li&gt;If DNSSEC is enabled, plan the DS record handling before changing DNS providers.&lt;/li&gt;
&lt;li&gt;Lowering TTLs on critical records to 300 seconds is a common practice before DNS changes, because it speeds up propagation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check expiry and billing.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Make sure the domain is not expired or about to expire, and renew first if needed. Expired domains can run into registrar-specific rules, and non-payment for a prior registration period is one of the policy’s permitted grounds for denial.&lt;/li&gt;
&lt;li&gt;Clear any pending invoices or payment holds on the registrar account.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Stage 3: Handoff Execution (Day -9 to Day -1)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Unlock the domain.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Switch off the registrar transfer lock in the dashboard.&lt;/li&gt;
&lt;li&gt;Confirm with an RDAP lookup that &lt;code&gt;clientTransferProhibited&lt;/code&gt; has gone.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate and pass the Auth code securely.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Generate the code as close to the transfer as possible. Under the pending 2026 rules, codes are expected to be short-lived.&lt;/li&gt;
&lt;li&gt;Send it through a secret-sharing tool or a password manager’s share function, not plain email or chat.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Initiate and monitor the transfer.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;The client, as holder, submits the Auth code at the receiving registrar.&lt;/li&gt;
&lt;li&gt;Watch the registrant email inbox for confirmation requests and approve them promptly.&lt;/li&gt;
&lt;li&gt;Remember that the transfer will complete after five calendar days unless the current registrar rejects it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Stage 4: Post-Offboarding Verification (Day 0 and After)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verify, revoke and archive.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Confirm in an RDAP lookup that the registrar has changed.&lt;/li&gt;
&lt;li&gt;Remove former agency users, API keys and billing profiles from the old account.&lt;/li&gt;
&lt;li&gt;Archive a sign-off document signed by both parties.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Best Practices for Agencies and Clients
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For Agencies: Do Not Register Client Domains in Agency Portfolios
&lt;/h3&gt;

&lt;p&gt;The most common root cause of offboarding lockouts is &lt;strong&gt;co-mingling&lt;/strong&gt;. Agencies often register client domains under one agency registrar account because it is quick.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best practice:&lt;/strong&gt; Have the client create their own registrar account, and register the domain with the client as the registrant.&lt;/li&gt;
&lt;li&gt;Use delegated access to manage it. GoDaddy’s delegate access lets an account owner invite others without sharing passwords, and domain-level permissions can be set through folders. On AWS, use IAM roles in the client’s own account.&lt;/li&gt;
&lt;li&gt;Name a role-based, monitored address as the contact, for example &lt;code&gt;domains@clientcompany.com&lt;/code&gt;, and not an individual’s email.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For Clients: Own the Registrant Record
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Registered Name Holder&lt;/strong&gt; is the party ICANN’s policy recognizes as having authority to approve or deny a transfer. If an agency is listed as the registrant, the agency is the registered holder as far as the registrar is concerned.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best practice:&lt;/strong&gt; Review your domains at least annually in the registrar account. Make sure the registrant is your organization and the contact email is a monitored, non-personal address you control.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  If You Are Already Locked: The DNS Workaround
&lt;/h3&gt;

&lt;p&gt;If a 60-day lock has been triggered shortly before offboarding, you do not have to keep the client waiting or leave the website offline.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The workaround:&lt;/strong&gt; The 60-day lock restricts &lt;em&gt;inter-registrar transfers&lt;/em&gt;. It does not stop the domain from working or prevent the holder from changing nameservers or DNS records.&lt;/li&gt;
&lt;li&gt;Leave the domain at the current registrar for the lock period. Point DNS at the client’s new hosting or DNS provider, such as Cloudflare or Route 53, so the site and email move over now.&lt;/li&gt;
&lt;li&gt;Ask the registrar for the exact date the lock ends, set a reminder, and complete the registrar transfer once it lapses.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion: Turn Offboarding Friction into Professional Trust
&lt;/h2&gt;

&lt;p&gt;A lockout is rarely malicious. It usually comes from a few ordinary, avoidable gaps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a registrant field edited at the wrong time&lt;/li&gt;
&lt;li&gt;an account that only one departed person could open&lt;/li&gt;
&lt;li&gt;a lock nobody thought to check&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agencies that audit registrar access early, protect the registrant record and start the process 30 days out turn a high-risk handoff into a routine one. Clients that own their registrar accounts and keep their registrant details current remove the problem at the source.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-silent-registrar-lockout-how-agency-client-miscommunication-breaks-domain" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-silent-registrar-lockout-how-agency-client-miscommunication-breaks-domain&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
    </item>
    <item>
      <title>Operational &amp; Workflow Efficiency in 2026: The Ultimate Guide to Modern Business Productivity</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Sun, 25 Oct 2026 04:17:10 +0000</pubDate>
      <link>https://dev.to/instarenewal/operational-workflow-efficiency-in-2026-the-ultimate-guide-to-modern-business-productivity-2706</link>
      <guid>https://dev.to/instarenewal/operational-workflow-efficiency-in-2026-the-ultimate-guide-to-modern-business-productivity-2706</guid>
      <description>&lt;p&gt;Organizations now have more software, data, and automation options than at any point in business history, yet many employees still feel buried in administrative friction. Asana’s Anatomy of Work research found that knowledge workers spent 58% of their day on “work about work” in its 2023 index, which covers chasing status updates, searching for information, switching between apps, and managing shifting priorities. In earlier editions the figure was 60%. These are self-reported survey results, but the pattern has been consistent for years: more tools have not automatically meant less friction.&lt;/p&gt;

&lt;p&gt;Real &lt;strong&gt;operational and workflow efficiency&lt;/strong&gt; is therefore not just about cutting costs or squeezing extra hours out of a workforce. It means designing systems in which people and automation each do what they are best at. The 2026 picture is also more nuanced than the hype suggests. According to McKinsey’s &lt;em&gt;State of AI in 2025&lt;/em&gt; survey (fielded in mid-2025), 88% of organizations use AI in at least one business function, but nearly two-thirds have not begun scaling AI across the enterprise. McKinsey also found that 23% of organizations were scaling an agentic AI system somewhere in the business, with another 39% experimenting, and that no more than 10% reported scaling agents in any single function.&lt;/p&gt;

&lt;p&gt;This guide covers the definitions, frameworks, current trends, and practical steps for improving how work actually flows through your organization.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Defining the Pillars: Operational vs. Workflow Efficiency
&lt;/h2&gt;

&lt;p&gt;The two terms are often used interchangeably, but they operate at different scales.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+--------------------------------------------------------------------------+
|                       THE EFFICIENCY ECOSYSTEM                           |
|                                                                          |
|  [Operational Efficiency] ---&amp;gt; Macro View: Resources, Costs, ROI         |
|         |                                                                |
|         v                                                                |
|  [Workflow Efficiency]    ---&amp;gt; Micro View: Task Handoffs, Speed, Routing |
+--------------------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Operational Efficiency (The Macro View)
&lt;/h3&gt;

&lt;p&gt;Operational efficiency measures how well an organization uses its resources (labor, capital, technology, and materials) to produce goods or services. It asks: &lt;em&gt;Are we maximizing output while minimizing waste, overhead, and operating costs?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow Efficiency (The Micro View)
&lt;/h3&gt;

&lt;p&gt;Workflow efficiency focuses on the specific sequence of steps, tasks, data handoffs, and approvals needed to complete one business process. It asks: &lt;em&gt;How smoothly does a customer request, an invoice, or a product change move from start to finish without getting stuck?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Operational efficiency sets the strategic frame, and &lt;strong&gt;workflow efficiency is the mechanism that delivers it&lt;/strong&gt;. If workflows are clogged with manual data entry, redundant approvals, and communication silos, broader operational metrics will suffer.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The 2026 Shift: From Static Rules to Agentic Systems
&lt;/h2&gt;

&lt;p&gt;For decades, workflow automation relied on rigid “if-this-then-that” rules. If a form was submitted, an email was sent. If a required field was blank, the process stalled until a person stepped in.&lt;/p&gt;

&lt;p&gt;Agentic AI changes the design options, though it is still maturing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous AI agents:&lt;/strong&gt; Unlike a script that executes one fixed instruction, an AI agent is given a goal, breaks it into steps, uses software tools to carry them out, and adjusts when something unexpected happens. McKinsey’s survey defines agents as systems “capable of acting in the real world, planning and executing multiple steps in a workflow.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-agent collaboration:&lt;/strong&gt; Rather than isolated bots, some organizations are experimenting with specialized agents working in parallel, for example one handling data intake, another updating the CRM, and a third checking quality. This remains an emerging pattern rather than a settled best practice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standardized connectivity (MCP):&lt;/strong&gt; The Model Context Protocol, introduced by Anthropic, is an open standard for connecting AI models to external tools, data sources, and applications. In December 2025, Anthropic donated MCP to the Agentic AI Foundation, a directed fund under the Linux Foundation co-founded by Anthropic, Block, and OpenAI, with support from Google, Microsoft, AWS, Cloudflare, and Bloomberg. A shared standard reduces the amount of custom integration work, though connecting agents to legacy systems still takes planning, access controls, and testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A Reality Check on the Hype
&lt;/h3&gt;

&lt;p&gt;Analysts urge caution. Gartner predicted in June 2025 that over 40% of agentic AI projects will be canceled by the end of 2027, citing escalating costs, unclear business value, and inadequate risk controls. It also warned of “agent washing,” where vendors relabel chatbots, assistants, and RPA tools as agentic, and estimated that only about 130 of the thousands of vendors claiming agentic capabilities offer genuine ones. Gartner still expects the technology to grow in importance. It predicts that by 2028, at least 15% of day-to-day work decisions will be made autonomously through agentic AI (up from 0% in 2024), and that 33% of enterprise software applications will include agentic AI.&lt;/p&gt;

&lt;p&gt;The takeaway is not to avoid agents but to apply them where there is a clear, measurable payoff. Gartner’s own advice is to pursue agentic AI only where it delivers clear value or ROI and to focus on enterprise-level productivity rather than individual task augmentation. McKinsey likewise found that the small group of high performers is more likely to be redesigning workflows rather than layering AI on top of existing ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Core Strategies to Transform Operational and Workflow Efficiency
&lt;/h2&gt;

&lt;p&gt;Five strategies help remove friction and scale sustainably.&lt;/p&gt;

&lt;h3&gt;
  
  
  Strategy 1: Process Mapping and Value Stream Analysis
&lt;/h3&gt;

&lt;p&gt;You cannot optimize what you do not understand, and automating a broken process just makes it fail faster.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Value Stream Mapping (VSM):&lt;/strong&gt; A lean technique that visualizes every step a request, product, or project passes through from start to delivery, separating value-adding steps from waiting and handoffs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identify waste:&lt;/strong&gt; Lean thinking, which originated in the Toyota Production System, traditionally names seven wastes: transportation, inventory, motion, waiting, overproduction, over-processing, and defects. Many practitioners add an eighth, unused employee talent. In knowledge work, these translate into things like duplicate data entry, approval queues, unnecessary meetings, and rework.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document and standardize:&lt;/strong&gt; Once redundant steps are removed, write down the streamlined workflow so everyone works from a single source of truth.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Strategy 2: Hyperautomation for End-to-End Processes
&lt;/h3&gt;

&lt;p&gt;Gartner popularized the term &lt;strong&gt;hyperautomation&lt;/strong&gt; for a business-driven, disciplined approach to identifying and automating as many business and IT processes as possible. In practice, it means combining tools such as RPA, workflow engines, process mining, AI, and system integrations to automate whole chains of work rather than isolated tasks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Instead of only automating invoice generation, a hyperautomated order-to-cash workflow might capture orders from email, a web portal, or EDI, validate tax details, generate the invoice, match incoming payments to the ledger, and flag exceptions for the finance team to review.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Strategy 3: Shift from Reactive Fixing to Predictive Optimization
&lt;/h3&gt;

&lt;p&gt;Traditional operations react to bottlenecks after they cause delays. Predictive analytics aims to surface them earlier.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forecasting:&lt;/strong&gt; Machine learning models trained on historical operational data can forecast seasonal demand, support-ticket surges, or supply delays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proactive adjustments:&lt;/strong&gt; Forecasts can trigger staffing changes, task reassignment, or earlier purchase orders. Gains vary widely by process and data quality, so treat vendor-claimed improvement percentages with caution and measure the effect against your own baseline in a pilot.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Strategy 4: Cross-Functional Collaboration and Distributed Ownership
&lt;/h3&gt;

&lt;p&gt;Efficiency is a cultural discipline, not just an IT or operations project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Break down silos:&lt;/strong&gt; When sales, marketing, finance, and support work from separate data, handoffs break. Shared dashboards and integrated systems give everyone the same real-time view.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable citizen developers:&lt;/strong&gt; Low-code and no-code tools let frontline employees build or suggest small automations, since they see workflow friction firsthand. Gartner predicted that by 2026, developers outside formal IT departments would account for at least 80% of the user base for low-code development tools, up from 60% in 2021. This only works with governance: approved platforms, access controls, and IT review for anything touching sensitive data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Strategy 5: Continuous Improvement with PDCA
&lt;/h3&gt;

&lt;p&gt;Operational excellence is ongoing work. The &lt;strong&gt;Plan-Do-Check-Act (PDCA)&lt;/strong&gt; cycle, long associated with quality pioneers W. Edwards Deming and Walter Shewhart, provides a simple structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plan:&lt;/strong&gt; Identify an inefficiency and define the expected outcome.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do:&lt;/strong&gt; Test the change on a small pilot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check:&lt;/strong&gt; Compare results with baseline KPIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act:&lt;/strong&gt; Standardize what worked, or adjust and try again.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Key Performance Indicators (KPIs) to Track Success
&lt;/h2&gt;

&lt;p&gt;Choose metrics that reflect speed, quality, and cost rather than vanity numbers. Exact definitions vary by organization, so write yours down before you start measuring.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;What It Measures&lt;/th&gt;
&lt;th&gt;Why It Matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cycle Time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Total time to complete a workflow from start to finish.&lt;/td&gt;
&lt;td&gt;Shows speed and where requests stall.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Error &amp;amp; Rework Rate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;How often work must be corrected or redone.&lt;/td&gt;
&lt;td&gt;High rates point to unclear instructions or bad input data.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost per Transaction&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Total cost to process one unit of work (such as an invoice or ticket).&lt;/td&gt;
&lt;td&gt;Reflects cost efficiency and scalability.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;First-Pass Yield (FPY)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Share of items that complete a process correctly the first time, with no rework.&lt;/td&gt;
&lt;td&gt;Indicates baseline process quality. A manufacturing term often adapted to knowledge work as a “first-time-right” rate.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Output per Employee&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Volume of completed work relative to headcount or hours.&lt;/td&gt;
&lt;td&gt;Helps track the effect of reduced administrative burden. Interpret it alongside quality metrics so speed is not rewarded over accuracy.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro Tip:&lt;/strong&gt; Do not track dozens of metrics at once. Pick three to five that map directly to your biggest pain points, capture a baseline before changing anything, and review them regularly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  5. Common Pitfalls in Workflow Optimization
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automating broken processes:&lt;/strong&gt; Applying automation or AI agents to a poorly understood workflow speeds up the mess. Map and simplify the human process first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ignoring change management:&lt;/strong&gt; New tools fail when people resist them. Explain &lt;em&gt;why&lt;/em&gt; changes are happening, train people properly, and gather feedback early.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creating new data silos:&lt;/strong&gt; Disconnected point solutions fragment the experience. Favor tools with strong integrations and a shared data layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Over-automation without oversight:&lt;/strong&gt; In high-stakes areas such as compliance, finance, and sensitive customer data, keep human checkpoints. McKinsey’s survey found that 51% of respondents had experienced at least one negative consequence from AI use, with inaccuracy the most commonly reported problem (30%), followed by cybersecurity concerns (10%) and regulatory compliance issues (8%).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chasing hype:&lt;/strong&gt; Given Gartner’s warning about agent washing and project cancellations, run small pilots with clear success criteria before committing to large rollouts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Conclusion: Your Next Steps for Operational Excellence
&lt;/h2&gt;

&lt;p&gt;Operational and workflow efficiency supports sustainable growth. Organizations that map their processes, remove unnecessary steps, apply automation where it clearly pays off, and keep humans involved in high-stakes decisions are best placed to cut administrative load and free their teams for higher-value work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Action Plan for Leaders
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit your leakage:&lt;/strong&gt; Identify the two or three processes where you lose the most time, money, or customer goodwill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Map and simplify:&lt;/strong&gt; Document those workflows and remove redundant approvals and handoffs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pilot smart automation:&lt;/strong&gt; Introduce targeted automation or agentic tools for repetitive, rule-based tasks, with clear human oversight and a measurable success criterion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measure and scale:&lt;/strong&gt; Compare results with your baseline KPIs, gather team feedback, and iterate.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;How is your organization currently tackling workflow bottlenecks or integrating automation into daily operations?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/operational-workflow-efficiency-in-2026-the-ultimate-guide-to-modern-business" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/operational-workflow-efficiency-in-2026-the-ultimate-guide-to-modern-business&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
    </item>
    <item>
      <title>The “Net 30 vs. Renewal Day” Mismatch: How to Align Client Payment Terms with Hard Expiry Deadlines</title>
      <dc:creator>Memo</dc:creator>
      <pubDate>Sat, 24 Oct 2026 01:53:08 +0000</pubDate>
      <link>https://dev.to/instarenewal/the-net-30-vs-renewal-day-mismatch-how-to-align-client-payment-terms-with-hard-expiry-deadlines-5d9m</link>
      <guid>https://dev.to/instarenewal/the-net-30-vs-renewal-day-mismatch-how-to-align-client-payment-terms-with-hard-expiry-deadlines-5d9m</guid>
      <description>&lt;p&gt;Running a digital, creative, or dev agency carries a quiet financial trap: &lt;strong&gt;the gap between client payment terms and third-party renewal deadlines&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Suppose your agency grants a retainer client standard &lt;strong&gt;Net 30&lt;/strong&gt; terms. On &lt;strong&gt;October 1&lt;/strong&gt;, you invoice $15,000 for retainer work. The invoice also covers a $2,500 annual renewal (a domain portfolio, a certificate subscription, or a software license) that the vendor will charge on &lt;strong&gt;October 31&lt;/strong&gt;. On paper, Net 30 lands the client’s payment on October 31, the same day the vendor needs its money. A bank transfer that is sent on the due date may not clear for several business days. And if the client’s accounts payable (AP) team runs on its own cycle, the money may not arrive until mid-November.&lt;/p&gt;

&lt;p&gt;The vendor will not wait for your client’s approval chain. To keep production environments online, agency owners often put the renewal on their own card and wait for the receivable to settle. That quietly turns the agency into an interest-free lender for the client, uses up its credit limit, and exposes it to the risk that the client never pays.&lt;/p&gt;

&lt;p&gt;This guide explains why the mismatch happens, which deadlines are truly “hard” and which have a grace window, and how to restructure billing and contracts so your agency stops financing its clients’ infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Deconstructing the Mismatch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Net 30 is a hope, not a payment date
&lt;/h3&gt;

&lt;p&gt;Net 30 means the invoice is due 30 days after issue. Real payment behavior runs later:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Atradius’s 2025 Payment Practices Barometer for the US surveyed 240 companies. It reported average B2B payment terms of 45 days and found that 43% of B2B invoice value was overdue. Suppliers cited the customer’s own liquidity problems (45%) and delays in the customer’s payment process (33%) as top reasons for late payment.&lt;/li&gt;
&lt;li&gt;Intrum’s 2026 European Payment Report found that European B2B suppliers typically give customers 43 days to pay but are paid after about 63 days. That is a 20-day gap, up from 16 days in 2023.&lt;/li&gt;
&lt;li&gt;In the EU, the existing Late Payment Directive sets a 30-day default that parties can extend to 60 days or more if the term is not “grossly unfair” to the creditor. A proposal to cap standard B2B terms at 30 days was reported in 2026 as stalled in the Council of the EU.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are survey averages, and your clients may pay faster or slower. The point is that an invoice due on day 30 can’t be relied on to arrive on day 30.&lt;/p&gt;

&lt;h3&gt;
  
  
  “Hard expiry” depends on the asset
&lt;/h3&gt;

&lt;p&gt;Not every vendor deadline is a cliff, and not every cliff looks the same. Mapping each asset’s real consequence is the first step in deciding how early you need the client’s money.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Asset&lt;/th&gt;
&lt;th&gt;What happens if the renewal isn’t paid on time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Domains (gTLDs such as .com)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Usually a grace window, not an instant loss, but the site and email often stop working. Many registrars park the domain once it expires. Under ICANN’s Expired Registration Recovery Policy (ERRP), the registrant must be allowed to renew after expiry, at least through the period when DNS resolution is interrupted. After deletion, gTLD registries must offer a 30-day Redemption Grace Period, during which DNS resolution is disabled. A short pending-delete period follows, and then the name can be registered by anyone.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Public TLS/SSL certificates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The certificate’s expiry date is the cliff. Browsers warn visitors once a certificate has expired.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cloud and hosting accounts&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Varies by provider. Cloudflare retries a failed renewal five times over five days. After a 5-day grace period it downgrades the account to the Free plan, which does not suspend the website but removes paid features. AWS can suspend an account over unpaid charges. Its support guidance says a suspended account must be reinstated within 30 days, and that reactivation after payment can take up to 24 hours.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SaaS and software licenses&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vendor-specific. Check each vendor’s terms for grace periods and what degrades first.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Domain grace periods also vary by registrar and TLD. For example, Route 53 allows late renewal of a .com until 44 days after expiration, then deletes it from Route 53 on day 45. A registry restoration window runs from day 45 to day 75. Some registries charge a large premium to restore expired domains.&lt;/p&gt;

&lt;p&gt;These grace windows are not a reason to pay late. Domains in a redemption or restoration window cost more, and a lapsed name that reaches pending delete can be registered by someone else. Some registrars also charge early. Route 53, for example, auto-renews most domains 35 days before expiration, which is earlier than many agencies assume.&lt;/p&gt;

&lt;p&gt;Certificate lifetimes are also shrinking, which makes “annual SSL” billing more nuanced. Under CA/Browser Forum Ballot SC-081v3, the maximum validity of publicly trusted TLS certificates fell from 398 to 200 days on March 15, 2026. It drops to 100 days on March 15, 2027 and to 47 days on March 15, 2029. A certificate vendor’s annual license is often separate from the certificate itself. Billing follows the license term, while the certificate is reissued several times a year.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why agencies end up floating the cost
&lt;/h3&gt;

&lt;p&gt;When the agency’s own card or reseller account sits behind a client’s renewal, the agency carries the liability. If the client pays late, the agency has two bad options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Front the capital&lt;/strong&gt;, using agency cash or credit as an uncompensated bank for the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Let the service lapse&lt;/strong&gt;, risking downtime, lost revenue, and reputational damage that the client may blame on the agency.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Key Risks of Floating Infrastructure Costs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A. Working capital depletion
&lt;/h3&gt;

&lt;p&gt;Each fronted renewal ties up agency cash until the client pays. Across many clients, renewals tend to cluster around the same quarter or month, so the exposure can add up quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  B. Distorted financial metrics
&lt;/h3&gt;

&lt;p&gt;Pass-through costs affect how your books look. Under US GAAP (ASC 606), whether an agency reports a third-party charge gross or net depends on whether it is acting as a &lt;strong&gt;principal&lt;/strong&gt; or an &lt;strong&gt;agent&lt;/strong&gt;. The test is whether the agency controls the specified good or service before it is transferred to the customer. Indicators include who is primarily responsible for fulfilling the promise and who has latitude to set the price. If the agency is a principal, it records revenue gross and the vendor cost as an expense, which inflates top-line revenue and compresses margin percentages. If it is an agent, it records only its fee. The right treatment depends on your contracts and facts, so confirm it with your accountant. Charging renewals to agency cards also reduces the credit available for payroll, ad spend, and other operating needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  C. Default and insolvency exposure
&lt;/h3&gt;

&lt;p&gt;If a client disputes an invoice, terminates the contract, or becomes insolvent after you have paid a vendor on its behalf, the agency may be left as an unsecured creditor for amounts it fronted. If the account is in the agency’s name, the vendor looks to the agency for payment.&lt;/p&gt;

&lt;h3&gt;
  
  
  D. Scope drift and liability creep
&lt;/h3&gt;

&lt;p&gt;Without contractual boundaries, clients come to treat the agency as their payment gateway. When a card fails or an invoice stalls and a service lapses, the agency is often blamed, even if the client never paid.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Structural Solutions
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+--------------------------------------------------------------------------+
|                    INFRASTRUCTURE BILLING MODELS                         |
+-------------------------------------+------------------------------------+
| 1. Direct Client Ownership          | Client holds the vendor account    |
|    (Preferred)                      | and billing; agency is an admin.   |
+-------------------------------------+------------------------------------+
| 2. Advance Pass-Through Invoicing   | Agency invoices 60 days before     |
|    (the 60/30 rule)                 | expiry; payment due at day -30.    |
+-------------------------------------+------------------------------------+
| 3. Pre-Funded Deposit               | Client keeps a balance the agency  |
|    (Escrow-style reserve)           | draws down for vendor bills.       |
+-------------------------------------+------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Solution A: Client-owned accounts (preferred)
&lt;/h3&gt;

&lt;p&gt;The cleanest fix is to separate infrastructure ownership from agency billing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client creates the accounts.&lt;/strong&gt; The client opens accounts directly with registrars, hosts, and SaaS vendors, using its own payment method and its own organization as the registrant or account owner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agency works through delegated access.&lt;/strong&gt; Use the vendor’s access model rather than shared logins, such as AWS IAM roles, Cloudflare account memberships, or team invitations. Some vendors let you split billing from administration. Cloudflare, for example, has a Billing role that can view invoices and manage payment methods but can’t change subscriptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Result.&lt;/strong&gt; The payment relationship runs between client and vendor. The agency bills for management and engineering under normal terms. Even so, you should still track the renewal dates, because the client’s card can still fail.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Solution B: Advance invoicing (the 60/30 rule)
&lt;/h3&gt;

&lt;p&gt;When clients want the agency to handle billing, invoice third-party renewals on a different schedule from the retainer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Retainer services:&lt;/strong&gt; standard terms (for example, Net 30).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Third-party renewals:&lt;/strong&gt; invoice &lt;strong&gt;60 days before&lt;/strong&gt; the vendor’s charge date, due in &lt;strong&gt;30 days&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Day -60                       Day -30                       Day 0
   |                             |                             |
   v                             v                             v
Agency issues             Client payment due           Vendor renewal date
renewal invoice           (funds should be cleared)    (agency pays from funds
(Net 30)                                                 already received)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This puts cleared client funds in the agency’s account about 30 days before the vendor needs them, which leaves room for late-paying clients. Adjust the lead time to the vendor. If a registrar charges early, as Route 53 does 35 days before expiry, lengthen the window, for example to 75 or 90 days. If a vendor allows multi-year registrations, you can also invoice for a longer term (many registries allow up to 10 years) and reduce how often you face this deadline.&lt;/p&gt;

&lt;h3&gt;
  
  
  Solution C: Pre-funded reserve
&lt;/h3&gt;

&lt;p&gt;For consumption-based or unpredictable costs, such as cloud compute, transactional email, or paid APIs, consider an &lt;strong&gt;infrastructure deposit&lt;/strong&gt; held for the client’s third-party spend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Size the deposit to the exposure, for example two to three months of estimated vendor charges.&lt;/li&gt;
&lt;li&gt;Draw from it to pay vendor bills, and invoice monthly to replenish it.&lt;/li&gt;
&lt;li&gt;Set a minimum threshold below which the agency pauses optional services or requests a top-up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Usage-based charges are typically billed in arrears. Cloudflare, for example, bills metered usage after the period closes, so the deposit should cover the bill that is about to arrive, not just the previous month. Have your accountant or attorney confirm how the deposit should be held and recorded in your jurisdiction.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Contract Clauses
&lt;/h2&gt;

&lt;p&gt;Your agreement should clearly separate &lt;strong&gt;agency service fees&lt;/strong&gt;, which are earned for labor, from &lt;strong&gt;third-party pass-through expenses&lt;/strong&gt;, which are vendor charges. The sample language below is a starting point only. Have a qualified attorney adapt it to your jurisdiction, because enforceability and liability limits vary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clause 1: Advance payment for third-party expenses
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Third-Party Expenses.&lt;/strong&gt; &lt;em&gt;Client acknowledges that third-party services, including domain registrations, web hosting, cloud infrastructure, SSL/TLS certificates, software licenses, and APIs (“Third-Party Expenses”), are billed by their vendors on schedules Agency does not control. Notwithstanding any Net 30 or other credit terms applicable to Agency’s service fees, Client shall pay all Third-Party Expenses invoiced by Agency no later than thirty (30) days before the vendor’s renewal or charge date. Agency is not required to advance funds for Third-Party Expenses.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Clause 2: Notice and right to let a service lapse
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Non-Payment of Third-Party Expenses.&lt;/strong&gt; &lt;em&gt;If Client has not paid a Third-Party Expense by the due date, Agency will send written notice to Client’s designated contacts. If payment is not received at least fifteen (15) days before the vendor’s renewal date, Agency may decline to renew the affected service. To the extent permitted by law, Agency is not liable for service interruption, data loss, or resulting damages arising from non-renewal caused by Client’s failure to pay.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pair this clause with practical safeguards. If the agency is the registrant or account holder of record, letting a client’s domain lapse is far riskier than if the client holds the registration, because the client can still argue the agency was responsible for it. Document every notice. Remember also that a lapsed domain can eventually be picked up by someone else, so the “right to lapse” is a last resort, not a plan.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clause 3: Handling fee
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Handling Fee.&lt;/strong&gt; &lt;em&gt;Where Agency, at Client’s request, pays or administers Third-Party Expenses on Client’s behalf, Client shall pay a non-refundable handling fee of [__]% of the vendor’s charge.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Set the percentage to reflect your real administrative cost and market norms for your clients. Whether this fee is a service fee, and how it affects gross-versus-net reporting, is a question for your accountant.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Standard Operating Procedure for Renewal Billing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;              THIRD-PARTY RENEWAL BILLING WORKFLOW

T-60   Issue a dedicated pass-through invoice, due at T-30.
T-45   Friendly reminder to the client's AP contact and account owner.
T-30   Invoice due. Confirm funds received (not just "payment sent").
T-20   Past-due notice to the AP team and the account owner.
T-15   Final written warning that the service will not be renewed
       by the agency if payment is not received.
T-10   Escalate to an executive stakeholder at the client.
T-0    Paid:   renew from received funds.
       Unpaid: follow the contract. Do not renew, and keep records.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Maintain a master expiry ledger
&lt;/h3&gt;

&lt;p&gt;Track every domain, host, certificate, and license across all clients in one place. A spreadsheet, a database, or your PSA or accounting software all work. For each asset, record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Client name and primary billing contact&lt;/li&gt;
&lt;li&gt;Asset type (domain, hosting, SSL, API, license)&lt;/li&gt;
&lt;li&gt;Vendor, account owner, and who holds the payment method&lt;/li&gt;
&lt;li&gt;Renewal date and the vendor’s own auto-renew timing&lt;/li&gt;
&lt;li&gt;Invoice date, invoice status, and payment status&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Keep pass-through invoices separate
&lt;/h3&gt;

&lt;p&gt;Don’t combine monthly retainers and annual renewals on the same invoice. A single invoice inherits one due date, and a late retainer approval then delays the renewal money. Issue pass-through renewals as &lt;strong&gt;separate invoices&lt;/strong&gt; with their own earlier due dates.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verify who actually receives vendor notices
&lt;/h3&gt;

&lt;p&gt;Vendor expiry warnings go to whatever email is on the account. If the account sits with a former employee or a personal mailbox, the warning may never reach anyone who can act on it. Route renewal notices to a shared agency alias, and also to the client’s billing contact where the client owns the account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison: Billing Models at a Glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Main advantage&lt;/th&gt;
&lt;th&gt;Agency financial exposure&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Client-owned accounts&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The client pays the vendor directly&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Lowest&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core hosting, cloud accounts, SaaS subscriptions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;60-day advance pass-through&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Works with client AP cycles and protects cash flow&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Low&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Domain renewals, certificate subscriptions, dedicated hosting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pre-funded deposit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Keeps services running without the agency lending&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Low&lt;/strong&gt;, if the deposit covers the exposure&lt;/td&gt;
&lt;td&gt;Metered compute, email, and API usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Renewals bundled into a Net 30 retainer invoice&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One invoice per client&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;High&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Not recommended for expiry-critical renewals&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Summary Checklist for Agency Leadership
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit existing agreements.&lt;/strong&gt; Review your MSAs and SOWs for a clear split between agency fees and pass-through costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Map each asset’s real deadline.&lt;/strong&gt; Note which services have grace windows and which stop immediately, using each vendor’s documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shift ownership where you can.&lt;/strong&gt; Move billing and account ownership to the client wherever feasible, and keep administrative access through delegated roles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-time your invoices.&lt;/strong&gt; Invoice renewals at least 60 days ahead, and longer for vendors that charge early.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write notice and non-renewal terms into contracts.&lt;/strong&gt; Have counsel review them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track dates centrally.&lt;/strong&gt; Keep a single ledger of renewal dates, account owners, and who pays.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Sources and Further Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://lonelyentrepreneur.com/founder-days-to-get-paid/" rel="noopener noreferrer"&gt;Atradius Payment Practices Barometer: US 2025 findings (as summarized by The Lonely Entrepreneur)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://trans.info/en/hauliers-payment-gap-472210" rel="noopener noreferrer"&gt;Intrum 2026 European Payment Report (as reported by Trans.info)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://trans.info/en/spanish-carriers-reach-record-payment-speed-as-eu-reform-stalls-504039" rel="noopener noreferrer"&gt;EU late payment reform status (Trans.info)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://new.icann.org/resources/pages/errp-2024-02-21-en" rel="noopener noreferrer"&gt;ICANN Expired Registration Recovery Policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/com.html" rel="noopener noreferrer"&gt;Amazon Route 53: .com renewal and restoration deadlines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/en_en/Route53/latest/DeveloperGuide/domain-renew.html" rel="noopener noreferrer"&gt;Amazon Route 53: renewing registration for a domain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/billing/troubleshoot-failed-payments" rel="noopener noreferrer"&gt;Cloudflare: troubleshooting failed payments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/billing/understand/faq/" rel="noopener noreferrer"&gt;Cloudflare: billing FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.repost.aws/knowledge-center/reactivate-suspended-account" rel="noopener noreferrer"&gt;AWS re:Post: reactivating a suspended account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ssl.com/article/ssl-certificate-validity-changes-what-you-need-to-know/" rel="noopener noreferrer"&gt;SSL.com: certificate validity changes under SC-081v3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://revenuehub.org/principalagent-considerations-gross-vs-net" rel="noopener noreferrer"&gt;ASC 606 principal versus agent considerations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://instarenewal.com/blog/the-net-30-vs-renewal-day-mismatch-how-to-align-client-payment-terms-with-hard" rel="noopener noreferrer"&gt;https://instarenewal.com/blog/the-net-30-vs-renewal-day-mismatch-how-to-align-client-payment-terms-with-hard&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
    </item>
  </channel>
</rss>
