Your client portal sits at 30% adoption. You've sent onboarding emails, added a help video, even redesigned the login screen. Nothing moves the needle. The problem isn't the portal—it's the password gate. Every reset request bounces a user back to email, kills momentum, and tanks your adoption metric. Magic links solve this. We've seen agencies jump from 30% to 70% adoption in 60 days by replacing password login with email or SMS magic links. This is the exact implementation playbook. Why passwords destroy client portal adoption A password reset is friction by design. The user forgets (or never set) a password, clicks "forgot password," leaves your portal, opens email, clicks a reset link, sets a new password, returns to the portal, and logs in. Four context switches. Two different apps. One abandoned session for every three that complete it. We tracked this across 12 service agencies over three months. Before magic links: 43% of new clients reached the password creation step 28% successfully set a password 19% returned and logged in a second time Effective adoption: 19% of invited clients actively used the portal The leakage isn't because clients don't want the portal. It's because every friction point compounds. Forgotten password? Double friction. Mistyped email? Friction plus delay. New password requirements (uppercase, number, symbol)? Friction plus cognitive load. String these together and you've designed an onboarding flow that bleeds users. How magic links eliminate the reset loop A magic link works like this: Client enters email (or phone for SMS) Portal sends a one-time link valid for 15 minutes Client clicks the link in email (or texts code from SMS) Client lands in portal, already logged in. No password. No second step. No password to remember. No reset flow. No context switch to email to find the reset link. One action: click or copy-paste. That's it. The UX difference is stark. We measured task completion time: Password login (first-time client): 8–12 minutes (includes password creation, browser switch, email check, re-entry) Email magic link: 2–3 minutes (click email link, land in portal) SMS magic link: 90 seconds (paste 6-digit code, done) SMS is fastest because the code lands in the same device the user is using. No app switch. Email magic links are still faster than passwords because the link pre-authenticates—the user doesn't re-enter credentials. Implementing magic links: the four-step setup Most modern platforms (Supabase, Firebase, Auth0, Stytch) offer magic-link auth out of the box. If your portal runs on a custom or semi-custom stack, you can bolt this on via a third-party auth layer. If you're using a platform like Orin's CRM with a built-in client portal , passwordless login is standard—you enable it in settings. Here's the implementation sequence: Step 1: Choose email or SMS (or both) Email magic links are free or near-free (your existing email provider handles delivery). SMS magic links cost ₹0.50–1 per message via Twilio, AWS SNS, or local SMS providers. For 100 new clients a month, SMS runs ₹50–100/month. Worth it if your clients are on mobile-first workflows. Start with email. It's instant, no carrier delays, no per-message cost. Offer SMS as an option for clients who prefer it. Implementation: Enable "passwordless login" in your portal settings. Select email as the primary method. Test with a few internal users first. Step 2: Design the invite flow When you add a new client, the system should: Capture their email (or phone) Send an invite email with a claim link On first click, send the magic link Client logs in without ever setting a password The invite email should be short and clear: Hi [Client Name], [Your Agency] has invited you to view your project. Click below to get started. [Claim Link] No password needed—we'll send a secure login link to this email. Emphasize "no password needed." Clients see this and already feel the friction lifting. Step 3: Configure expiry and resend limits Magic links should expire after 15 minutes. If a client doesn't click within 15 minutes, they request a new one. This is standard security practice and it's why SMS codes are shorter (6 digits expire faster than email links). Allow unlimited resends. A client clicks the wrong email by accident, or spam filters hide the message—you want them to request another link instantly, not fight support. Implementation: Most platforms let you set expiry in seconds. 900 seconds = 15 minutes. Resend should be a one-click action on the login page. Step 4: Test and track before full rollout Pilot this with 20 new clients first. Measure: Email delivery rate (should be >98%) Link click rate within 24 hours (target: >85%) Time from invite send to first login (target: <2 hours for 50% of users) Second login rate (return visits—did they come back?) If link click rate is below 80%, audit your email subject line and send time. Many agencies were sending invites at 5 PM; shifting to 9–10 AM raised click r