Authentication was eating 30% of our sprint capacity

engineering technical-debt authentication sso saml
S
Social9 Engineering

Engineering Team

 
September 12, 2026
12 min read
Authentication was eating 30% of our sprint capacity

TL;DR

  • Three login flows, 2,000 customers, and $180K of enterprise deals stalled on SAML. What our homegrown auth was really costing us.

Nobody designs three authentication flows. You arrive at them one reasonable decision at a time, and by the time we had scaled from 200 to 2,000 business customers those three flows were consuming 30% of our engineering sprint capacity. Nearly a third of everything we built, going into a system no customer has ever named as a reason they chose us. Then $180,000 in enterprise ARR stalled on SAML, and the argument ended.

Social9 is a social media management platform for marketing agencies and in-house social teams - scheduling, publishing, analytics and collaboration across LinkedIn, X, Facebook and Instagram.

This post is not about any of that. It is about the least glamorous system we own, and how it quietly became the most expensive one.

Key Takeaways

  • Three login flows, each individually defensible, together a standing tax: every security change had to be made three times.
  • The real cost was not any single bug. It was 30% of sprint capacity, on a system with no user-facing value.
  • Technical debt stays deferrable while it only hurts you. Ours stopped being deferrable at $180,000 in stalled ARR on a 30-day buyer timeline we did not control.
  • Consolidation took six weeks in four phases with zero downtime. No user was asked to reset a password or re-authenticate.
  • Six months later: sprint capacity on auth 30% to under 5%, enterprise SSO customers 0 to 37, onboarding 8 minutes to 2 minutes.
  • "We should refactor authentication" loses every prioritisation meeting. "Authentication is consuming 30% of our sprint capacity and has stalled $180K" wins. Same project, one hour of arithmetic apart.

How you end up with three login flows

Nobody designs three authentication flows. You arrive at them, one reasonable decision at a time.

The first one is the original: email and password, written early, when we had a couple of hundred customers and login was a thing we needed rather than a thing we thought about. It worked fine.

The second arrives when someone asks for social sign-in. Signing in with an account users already have is genuinely better for them, and the integration is not hard. But it is not the same code path - different session establishment, different account state, different edge cases. So it becomes its own flow, sitting alongside the first, sharing some of it.

The third arrives with a customer big enough to have requirements. Something bespoke gets built for them, on a deadline, and it never gets folded back in because there is always something more urgent than refactoring authentication that currently works.

Now you have three. Each was defensible. Together they are a liability, and by the time we had scaled from 200 to 2,000 business customers the bill was arriving in four ways:

Four recurring costs of maintaining three parallel authentication flows Four costs are listed. Every security change must be implemented three times, once per flow. The flows behave differently in ways users notice. Bugs are expensive to locate because you must first work out which of three paths a user is on. And no single engineer holds the whole picture, because the person who wrote the first flow is not the person who wrote the third. A bar below shows that together these consumed thirty percent of engineering sprint capacity. Three flows, four standing costs Every security change is three changes Session expiry. Password policy. Rate limiting. The flows disagree, and users notice Individually trivial. Collectively: unfinished. Bugs are expensive to even locate "I can't log in" starts with: which path is this? Nobody holds the whole picture Reviewing a change means reconstructing intent Sprint capacity consumed by authentication 30% of everything we built, with no user-facing value Not any individual bug. The standing tax.
The bar is the number that ended the internal argument. It had been true for a long time before anyone added it up.

Every security change is three changes. Session expiry, password policy, rate limiting on login - you implement each one three times, and you find out you missed one when a customer reports something odd.

The flows disagree in ways users notice. Sign in one way and you land somewhere; sign in another way and the experience differs slightly. Individually trivial. Collectively they read as a product that is not quite finished.

Bugs are expensive to even locate. "I cannot log in" starts with working out which of three paths this user is on, which is not always obvious from the data.

Nobody holds the whole picture. The person who wrote the first flow is not the person who wrote the third. Reviewing a change to any of them means reconstructing intent from code.

Here is the number that ended the argument internally: authentication was consuming 30% of our engineering sprint capacity. Nearly a third of everything we built, going into a system with no user-facing value, that no customer has ever named as a reason they chose us.

That is the real cost of auth debt. Not any individual bug - the standing tax.

Then it stopped being an internal problem and started being $180K

Technical debt is easy to defer because it only hurts you. It stops being deferrable when it starts costing revenue.

For us that was two enterprise deals worth $180,000 in combined ARR, both stalled on SAML single sign-on, both with a 30-day timeline attached.

A large agency or an enterprise social team does not treat SSO as a preference. Their security policy requires that access to every SaaS tool is federated through their identity provider and revoked centrally when someone leaves. If you cannot do that, you are not a vendor they are permitted to buy, regardless of how much the team using the product wants you.

And the timelines are not ours to set. A buyer with a thirty-day window is not being difficult; they are working to a quarter or a contract end date. "We can build that next quarter" is a no.

Building SAML properly into three separate authentication flows was not something we were going to do in thirty days. That was the moment the conversation changed from "we should clean this up eventually" to a decision with a number attached.

Six weeks, four phases, zero downtime

We consolidated onto SSOJet over six weeks, in phases, without downtime.

Six-week authentication consolidation in four phases A four-phase plan. Weeks one and two, foundation: core authentication onto one implementation covering email and password, multi-factor, password reset and session management. Week three, social sign-in across Google, Microsoft, LinkedIn and Facebook with account linking. Weeks four and five, enterprise single sign-on using SAML 2.0 and OIDC against Azure AD, Okta and Google Workspace. Week six, team management with workspace isolation, role-based permissions and invitation flows. Consolidation came before the new capability was added, and there was no downtime. Consolidate first, then add Weeks 1-2 Foundation: one flow Week 3 Social sign-in Weeks 4-5 Enterprise SSO Week 6 Team management Email/password, MFA, reset, sessions. Every later decision becomes one decision. Google, Microsoft, LinkedIn, Facebook, plus account linking - the hard part. SAML 2.0 and OIDC vs Azure AD, Okta, Google Workspace. The deal blocker. Workspace isolation, roles, invitations - fitted to the agency org chart. Zero downtime. No forced password reset. No forced re-authentication.
Enterprise SSO is phase three, not phase one. Bolting it onto three flows would have produced a fourth.

Weeks 1-2 - Foundation. Core authentication onto one implementation: email and password, multi-factor, password reset, session management. Every subsequent security decision became one decision instead of three.

Week 3 - Social sign-in. Google, Microsoft, LinkedIn and Facebook, with account linking, so that a user who signed up one way and later signs in another way ends up in the same account rather than a mysterious duplicate. Account linking is the part people underestimate; the OAuth integration is easy and reconciling identities across providers is not.

Weeks 4-5 - Enterprise SSO. SAML 2.0 and OIDC against Azure AD, Okta and Google Workspace. This is the part that was blocking deals, and it went from a multi-month project to a connection we configure per customer - which matters more than the initial build, because every enterprise customer after the first one is now setup rather than engineering.

Week 6 - Team management. Workspace isolation, role-based permissions, invitation flows. Agencies have genuinely complex structures - staff working across multiple client accounts with different permissions in each - and this is the part that has to fit the customer's org chart rather than our data model.

The rollout was gradual and no user was asked to reset a password or re-authenticate because of it. If you are planning something similar: the migration strategy matters more than the platform choice. Anything that makes a customer's users notice will cost you more in support and goodwill than the entire project saves.

Six months later

Before After
Engineering sprint capacity on auth 30% under 5%
Auth-related support tickets - down 67%
Average user onboarding time 8 minutes 2 minutes
Enterprise customers on SSO 0 37
Social login adoption - 42% of new signups
Auth-related security incidents 3 in the prior year zero

The 30% to under 5% line is the one I would point at. That is roughly a quarter of our total engineering capacity handed back to the product, permanently, by a six-week project.

The business impact went further than we modelled. Enterprise deals that previously stalled on authentication requirements now close 45% faster, and our customer acquisition cost in the enterprise segment fell 28% as those cycles shortened. We did not set out to change CAC. It turns out that a deal which does not stall is a cheaper deal.

Going from zero enterprise SSO customers to 37 in six months is the part that surprised me most. The demand was already there. We had simply been unable to serve it, and we had no way to see it in the funnel - which is its own lesson.

What I would tell you

Count the tax before you argue about the project. "We should refactor authentication" loses every prioritisation conversation it enters. "Authentication is consuming 30% of our sprint capacity and has stalled $180K in ARR" is a different conversation entirely, and it takes about an hour to work out. We should have measured it a year earlier than we did. The number was always there; nobody had added it up.

Consolidate before you add. Our instinct when SAML became urgent was to bolt it onto what we had. That would have produced a fourth flow, and we would be writing this post again in two years with a worse story.

About the numbers in this post

Every figure here is Social9's own engineering and pipeline data. The 30% and under-5% sprint capacity figures come from tagging completed sprint work that touched authentication and taking it as a share of total capacity, before the project and six months after. The support ticket, onboarding and adoption figures are measured over the same six-month window.

No third-party benchmark is quoted and none is implied. Your numbers will depend on how much authentication debt you have accumulated and how much of your pipeline is blocked by procurement requirements rather than product fit.

Disclosure: Social9 pays for and runs SSOJet in production for authentication and enterprise SSO. This post is our account of that project. We were not paid to write it, and SSOJet has published their own version of the same story.

Frequently asked questions

How do you actually measure what authentication costs you?

Go through the last two or three quarters of completed sprint work and tag anything that touched authentication: bug fixes, security changes, support escalations that turned into engineering time, and bespoke work done for one large customer. Add it up as a share of total capacity. It took us about an hour, and it produced the 30% figure that had been true for a long time without anyone knowing it.

Is having multiple login flows really a problem if they all work?

They work individually; the cost is in every change after that. Each security decision has to be implemented and verified three times, each bug report starts with determining which path the user is on, and no single engineer holds the whole picture. It is not a correctness problem, it is a rate-of-change problem, which is why it stays invisible until you measure capacity rather than defects.

Why could you not just build SAML in 30 days?

Because we would have had to build it into three separate authentication flows, each with its own session establishment and account state. SAML against a single consolidated implementation is a contained piece of work. SAML against three divergent ones is three integrations plus the reconciliation between them, and none of that fits a buyer's 30-day window.

What makes account linking harder than the OAuth integration?

The OAuth part is well documented and largely mechanical. The hard part is deciding what a returning user is. Someone who signed up with email and password and later clicks "sign in with Google" using the same address should land in their existing account, not a duplicate. Providers can return different addresses for the same person, or unverified addresses you must not trust for matching. Each of those needs a policy decided in advance.

How do you consolidate authentication without forcing a password reset?

By phasing it and running the new implementation alongside the old rather than cutting over. Users move as they authenticate normally, and nothing about the transition is surfaced to them. It is more work than a cutover, and it is the difference between a project your customers never learn about and one that generates support volume for a month.

Why would authentication work affect customer acquisition cost?

Because a stalled deal is an expensive deal. Every additional week in an enterprise cycle consumes sales and solutions-engineering time against the same contract value. When deals that used to stall on a security requirement close 45% faster, that time comes back across the whole pipeline. We did not model this in advance; the 28% reduction in our enterprise segment was a second-order effect we noticed afterwards.

Conclusion

Three defensible decisions produced one indefensible system, and it cost us roughly a third of our engineering output for longer than we would like to admit. The thing that fixed it was not a technical insight. It was an hour of arithmetic that turned an unwinnable prioritisation argument into an obvious one.

Six weeks later we had one authentication implementation, enterprise SSO as a per-customer configuration, and 37 enterprise customers who had been unable to buy from us before.

If you suspect you are in the same position, do the hour of arithmetic first. The project does not need a better argument. It needs a number.


Social9 uses SSOJet for authentication and enterprise SSO. Their write-up is here.

S
Social9 Engineering

Engineering Team

 

Engineering write-ups from the team building social9.com.

Related Articles

How to Master AI-Powered Content Creation: The Ultimate Guide for 2026
AI-powered content creation

How to Master AI-Powered Content Creation: The Ultimate Guide for 2026

Stop using AI as a typewriter. Learn to build agentic workflows that scale high-authority content and beat synthetic mediocrity in 2026.

By Nikita Shekhawat August 5, 2026 7 min read
common.read_full_article
Social Media ROI Tracking: How AI-Powered Analytics Tools Change the Game
social media ROI

Social Media ROI Tracking: How AI-Powered Analytics Tools Change the Game

Stop tracking vanity metrics. Learn how AI-powered analytics tools shift social media ROI from descriptive reporting to predictive, real-time revenue growth.

By Michael Johnson August 5, 2026 7 min read
common.read_full_article
The Future of Social Commerce: Optimizing Your Workflow with AI Integration APIs
social commerce

The Future of Social Commerce: Optimizing Your Workflow with AI Integration APIs

Stop manual workflows. Learn how AI integration APIs and headless architecture are transforming social commerce into an autonomous, high-conversion engine.

By David Kim August 3, 2026 7 min read
common.read_full_article
Hootsuite vs Buffer vs Sprout Social vs Later: Best Alternative in 2026
social media management tools

Hootsuite vs Buffer vs Sprout Social vs Later: Best Alternative in 2026

Struggling to pick a social media tool? We compare Hootsuite, Buffer, Sprout Social, and Later to help you find the perfect fit for your 2026 marketing strategy.

By Michael Johnson September 16, 2026 8 min read
common.read_full_article