The bilingual immigration law firm website
How we built the marketing site for a 180-employee bilingual immigration practice serving all 50 states. Click-to-call architecture, full English + Spanish content parity, Aircall + HubSpot attribution, and 17,000+ tracked inbound calls per month. Same engineering team that built the firm's 7,000-case CRM, this time applied to the website that feeds it.
What the firm walked in with, and what we shipped
Same business, same brand mark, same 50-state caseload. Left column is the pre-engagement site (March 2023 — Wayback Machine archive). Right column is the production site running today. Both are real captures, not mockups.


The full-page comparisons (desktop + mobile) live further down the case study. The hero shots above are what a paid-social click actually lands on — that's where the conversion math starts.
The results, upfront
A bilingual immigration practice with two offices and a fifty-state caseload
The same firm featured in our 7,000-case CRM case study. 180 employees, two physical offices (Charlotte, NC and Wyoming, MI), national-reach representation across all 50 U.S. states. Bilingual practice — Spanish is the primary language for a majority of the client base. The team handles family-based, humanitarian, business, and removal-defense immigration matters with USCIS deadlines often measured in hours.
Marketing runs as a real operation. A paid social program across Facebook + Instagram. A bilingual intake team taking thousands of calls a month. A HubSpot CRM (the same one we built) routing every lead through a 32-agent sales-to-intake pipeline. The website is the door all of that traffic walks through.
Client identity stays confidential. The firm represents asylum seekers, trafficking survivors, and other vulnerable populations whose privacy is non-negotiable. Every technical decision on this engagement got the same privacy-first defaults as the CRM build.
A marketing site that was fighting the actual buyer
Four design mismatches were dropping high-intent traffic before it reached the intake team. None showed up in a desktop preview. Each one only surfaced under the actual conditions the firm's buyers visit under.
Phone-first audience, form-second sites
Most law-firm websites optimize for the contact form — a 12-field intake the visitor fills out, submits, and waits days for a callback. Immigration clients calling in moments of urgency (deportation notices, USCIS deadlines, family separation) need a phone number above the fold, not a form. The existing site buried the call CTA below scroll.
Spanish content treated as an afterthought
The previous site had a Google-Translate widget overlay. Spanish-speaking visitors got machine-translated legal terminology that frequently got the meaning wrong. For an audience that was over half the firm's actual client base, second-class language treatment was hurting trust before the first call.
Paid social drives mobile-first traffic the site wasn't built for
The firm's primary acquisition channel is paid social — Facebook and Instagram ads running across 50 states. That traffic is overwhelmingly mobile, often on slow connections, often in landscape orientation on older devices. The previous site loaded in 5-8 seconds on 4G and lost most of the click before the page rendered.
Two offices, fifty-state service, no clear architecture
The firm has physical offices in Charlotte, NC and Wyoming, MI, and they represent clients across all 50 states. The website needed to surface both physical offices (for local search + Google Business Profile signal) AND telegraph national-reach service (for paid social traffic from anywhere). A typical 'Contact Us' page does neither well.
A click-to-call practice site, bilingual by design
Five design decisions, each one chosen against the actual buyer reality. Mobile-first. Spanish-first. Urgent. Phone-driven. Paid-social-attributable. Not chosen against the law-firm-website template most agencies ship.
Click-to-call architecture as the primary CTA
Phone number lives above the fold on every page, every breakpoint, every language. Click-to-call (tel: links) routes mobile taps straight to the native dialer. The 'Free Case Evaluation' button is secondary. The phone number is primary. Result: paid-social mobile visitors tap-to-call within the first 8 seconds, which exactly matches the average GA4 engagement time. That's the design doing its job, not a bounce problem.
Full Spanish localization with content parity
Built a /es URL tree with hand-authored Spanish content for every primary page. Homepage, services, About, locations, contact. Not machine translation. Spanish schema markup, Spanish meta titles and descriptions, Spanish OG tags. The Spanish version is a peer site, not a translation, because for this practice Spanish is the primary language for most of the customer base.
Mobile-first performance for paid social traffic
Sub-2-second LCP on mobile, on 4G, with paid-social UTM parameters. Server-rendered initial paint, deferred client JavaScript, optimized image formats per breakpoint, no heavy iframe widgets above the fold. Built to convert the tap inside the ad-click window where attention is highest, before the visitor abandons.
Aircall + HubSpot attribution loop
Every phone number on the site is an Aircall-routed number with UTM parameters carried through the call. Inbound calls become tracked contacts in HubSpot with source attribution (paid-social ad set, organic search query, direct visit). The team sees the actual ad creative that drove each call. The firm attributes revenue back to specific campaigns. 17K+ tracked inbound calls per month flow through this loop.
Two LocalBusiness schemas + 50-state areaServed
Two LocalBusiness schema entries (Charlotte, NC and Wyoming, MI) with full NAP, hours, and Google Maps embeds tie the site to physical locations for local-pack ranking. A separate LegalService schema declares all 50 states as areaServed for national-reach signal. Reviews schema surfaces the 676+ Google reviews on the Wyoming location and 111+ on Charlotte — review velocity is a direct local ranking factor.
Below the fold, side by side
The hero shots are the first thing a paid-social click lands on. Everything below is what determines whether the visit becomes a call.


70%+ of paid-social clicks are on phones
Mobile is not a smaller version of the desktop site — it's the primary surface. Click-to-call is the dominant CTA. The deportation-emergency entry is above the fold. The bilingual language toggle is one tap away. Spanish navigation is at parity with English, not buried behind a flag icon.

The stack, in full
Same Next.js + Vercel foundation as the CRM build. Same privacy-first defaults. The website and the CRM share one architectural family. When traffic spikes during a paid-social burst, both scale on the same edge infrastructure without custom ops work.
A website that finally matches the operation behind it
The site now ships somewhere north of 17,000 inbound calls per month through Aircall. Each call is attributable to a specific paid-social ad set, organic query, or direct visit. Those calls become roughly 5,000+ new HubSpot leads per month routed through the firm's 32-agent intake team. Roughly 1,000 consults sold per month flow out the other side of the pipeline into case creation.
The Spanish-language version of the site is no longer a translation widget. It's a peer site with full parity. Spanish-speaking visitors land on hand-authored content, see Spanish reviews, and reach a Spanish-fluent intake team within tap-to-call latency. For a majority-Hispanic client base, that is what trust looks like.
Mobile performance runs at sub-2-second LCP on 4G with paid-social UTMs attached. The site is built to convert the tap inside the ad-click attention window, before the visitor remembers what they were doing before they saw the ad. The eight-second average GA4 engagement time is not a failure of engagement. It's the click-to-call architecture doing exactly what it was built to do.
The website and the CRM are now the same product. A paid-social ad creates a call. The call creates a HubSpot contact with source attribution. A sales agent runs the lead through the consult-sold pipeline. An intake agent converts the consult into a case. A paralegal opens the case in the CRM we built on the same infrastructure. Marketing spend has an attributable revenue path for the first time in the firm's history.
The same patterns scale down
You don't need 180 employees or a 50-state caseload to use these patterns. Each one maps onto solo practitioners, small firms, and lakeshore small businesses at small-business prices.
Want a marketing site that actually matches your operation?
Every engagement starts with a free audit. We look at your current site, your acquisition channels, your CRM, and your actual buyer behavior — then send back a concrete plan with real numbers. No sales pitch, no pressure.
Get Your Free AuditInstant score · No sign-up · Under 30 seconds