WordPress / Elementor

An Elementor Marketing Site Built for Technical SEO From the Ground Up

Building a multilingual marketing agency site on Elementor with a full modular SEO stack — structured data, E-E-A-T, IndexNow, and precise hreflang.

  • WordPress
  • Elementor
  • Polylang
  • AIOSEO
  • PHP
Illustration of a webpage with a search-ranking checkmark

The brief

A marketing agency needed its own site to practice what it sold: fast, structured, and genuinely competitive in search — not just a pretty page-builder template. The build ran on Elementor, which meant the interesting engineering wasn’t “how do we build a page” (the page builder handles that) but “how do we make sure a page-builder site doesn’t ship the loose, non-semantic markup that page builders are notorious for in Google’s eyes.”

The SEO stack, chosen deliberately

Rather than one all-purpose SEO plugin left on defaults, the site runs a modular SEO suite where each capability is its own enabled module — a conscious choice over a single monolithic plugin, because it makes it obvious which SEO features are actually active and lets each one be reasoned about independently:

  • E-E-A-T signals — author and expertise markup, because Google’s own guidelines now explicitly reward demonstrable experience and authority, not just keyword match.
  • Image SEO — automated alt text and image sitemap handling, so a page builder’s habit of dropping decorative images doesn’t leave a trail of empty alt="" tags.
  • IndexNow — pings search engines the moment content changes, instead of waiting for the next crawl cycle. For a marketing site publishing on a schedule, that’s the difference between same-day and same-week visibility for new content.
  • Local business schema — structured data so the agency’s business details are machine-readable, not just visible text in a footer.
  • News sitemap, redirects, and a REST API module — a proper redirect map (so old URLs never 404 during a redesign) and sitemap coverage tuned to what’s actually worth crawling.

Multilingual, done at the protocol level

The site runs in multiple languages via Polylang, and the default hreflang output was subtly wrong — English pages were tagged hreflang="en" when the actual audience and canonical signal needed en-US, and there was no x-default fallback for language-less traffic. Both were real ranking and international-targeting bugs, fixed with two small filters in the child theme:

add_filter('pll_rel_hreflang_attributes', function ($hreflangs) {
    if (isset($hreflangs['en'])) {
        $hreflangs['en-US'] = $hreflangs['en'];
        unset($hreflangs['en']);
    }
    return $hreflangs;
});

add_filter('pll_rel_hreflang_attributes', function ($hreflangs) {
    $hreflangs['x-default'] = $hreflangs['uk'];
    return $hreflangs;
});

Two filters, four lines each — but hreflang mistakes are exactly the kind of thing that silently costs a multilingual site international rankings for months before anyone notices, because nothing about them throws an error. You only find them by actually reading the emitted <head> against the spec.

The rest of the stack

  • Conversion tooling wired in rather than bolted on: an email capture platform, UTM-tagged campaign tracking, and analytics, so marketing campaigns had attribution from click to signup.
  • A booking/events layer for webinars and consultations — scheduling handled by a dedicated booking plugin rather than a contact form pretending to be a calendar.
  • Deliberate performance trade-offs. Native lazy-loading was turned off site-wide for above-the-fold Elementor sections after it was found to hurt perceived load speed on hero imagery — a case where the “correct by default” browser behavior was wrong for this specific layout, and turning it off was the right call.

The takeaway

Page builders get a bad reputation for SEO because most sites run them on defaults. The actual lesson from this build: Elementor isn’t the ceiling. The ceiling is whether someone goes through the modular SEO surface area — structured data, hreflang correctness, sitemap and redirect hygiene, image markup — one piece at a time instead of trusting a single plugin’s out-of-the-box settings.