Okta & Shopify Discovery Deep Dive
Date: December 8, 2025
Meeting Type: Technical Discovery
Attendees: Jay Heavner (VP IT), Katherine Bayless, Samuel Roberts, Uttam Kumaran
Meeting Purpose
Deep dive with Jay Heavner on two critical pain points:
- Okta Authentication - Causing 80% of customer support requests
- Shopify Digital Asset Delivery - Download failures, authentication loops
Part 1: Okta Authentication Issues
Current Architecture
Two Separate Tenants:
-
Workforce Tenant
- Internal staff and contractors
- Uses FastPass for passwordless auth (when enrolled)
- Collide device assurance
- Various policy exceptions for leadership
-
Customer Tenant
- 150K CES registrants (grows to 900K monthly active users)
- No FastPass enrollment (customers don’t download app)
- No email verification (marketing decision from years ago)
- Username = email address (not immutable)
Cost: $260K per year for 900K monthly active users
The Problem
User Experience Issues:
Katherine’s experience:
“I’ve never had to enter my password as much as I have in the last few months”
Symptoms:
- Excessive password prompts across applications
- Users frustrated with constant re-authentication
- MFA exhaustion (SMS now costs extra)
- Magic links not implemented for Customer tenant
- Average 29 min 36 sec registration time (auth a major factor)
Customer Support Impact:
- 80% of customer service requests related to authentication
- Password reset emails
- Account lockouts
- Confusion about multiple logins
Technical Debt:
- Username = email (changes when people change names/emails)
- No email verification on Customer tenant (marketing decision years ago)
- Policy exceptions carved out for senior leadership
- Vendors don’t understand OIDC/OAuth properly
- Still side-loading data instead of using JWT tokens
Jay’s Perspective
20-Year IT Veteran Context:
Jay has been at CTA for 20+ years, seen everything evolve. Knows all the systems intimately.
Okta Implementation Challenges:
- Inherited configuration from previous decisions
- Marketing team made call on no email verification
- Leadership exceptions hard to remove (“government stealing fingerprints”)
- FastPass enrollment inconsistent across workforce
- Vendor integrations often broken or half-implemented
Competing Priorities:
- Can’t make changes before CES (January)
- Limited IT staff bandwidth
- Finance very cost-conscious ($260K/year scrutinized)
- Need to maintain 99%+ uptime
Known Workarounds
Katherine’s 80% Reduction Achievement:
Already achieved 80% reduction in auth-related tickets this year through:
- Custom error messaging widget
- Better user guidance on password requirements
- Clearer communication during registration
“If I can get 80% with just better error messages, imagine what we could do with proper fixes”
Current Hacks:
- Manual password reset processes
- Customer service team shortcuts
- Documentation for common issues
- Slack channel for IT/support coordination
Potential Solutions Discussed
Quick Wins (Within Okta):
-
Implement Magic Links
- Passwordless auth for Customer tenant
- Reduce password-related support tickets
- Better mobile experience
-
Improve Password Policies
- Less complex requirements if MFA enabled
- Risk-based authentication
- Context-aware prompts
-
Fix Session Management
- Longer session times for low-risk activities
- Smart re-authentication prompts
- Remember device better
Medium-Term Options:
-
Consolidate Tenants
- Single Okta tenant with different policies
- Easier to manage, potentially lower cost
- Risk: Migration complexity
-
Enable Email Verification
- Convince marketing team (hard political problem)
- Would solve many downstream issues
- Username immutability improvements
Long-Term Evaluation:
- Alternative Identity Providers
- Auth0: More developer-friendly, better docs
- Clerk: Modern, built for developers
- Amazon Cognito: Already on AWS, lower cost
- WorkOS: Enterprise focus, SAML/OIDC native
Factors:
- Migration complexity (150K users)
- Cost comparison ($260K baseline)
- Vendor integration effort
- Team learning curve
- Procurement timeline
Technical Details from Jay
Okta Logout Bug:
When admins log out of workforce tenant:
- Removes admin role every time
- Have to manually re-add in console
- Impexium integration issue
- Workaround: Don’t log out (not secure!)
Session Management:
- Multiple apps = multiple authentication prompts
- Each vendor implements differently
- Some vendors side-load data (ignore JWT)
- OIDC/OAuth not understood by many vendors
FastPass Adoption:
- Many staff afraid of biometrics
- “Government stealing fingerprints” conspiracy theories
- Leadership exemptions make it hard to require
- When enrolled, works great (passwordless)
Device Assurance (Collide):
- Inconsistent enforcement
- Not all devices enrolled properly
- Certificate management complex
Discovery Questions Identified
For CTA to Answer:
- What’s the acceptable downtime for migration?
- Can we get marketing buy-in on email verification?
- What’s the timeline for leadership policy exceptions removal?
- Are there budget constraints for alternatives?
- What’s the priority: cost reduction or UX improvement?
For Brainforge to Research:
- Auth0 vs Clerk vs Cognito cost comparison
- Migration effort estimation for 150K users
- Vendor integration re-work required
- Quick wins feasibility (magic links, session mgmt)
- Risk assessment for each approach
Constraints
Timing:
- No changes before CES (January 2026)
- Need 3-6 month runway for major migration
- Quick wins could ship in Q1 post-CES
Political:
- Marketing team decision on email verification
- Leadership unwilling to change policies
- Finance scrutinizes all spending
- Vendor relationships (don’t want to break working integrations)
Technical:
- 99%+ uptime required
- Must work on mobile (majority of CES traffic)
- Integration with 10+ critical systems
- Cannot break CES registration flow
Part 2: Shopify Digital Asset Delivery
Current Implementation
What Shopify Is Used For:
-
Digital Asset Delivery
- Research reports ($500-5,000 per report)
- Market analysis documents
- White papers and studies
- ~50-100 SKUs
-
CES Sponsorships (Recently Discovered!)
- Katherine didn’t know until recently
- Small dollar amount but adds complexity
- Unclear why this use case exists
Ownership Triangle:
- Marketing team bought the platform
- Jay built the integration
- Nobody actively maintains it
The Problem
Authentication Loop:
User journey (when it works):
- User browses CTA website
- Clicks “purchase report”
- Redirected to Okta (workforce tenant)
- Okta checks Remembers for membership status
- Remembers returns discount eligibility
- Redirected to Shopify
- Purchase completes
- Should receive download link
User journey (when it fails): 1-6. Same as above 7. Purchase completes but no download link 8. User stuck in auth loop between Okta/Remembers/Shopify 9. Support ticket created in support-download-issues Slack channel 10. Manual intervention required
Katherine’s Data:
“At a certain point, the data suggests something different… we have a Slack channel called support-download-issues”
Failure rate: Unknown exactly, but “constant stream” of tickets
Technical Debt:
Built by:
- New Zealand vendor
- Subcontracting to individual developer
- Written in Ruby
- No internal Ruby expertise at CTA
Jay’s assessment:
“The integration is half-baked”
Known Issues:
- Authentication flow not fully tested
- Error states not handled gracefully
- Users don’t understand what went wrong
- Download links expire (unclear timeout)
- No clear error messages
- Mobile experience particularly bad
Jay’s Technical Deep Dive
How It Was Built:
- Jay hired NZ vendor to build Shopify integration
- Vendor subcontracted to individual developer
- Built custom Ruby app to connect systems
- Hosted on… (unclear, Jay manages it)
- Limited documentation
Integration Flow:
CTA Website → Okta (auth) → Remembers (check membership)
→ Shopify (checkout) → ??? (delivery) → User
Missing piece: Reliable delivery after successful purchase.
Authentication Implementation:
- Uses Okta for identity
- Queries Remembers for member status via API
- Passes pricing token to Shopify
- Shopify completes transaction
- Should trigger download link generation
- Fails somewhere in “should trigger” step
Ruby Codebase:
- Jay has used Claude for code modifications
- Small changes work okay
- Larger refactors risky without Ruby expertise
- No test coverage
- Difficult to debug production issues
Potential Solutions Discussed
Option 1: Fix the Ruby Code
Pros:
- Smallest change, fastest path
- Jay already using Claude for small fixes
- Sunk cost in existing implementation
- Maintains current UX
Cons:
- Band-aid solution, doesn’t address root cause
- No internal Ruby support long-term
- Vendor relationship unclear
- Still have auth loop complexity
Option 2: Replace with Stripe
Pros:
- Purpose-built for digital products
- Simple download delivery
- Great documentation
- Lower maintenance burden
- Stripe Billing handles subscriptions well
- Could still integrate with Remembers for discounts
Cons:
- Migration effort (50-100 SKUs)
- Need to rebuild pricing logic
- Stripe Connect vs Platform decision
- Additional procurement process
Option 3: Replace with Gumroad
Pros:
- Specifically for digital products
- Simple setup, low maintenance
- Built-in email delivery
- Good reporting
Cons:
- Less customizable than Stripe
- Membership discount logic harder
- Less enterprise-ready
- Another new vendor to onboard
Option 4: Consolidate into Remembers
Pros:
- Already have AMS with storefront capability
- Members already logged in
- Single source of truth
- No additional vendors
- Native reporting
Cons:
- Impexium limitations unclear
- Would need to investigate capability
- May not support digital downloads natively
- Could be complex to implement
Option 5: Custom Solution (S3 + Simple Payment)
Pros:
- Maximum control
- Leverage existing AWS infrastructure
- S3 signed URLs for secure downloads
- Simple payment processor (Stripe Elements)
- Lower ongoing cost
Cons:
- Build and maintain ourselves
- Not core competency
- Reinventing wheel
- PCI compliance considerations
Katherine’s Take
Revenue vs Burden Analysis:
Small revenue stream but disproportionate support burden:
- Constant support tickets
- Takes Jay’s time for maintenance
- User frustration harms CTA brand
- Unclear if profitable after support costs
Organizational Dynamics:
Nobody wants to own Shopify:
- Marketing: “We just wanted to sell things”
- Jay: “I just built what they asked for”
- Membership: “Not our system”
- Katherine: “I didn’t even know we used it”
Classic case of tool bought without ongoing ownership plan.
Jay’s Constraints
Time:
- Full-time role managing all IT infrastructure
- CES takes 100% focus Nov-Feb
- Limited bandwidth for side projects
- Prefer low-maintenance solution
Risk:
- Can’t break digital asset sales (revenue stream)
- Can’t make CES sponsorships worse
- Need to maintain during CES
- No downtime acceptable
Resources:
- No Ruby developers on staff
- No budget for full Shopify agency
- Could potentially pay for one-time fix
- Prefer tool that doesn’t need constant maint
Discovery Questions Identified
For CTA to Answer:
- What’s annual revenue from digital assets?
- What’s total cost of ownership (platform + support)?
- Can we quantify support ticket volume?
- Is CES sponsorship use case real/ongoing?
- What’s acceptable migration timeline?
- Who should own this long-term?
For Brainforge to Research:
- Map exact auth flow (where does it fail?)
- Test failure scenarios systematically
- Impexium digital product capability
- Stripe vs Gumroad cost/feature comparison
- Custom build effort estimation
- Quick fix options in Ruby code
For Jay to Provide:
- Access to Ruby codebase
- Shopify admin access
- Sample failure logs
- Current support ticket examples
- Revenue/transaction data
- Integration documentation (if exists)
Immediate Next Steps
Week 1-2:
- Samuel to map complete auth flow
- Get access to Shopify admin and Ruby code
- Document specific failure points
- Create test scenarios
Week 3-4:
- Cost-benefit analysis of each option
- Technical feasibility assessment
- Recommendation with timeline
- Get buy-in from stakeholders
Post-CES (Feb+):
- Implement chosen solution
- Migrate SKUs if needed
- Test thoroughly
- Monitor for issues
Part 3: Other Systems Discussion
Event Base (Mobile App)
Jay’s Context:
Written in ColdFusion (!)
- Very old technology, hard to maintain
- Casey managing (going on maternity leave)
- 2-year contract, considering migration
- Might move to Flutter
Panasonic Story:
CTA approached Panasonic to help build AI features for mobile app. Panasonic excited… until they learned it was ColdFusion. Panasonic declined: “We don’t work with ColdFusion”
“That’s how you know your tech stack is outdated - when vendors won’t work with you”
Future Plans:
- Contract up for renewal
- Evaluating Flutter rebuild
- Want to add AI features (recommendations, etc.)
- Need analytics implementation
Glean (Enterprise Search)
Jay Owns This:
- Connected to SharePoint
- Tries to be “enterprise Google”
- AI-powered search across documents
Katherine’s Frustration:
“Actively harming reputation of our data… making people hate AI”
Problems:
- Connected to data it shouldn’t access
- Returns incorrect information confidently
- No data governance on sources
- Calls non-agentic workflows “agents” (Katherine’s pet peeve)
Opportunity:
- Connect to curated Snowflake data
- Proper data catalog
- Accurate answers from verified sources
- Could be great if done right
Google Analytics / BigQuery
Admin Access Locked:
- Orange Spark set up good infrastructure
- Former employee had admin access
- Employee left, Google account locked
- Google Cloud support trying to recover
- Katherine has data editor, not admin
Jay working with Google to regain control.
Opportunity:
- Well-implemented tracking
- Looker Studio dashboards exist but underutilized
- Could provide valuable funnel insights
- Need admin to make changes
Key Themes
1. Sunk Cost vs Fresh Start
Pattern across both Okta and Shopify:
- Existing implementations have issues
- Sunk cost makes abandonment hard
- But ongoing cost may exceed migration cost
- Need honest cost-benefit analysis
2. Ownership Vacuum
Neither system has clear owner:
- Okta: IT maintains, marketing influences, everyone uses
- Shopify: Marketing bought, Jay built, nobody maintains
Creates situation where problems persist because no one empowered to fix.
3. Vendor Relationship Management
CTA burned by vendors multiple times:
- Shopify subcontractor mystery developer
- CES tech stack daisy-chain
- Event Base ColdFusion surprise
Jay cautious about new vendors, wants proven solutions.
4. CES Constraint Dominates
Everything scheduled around CES:
- No changes Nov-Jan
- Post-CES window for improvements
- Need solutions stable before next CES cycle starts (June)
- Creates 6-month effective window: Feb-July
5. Cost-Conscious Culture
Finance scrutinizes every dollar:
- $260K Okta spend seems high
- Shopify cost vs value unclear
- Need ROI demonstration for any new tool
- Prefer consolidation over proliferation
Technical Decisions Needed
Okta Decision Tree
If Priority = Quick Wins: → Implement magic links + improve session management → Timeline: Q1 2026 (Feb-Mar) → Cost: Low (within current Okta spend)
If Priority = Cost Reduction: → Evaluate Auth0 vs Clerk vs Cognito → Detailed migration plan → Timeline: Q2-Q3 2026 → Cost: Migration effort + new platform
If Priority = UX: → Custom authentication flows → Risk-based authentication → Timeline: Q2 2026 → Cost: Medium (dev effort + testing)
Shopify Decision Tree
If Priority = Stability: → Fix Ruby code issues → Comprehensive testing → Timeline: Q1 2026 → Cost: Low (contractor)
If Priority = Long-term Maintenance: → Replace with Stripe or Gumroad → Migrate SKUs carefully → Timeline: Q2 2026 → Cost: Medium (migration + testing)
If Priority = Consolidation: → Move to Remembers storefront → Investigate capability first → Timeline: Q3 2026 → Cost: High (discovery + implementation)
Success Criteria
For Okta Improvements
Quantitative:
- 50%+ reduction in auth-related support tickets
- <5 minute registration time (from 29+ min)
- 95%+ successful authentications on first attempt
- $100K+ annual cost reduction (if replacing)
Qualitative:
- Users stop complaining about passwords
- Staff can work without constant prompts
- Mobile experience smooth
- Vendor integrations reliable
For Shopify Improvements
Quantitative:
- Zero download failures after successful purchase
- <2 support tickets per month (from current “constant stream”)
- 99%+ successful delivery rate
- Clear ROI (revenue - support cost - platform cost)
Qualitative:
- Users receive downloads immediately
- Clear error messages when issues occur
- Staff know who owns the system
- Jay’s time freed up for higher priorities
Risks & Mitigation
Okta Migration Risks
| Risk | Impact | Mitigation |
|---|---|---|
| CES registration breaks | Critical | Test extensively, maintain Okta as backup |
| Vendor integrations fail | High | Map all integrations, test each one |
| User confusion during migration | Medium | Clear communication, gradual rollout |
| Cost overruns | Medium | Detailed scoping, fixed-price where possible |
Shopify Replacement Risks
| Risk | Impact | Mitigation |
|---|---|---|
| Revenue loss during migration | High | Parallel run old + new systems |
| SKU data loss | Medium | Careful migration, data validation |
| New system also has issues | Medium | Thorough testing, proof of concept first |
| User confusion | Low | Same UX where possible, clear documentation |
Resources Needed
For Okta Discovery
- Jay: Okta admin access for Samuel
- Jay: List of all Okta-integrated applications
- Katherine: Support ticket data (volume, categorization)
- Katherine: User survey on auth pain points
- Brainforge: Cost comparison spreadsheet
- Brainforge: Migration effort estimation
For Shopify Discovery
- Jay: Ruby codebase repository
- Jay: Shopify admin access
- Jay: Sample error logs
- Katherine: Support ticket examples
- Finance: Revenue and transaction data
- Brainforge: Auth flow mapping
- Brainforge: Alternative platform evaluation
Next Meeting
Date: December 16, 2025
Agenda: Q1 Scopes + dbt demo
Attendees: Katherine, Jay, Uttam, Samuel, Ashwini
Pre-work:
- Samuel to map Shopify auth flow
- Uttam to draft Okta discovery scope
- Katherine to gather support ticket data
- Jay to provide access and documentation
Memorable Quotes
Jay on ColdFusion:
“When Panasonic won’t work with you, you know your tech stack is outdated”
Katherine on Glean:
“Actively harming reputation of our data… making people hate AI”
Katherine on support tickets:
“At a certain point, the data suggests something different”
Jay on Shopify:
“The integration is half-baked”
Katherine on ownership:
“Marketing bought it, Jay built it, nobody maintains it”
Jay on Claude:
“I’ve been using Claude to make small changes… works okay for that”
Compiled from transcript: cta_discovery_workstreams_chat_12_8_2025.md