
I did not want to notify Bing manually every time I published or updated a page on ICanUp. I integrated IndexNow into Laravel with a key endpoint, HTTP client, queued submission job, localized URL generation for posts, pages and categories, deduplication, and tests.

While working on my sitemap, I found a subtle problem: a public page could change through its translation table while the parent model updated_at stayed unchanged. This article shows how I verified the case and chose the correct lastmod for localized pages.

In a multilingual Laravel project, having separate UK and EN URLs is not enough. I explain how I configured canonical and hreflang in ICanUp, connected language versions, added x-default, and verified that search engines receive the correct relationship between localized pages.

In a multilingual Laravel project, x-default can easily look like another language version. In ICanUp, I use it differently: x-default points to the default locale URL. I walk through the real HreflangService, its relationship with canonical URLs, and the edge cases across different content types.

In ICanUp, BlogPosting JSON-LD connects an article not only to its SEO metadata but also to a real author entity. I show how I represent the author as a Person, keep structured data aligned with the canonical URL and localized metadata, and render it directly in the SSR HTML.

In ICanUp, visible breadcrumbs and BreadcrumbList JSON-LD describe the same page hierarchy. I show how I connect navigation with structured data, generate sequential positions, use localized canonical URLs, and avoid creating a separate SEO hierarchy on top of application breadcrumbs.

In ICanUp, Telegram already showed the Post cover, title, and description correctly, while LinkedIn produced an incomplete or incorrect preview. I audited the server-rendered Open Graph tags, the LinkedInBot response, image URL and metadata, duplicate head tags, and platform caching. The case showed why a preview working in one messenger does not prove the social metadata contract is complete.

In ICanUp, robots.txt, sitemap, and canonical URLs were implemented at different stages, but in production they need to describe the same public URL contract. This is the checklist I now use to verify crawl rules, sitemap eligibility, canonical identity, localization, raw HTML, and HTTP responses after deployment.

SEO in ICanUp started with Posts, but once Pages and PostSeries became full public entities, duplicating meta titles, descriptions, Open Graph, fallbacks, canonical URLs, and hreflang rules across modules became risky. This article explains the reusable SEO layer, localized metadata, polymorphic integration, entity-specific fallbacks, and why shared SEO persistence does not mean identical SEO behavior for every model.