SEO Action Plan

tenhoopenrealty.com — Prioritized Implementation Roadmap
Date: March 23, 2026 Current Score: 48/100 Target Score: 75-85/100 Total Items: 34
48 Current
60 Week 2
70 Week 4
78 Month 2
85+ Month 3+
Week 1-2
Critical + Quick Wins
Items 1-6, 9, 14, 15, 23
Expected Score
58-62
Week 3-4
High Priority
Items 7, 8, 10, 11, 12, 13, 16
Expected Score
68-72
Month 2
Medium Priority
Items 17-26
Expected Score
75-80
Month 3+
Low Priority + Ongoing
Items 27-34
Expected Score
85+
Critical — blocks indexing, fix immediately
High — significant ranking impact, 1-2 weeks
Medium — optimization, within 1 month
Low — nice to have, backlog

🚨 Critical — Fix Immediately

6 items
1
Migrate Property URLs to Clean Permalinks
Technical SEO Indexability Schema Effort: High (1-2 weeks)
Problem: Property URLs use /property-details?reference=XXXX. WordPress/Yoast strips query parameters from canonical tags, so all property pages canonicalize to the same URL — effectively de-indexing your entire property inventory.
  • Check if Proppy.app supports clean URL output or custom permalink structures
  • Create WordPress rewrite rules mapping /properties/{slug}/ to property detail template
  • Implement 301 redirects from old ?reference= URLs to new clean URLs
  • Update internal links and XML sitemap
  • Target URL format: /properties/villa-3-bedroom-lagos-v1292/
Verify: View source on any property page → check <link rel="canonical"> includes full URL with property identifier.
2
Add Property Pages to XML Sitemap
Indexability Effort: Medium (2-4 hrs)
Problem: Query-parameter URLs are excluded from Yoast sitemaps by default. Property pages are the site's most valuable content and likely aren't being submitted to Google.
  • After URL migration (item 1), property pages will naturally appear in sitemaps
  • If URL migration is delayed: configure a custom sitemap that explicitly includes property URLs
  • Add hreflang annotations to sitemap entries for /pt/ and /nl/ variants
3
Fix hreflang Implementation
International SEO Effort: Medium (4-8 hrs)
Problem: GTranslate likely injects hreflang tags via JavaScript only — invisible to crawlers.
  • Verify by viewing raw HTML source (not DevTools) for hreflang tags
  • If JS-only: add hreflang tags manually via theme <head> or Yoast hreflang module
  • Add hreflang annotations to XML sitemap as well
<link rel="alternate" hreflang="en" href="https://tenhoopenrealty.com/{path}" /> <link rel="alternate" hreflang="pt-PT" href="https://tenhoopenrealty.com/pt/{path}" /> <link rel="alternate" hreflang="nl" href="https://tenhoopenrealty.com/nl/{path}" /> <link rel="alternate" hreflang="x-default" href="https://tenhoopenrealty.com/{path}" />
4
Verify Proppy.app Server-Side Rendering
Indexability Effort: Medium (2-4 hrs)
Problem: If Proppy.app loads property data via JavaScript, property content is invisible to crawlers.
  • View page source (not Inspect Element) on /property-details?reference=V1292
  • If property details appear in HTML: pass (server-rendered)
  • If only an empty container div: investigate Proppy.app SSR options or implement dynamic rendering (Prerender.io)
5
Resolve Content Cannibalization
Content Quality Rankings Effort: Low (2-4 hrs)
Problem: /buying-property-in-algarve/ and /buying-a-property-in-portugal/ target nearly identical keywords, splitting authority.
  • Option A (Recommended): Keep buying guide as the definitive pillar. 301 redirect blog post to guide, incorporating any unique content.
  • Option B: Differentiate by scope — guide = Algarve-specific process, blog = Portugal-wide overview. Add clear internal cross-links.
6
Audit YMYL Content for Regulatory Accuracy
Trust Compliance Effort: Medium (1-2 days)
Problem: Portuguese property regulations changed significantly in 2023-2025. Outdated YMYL content is actively harmful.
  • Verify Golden Visa status (real estate route suspended Oct 2023)
  • Verify NHR regime status (closed to new applicants Jan 2024)
  • Update IMT tax brackets to current rates
  • Add "Last Updated: [Month Year]" to all informational pages
  • Commit to quarterly content reviews

High Priority — Fix Within 1-2 Weeks

10 items
7
Enhance Organization/RealEstateAgent Schema
Schema Effort: Low (2-4 hrs)
  • Add telephone (required for local business results)
  • Add geo coordinates (lat: 37.1028, lng: -8.6731)
  • Add openingHoursSpecification
  • Add sameAs (Facebook, Instagram, LinkedIn URLs)
  • Add contactPoint with availableLanguage
  • Add priceRange and areaServed
  • Convert logo to ImageObject with raster format (PNG/JPG)
8
Add RealEstateListing Schema to Property Pages
Schema Effort: Medium (4-8 hrs)
{ "@context": "https://schema.org", "@type": "RealEstateListing", "name": "...", "url": "...", "datePosted": "...", "image": ["..."], "offers": { "@type": "Offer", "price": "...", "priceCurrency": "EUR" }, "address": { ... }, "geo": { ... }, "numberOfRooms": ..., "floorSize": { ... } }
9
Add Author Bylines and Article Schema
E-E-A-T Effort: Low (1 day)
  • Add author names with credentials to all guide and blog content
  • Format: "By [Name], Licensed Real Estate Agent (AMI 19855), [X] years in Algarve property market"
  • Implement Article / BlogPosting schema with Person author type
  • Add datePublished and dateModified (ISO 8601) to all content
10
Build Out About Us Page
E-E-A-T Effort: Medium (1-2 days)
  • Add individual team member bios with photos, credentials, languages, professional backgrounds
  • Implement Person schema for each team member
  • Include founding year, transaction count, countries served
  • Link AMI license to IMPIC verification portal
  • Add founder narrative about connection to Algarve market
11
Defer Non-Critical Third-Party Scripts
Performance Effort: Medium (4-8 hrs)
  • Load Tidio Chat only on user click (add static chat icon that triggers full widget)
  • Delay GTM tag firing for GA4 and Facebook Pixel by 5s or until idle
  • Defer GTranslate until after load event
  • Add async attribute to GTM script
  • Consider WP Rocket or FlyingPress for automated JS deferral
Expected impact: LCP improvement of 1.5-3.0s, INP improvement of 200-400ms
12
Fix LCP — Replace Carousel Hero
Performance Effort: Medium (4-8 hrs)
  • Replace Owl Carousel hero with static <img> element
  • Add fetchpriority="high" to LCP image
  • Add <link rel="preload"> for hero image in <head>
  • Serve hero image in AVIF/WebP format
  • Ensure LCP image does NOT have loading="lazy"
13
Add Image Alt Text Sitewide
Accessibility Images Effort: Medium (1-2 days)
  • Property images: include property type, location, key features
  • Logo: "ten Hoopen Realty logo"
  • Team photo: "ten Hoopen Realty team at Lagos office"
  • Partner logos: "[Company name] logo"
14
Add Security Headers
Security Effort: Low (1-2 hrs)

Add via Cloudflare Transform Rules:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: camera=(), microphone=(), geolocation=(self)
15
Create /llms.txt File
AI Readiness Effort: Low (2 hrs)
  • Company description and expertise areas
  • AMI license and regulatory standing
  • Key content pages for AI systems to prioritize
  • Content licensing terms for AI citation
  • Contact information for AI-related queries
First-mover advantage: No Algarve real estate agency likely has one yet.
16
Source All Statistics and Legal Claims
E-E-A-T AI Citations Effort: Medium (2-3 days)
  • Link IMI rates to Autoridade Tributaria e Aduaneira
  • Link IMT rates to official government schedules
  • Link legal process steps to Portuguese Civil Code references
  • Add "Last verified: [date]" to all data points
AI citation impact: Unsourced claims are treated as opinions, not facts. Sourced data dramatically increases citation probability.

🛠 Medium Priority — Fix Within 1 Month

10 items
17
Add FAQ Schema to Key Pages
Schema AI Readiness Effort: Medium (1-2 days)
  • /buying-property-in-algarve/ — buying process questions
  • /property-for-sale-in-lagos/ — Lagos market questions
  • /selling/ — selling process questions
  • Each answer: 134-167 words, direct answer first, include sourced statistics
18
Restructure Headings as Questions
On-Page AI Readiness Effort: Low (1 day)
  • "Legal and Tax Requirements" → "What Are the Legal and Tax Requirements for Buying Property in Portugal?"
  • "The Buying Process" → "What Are the Steps to Buying Property in the Algarve?"
  • Question headings directly match AI system queries
19
Add BreadcrumbList Schema
SchemaEffort: Low (2-4 hrs)
  • Enable in Yoast settings or add manually
  • Example: Home > Properties > Lagos > [Property Name]
20
Add Price Data to Location Pages
ContentEffort: Medium (1-2 days)
  • Add specific price ranges by property type and neighborhood
  • Add neighborhood-level content with distinct H2/H3 sections
  • Include dynamic property listing feed for freshness signals
21
Add Fee Transparency to Selling Page
TrustEffort: Low (2-4 hrs)
  • Explain commission/fee structure (even if ranges require consultation)
  • Add specific selling process steps with timeline estimates
  • Add seller-specific testimonials
  • Add capital gains tax overview for non-resident sellers
22
Fix CLS Issues
PerformanceEffort: Low-Medium (4-8 hrs)
  • Set explicit min-height on carousel container
  • Add width and height attributes to all <img> tags
  • Reserve space for GTranslate bar with CSS placeholder
  • Use font-display: optional for decorative fonts
  • Add aspect-ratio: 4/3 to property image containers
23
Enable Cloudflare APO + Image Optimization
PerformanceEffort: Low (1-2 hrs)
  • Enable Cloudflare APO ($5/month) — TTFB drops to 50-150ms
  • Enable Cloudflare Polish with WebP/AVIF conversion
  • Add <link rel="preconnect"> for cdn.proppy.app and fonts.gstatic.com
24
Add AI Crawler Directives to robots.txt
AI ReadinessEffort: Low (1 hr)
# AI Search Crawlers - Allowed User-agent: GPTBot Allow: / User-agent: OAI-SearchBot Allow: / User-agent: ClaudeBot Allow: / User-agent: PerplexityBot Allow: / # AI Training-Only Crawlers - Blocked User-agent: CCBot Disallow: / User-agent: cohere-ai Disallow: /
25
Optimize Elementor Asset Loading
PerformanceEffort: Low (2-4 hrs)
  • Enable "Improved Asset Loading" in Elementor Settings > Performance
  • Enable "Improved CSS Loading" experiment
  • Disable unused Elementor widgets
  • Consider Perfmatters or Asset CleanUp Pro for per-page script management
26
Publish English-Language Blog Content
ContentAI CitationsEffort: High (ongoing)
  • Publish market analysis articles in English first, Dutch as translated version
  • Target: "Lagos Portugal property market 2026", "Algarve real estate prices 2026"
  • Each article: 2-3 citable data points with sources
  • Fix /blog/ URL (currently 404) — redirect to /insights/

📋 Low Priority — Backlog

8 items
27
Implement IndexNow Protocol
Effort: Low (2-4 hrs)

Enables instant URL submission to Bing/Yandex when listings change. Use Rank Math's built-in support or Microsoft's IndexNow plugin.

28
Create Market Data Page
AI CitationsEffort: High (1 week + quarterly)

Create /algarve-property-market-data/ with average prices by municipality, YoY changes, transaction volumes, rental yields. Sourced from INE and Confidencial Imobiliario. Extremely high AI citation potential.

29
Build Reddit and YouTube Presence
Brand SignalsEffort: High (ongoing)
  • Reddit: participate in r/portugal, r/expats, r/digitalnomad with helpful answers
  • YouTube: property tour videos, Algarve lifestyle content, buying process walkthroughs
Key stat: YouTube mentions have ~0.737 correlation with AI citation probability.
30
Add Person Schema for Team Members
SchemaEffort: Low (2-4 hrs)

Implement on About Us page, linked to Organization schema.

31
Add ItemList Schema to Listing Pages
SchemaEffort: Medium (4-8 hrs)

Add ItemList with ListItem entries on /properties/ and location pages for carousel rich result eligibility.

32
Create Neighborhood Sub-Pages
ContentEffort: High (ongoing)

If search volume justifies: /property-for-sale-in-praia-da-luz/, /property-for-sale-in-burgau/, etc.

33
Consider Native Portuguese Content
International SEOEffort: Very High (ongoing)

Replace machine-translated /pt/ content with human-written Portuguese. A Portugal-based business should have native Portuguese as primary content for local search.

34
Investigate Elementor Alternatives for Key Pages
PerformanceEffort: Very High

For landing pages with high traffic: consider rebuilding with lighter builder (GenerateBlocks, Kadence) to reduce JS payload by 60-80%.

🔗 Verification Resources

PageSpeed Insights
pagespeed.web.dev
Rich Results Test
search.google.com/test/rich-results
Schema Validator
validator.schema.org
CrUX Dashboard
cruxvis.withgoogle.com
Google Search Console
Monitor indexing, CWV, rich results
WebPageTest
webpagetest.org (test from EU)