Skip to content
Menu

Web + technical SEO / Immigration advisory

Trilingual site and technical SEO for an immigration advisory

A lead-capture site for a visa consultancy whose audience researches from Brazil, on mobile, on unreliable connections. Not a single third-party tag blocking first render.

Context
Spanish visas and residency · pt-BR · es · en
Project type
Web + technical SEO / Immigration advisory
Status
Live

Web / measured performance

PageSpeed InsightsMobile

propiziareimmigra.com

Performance
97
Accessibility
100
Best practices
100
SEO
100
LCP
1.88 s
Measured on Aug 10, 2026 with Lighthouse 13.4.1. Performance: median of 5 runs.
Lighthouse SEO
100
On mobile and desktop
Third-party scripts
0
None in the critical path
Languages with hreflang
3
pt-BR, es and en, reciprocal

01 / Problem

An immigration advisory competes in SERPs crowded with content farms, forums and law firms holding twenty-year-old domains. The visitor arrives at a high-stakes moment, moving country, and arrives on mobile, often on Brazilian mobile data. Every second before the first content is a consultation that leaves for another tab. The sector also carries a trust problem: someone searching for a Spanish digital nomad visa has already seen half a dozen pages promising the same thing without saying who answers.

02 / Context

A truly trilingual audience

The audience is genuinely trilingual, not trilingual out of politeness: Brazilians researching in Portuguese, residents already in Spain comparing in Spanish, and international profiles arriving in English. That makes hreflang infrastructure rather than a footer ornament.

See the technical SEO service

03 / Solution

How we solved it

The site was built on one hard rule: no third parties in the critical path. No tag manager, no embedded chat widget, no blocking remote fonts. Lead capture goes to WhatsApp through a direct link instead of an SDK, and analytics is not paid for with the visitor's load time. The rest is familiar discipline: static output served from a CDN, brotli compression, modern image formats with deferred loading below the fold, and a single canonical version per language with reciprocal hreflang.

Technical decisions

  1. 01

    Content architecture by intent: one page per visa route, not a generic services page

  2. 02

    Static rendering served from a CDN, with brotli and cache headers

  3. 03

    Zero third-party JavaScript in the critical path, so main-thread blocking stays flat

  4. 04

    Modern image formats, deferred loading only below the fold

  5. 05

    hreflang pt-BR / es / en plus x-default, reciprocal in all three directions

Workstreams

Genuinely trilingual, not translated on top

Three versions with their own canonical and reciprocal hreflang. Without it, Google picks which version a Brazilian sees, and it usually picks wrong.

  • pt-BR, es and en, plus x-default
  • One canonical per language, no orphan versions
  • Content adapted to the reader, not a literal translation of the Spanish

Zero third parties in the critical path

The most profitable engineering decision in the project. A typical tag manager costs 150 to 270 kB of JavaScript the visitor downloads before reading anything.

  • No tag manager and no embedded chat SDK
  • Lead capture through a direct WhatsApp link, not a widget
  • Main-thread blocking flat on desktop and minimal on mobile

The entity marked up, not just the pages

In a sector where the search engine weighs who signs the advice, declaring the organisation and the person advising is part of the SEO work, not an add-on.

  • Organisation and person schema linked to each other
  • Consistent authorship signals across all three language versions

04 / Scope

What it does

  • Explains each route in: student, digital nomad, work, non-lucrative, family reunification and arraigo
  • Captures qualified enquiries through a pre-consultation form with a direct WhatsApp handoff
  • Serves three languages with reciprocal hreflang and one canonical per version
  • Marks up the entity with organisation and advisor-person schema
  • Publishes supporting content on living in Spain after approval

05 / Results

What changed

The result is a site that renders its main content in under two seconds on simulated mobile and shifts nothing while loading. Lighthouse's three untimed categories — accessibility, best practices and SEO — sit at 100 on both mobile and desktop. The concrete numbers, with their date and method, are below.

Security and confidentiality

  • The pre-consultation form collects the minimum needed to call back: name, contact and route of interest.
  • The conversation continues on WhatsApp, off the site, with no consultation history stored on the front end.
  • No third-party tags also means no silent data collection by scripts we do not control.

06 / Performance

Performance measured, not promised

Lighthouse scores via Google's PageSpeed Insights API. Anyone can reproduce them.

Mobile

  • 97PerformanceGood
  • 100AccessibilityGood
  • 100Best practicesGood
  • 100SEOGood
LCP
1.88 s
Good
CLS
0.000
Good
TBT
0 ms
Good

Desktop

  • 100PerformanceGood
  • 100AccessibilityGood
  • 100Best practicesGood
  • 100SEOGood
LCP
462 ms
Good
CLS
0.007
Good
TBT
0 ms
Good

Methodology: PageSpeed Insights API v5 · Lighthouse 13.4.1 · Measured on .

Performance is the median of 5 mobile runs and 3 desktop runs; the other categories are deterministic.

No CrUX field data: the site does not yet gather enough traffic in Chrome's public dataset, so these are lab measurements.

Verify on PageSpeed Insights

07 / Questions

Frequently asked questions

Why give up Google Tag Manager?

Because its cost is not zero and the visitor pays it. On comparable sites we have measured 150 to 270 kB of JavaScript from the tag container alone, with roughly half of it never executing. For an audience arriving on mobile data, that turns into seconds before the first content. When the client needs measurement, lightweight server-side analytics can be added without handing that weight back to the browser.

Doesn't the language switcher take care of hreflang?

No. The switcher is navigation for people; hreflang is a declaration to the search engine about which version belongs to which audience, and it has to be reciprocal: each version lists itself and every equivalent. Without reciprocity Google ignores the set and decides on its own.

Do these scores hold over time?

Not automatically. They degrade the moment someone adds a widget, a remote font or a campaign tag. That is why we publish the measurement date and method next to the number, and re-measure instead of keeping a screenshot.

Your next project

Want a case like this for your business?

Let's talk about your project