OccuzFix sheet

Give every occuz.com page its real date

Every page on occuz.com tells crawlers it was last changed on 30 September 2022, including the articles you published this year and the pages about Pixel & Intent. The date comes from one shared block of template code, so the fix is one change there plus a few lines in the article template. Below: what your pages say tonight, the code to paste, and a 5-minute check.

Read live from occuz.com on 8 Nov 2026, 20:55 UTC: all 77 URLs in your sitemap. Prepared for the Occuz team by Helene Brooks, Monveka.

77 of 77pages tell crawlers they last changed on 30 Sep 2022
0 of 77pages give crawlers a publish date
0 of 77pages carry Article schema with dates
23 of 24other pages give the homepage as their own address

What your pages say tonight

Each article page prints two sets of social tags. The first is the article's own, and it is right. The second is a shared block that every one of the 77 pages prints, and it repeats the same tags with site-wide values that contradict the first set, including the 2022 date. Which one a given crawler keeps is up to that crawler. This is from Why 90% of Your Ad Clicks Will Never Convert (abridged, the lines are verbatim):

View source, tonightoccuz.com/article/why-90-percent-...
<!-- Open Graph / Twitter -->            (the article's own block, correct)
<meta property="og:title" content="Why 90% of Your Ad Clicks Will Never Convert" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://occuz.com/article/why-90-percent-of-your-ad-clicks-will-never-convert" />
...
                                         (then the shared block, on every page)
<meta property="og:type" content="website" />
<meta property="og:title" content="Occuz" />
<meta property="og:url" content="https://occuz.com/" />
<meta property="article:modified_time" content="2022-09-30T07:55:44+00:00" />
<meta property="og:image" content="images/200x100BSL%20copy.png" />
<meta name="twitter:label1" content="Est. reading time" />
<meta name="twitter:data1" content="5 minutes" />

So a crawler reading that page is told it is both an article and a website, that its address is both the article and the homepage, and that it last changed in 2022. Your own sitemap already knows better: it gives the 53 articles their own dates, from 5 Jun 2025 to 2 Nov 2026. The template just never prints them.

Your About page says Pixel & Intent was released on 14 November 2025. To a machine, every page about it is from 2022, more than three years earlier.

Why it is worth an hour

Honest limit: Google says it weighs several signals and does not promise to show any date. This fix makes every signal you control agree with each other.

The fix, in three edits

1

Shared head include: drop the 2022 line, stop contradicting article tags

In the template file that prints the block above on every page, remove the hard-coded article:modified_time, print the site-wide og: tags only on pages that have not printed their own, give each page its own og:url, and make og:image an absolute URL. Rename the two marked variables to yours.

Replace the shared block with1-shared-head-include.php
<?php
/*
 * Occuz: shared head include (the block every page prints; on an article page today it is
 * lines 58-74 of the HTML). Read live from occuz.com on 2026-11-08 20:55 UTC.
 * Paste-ready, but rename the two variables marked RENAME to whatever your templates already use.
 *
 * What changes:
 *   1. The hard-coded  article:modified_time = 2022-09-30T07:55:44+00:00  line is gone.
 *      Article pages print their own real dates (see 2-article-template-head.php).
 *   2. og:type / og:title / og:description / og:url / og:image are printed only when the page
 *      has not already printed its own. Today article pages print BOTH sets, so a reader gets
 *      og:type "article" and og:type "website", and two different og:url values.
 *   3. og:url is the page's own address instead of https://occuz.com/ on every page.
 *   4. og:image is an absolute URL (Open Graph readers do not resolve "images/...").
 *   5. The fixed "Est. reading time: 5 minutes" label is dropped (it shows on all 77 pages,
 *      including the legal pages).
 */

// RENAME: the canonical URL your page already prints in <link rel="canonical">.
$ogUrl = isset($pageCanonical) ? $pageCanonical
       : 'https://occuz.com' . strtok($_SERVER['REQUEST_URI'], '?');

// RENAME: set $pageHasOwnOg = true; in any template that prints its own Open Graph block
// (the article template does), before this include runs.
if (empty($pageHasOwnOg)) { ?>
	<meta property="og:type" content="website" />
	<meta property="og:title" content="Occuz" />
	<meta property="og:description" content="URL shortening platform with link tracking, AI analytics as well as social, Lead, Link in Bio, SMS & Email campaign creation and QR Codes generation with realtime dynamic editing" />
	<meta property="og:url" content="<?= htmlspecialchars($ogUrl, ENT_QUOTES) ?>" />
	<meta property="og:image" content="https://occuz.com/images/200x100BSL%20copy.png" />
	<meta property="og:image:width" content="1024" />
	<meta property="og:image:height" content="1025" />
	<meta property="og:image:type" content="image/png" />
	<meta property="og:site_name" content="Occuz" />
	<meta property="article:publisher" content="https://www.facebook.com/occudiz/" />
	<meta name="twitter:card" content="summary_large_image" />
<?php } ?>
	<meta property="og:locale" content="en_US" />
	<meta name="twitter:site" content="@occuz_" />
<meta name="msapplication-TileImage" content="https://occuz.com/images/200x100BSL%20copy.png" />
<?php /* No article:modified_time here any more. Only articles carry it, each with its own date. */ ?>
2

Article template: print the real dates and an Article block

Under the article's existing Open Graph block, print article:published_time, article:modified_time and one Article JSON-LD block from the article's own database row. Use the same date column your sitemap generator already reads for each article's <lastmod>.

Add to the article template2-article-template-head.php
<?php
/*
 * Occuz: add to the article template, directly under the existing
 * "<!-- Open Graph / Twitter -->" block (the one that already prints og:type "article").
 *
 * $article is the row your article page already loads from the blogs database.
 * RENAME the date columns to yours. Use the same column your sitemap generator reads for
 * <lastmod> on the /article/... URLs: that column already holds a different, real date for
 * each article (the sitemap shows them). If you have no separate "updated" column, both
 * lines can read the same column.
 */
$pageHasOwnOg = true; // tells the shared head include not to print its site-wide og: block

$published = (new DateTime($article['published_at']))->format(DATE_ATOM);                          // RENAME
$modified  = (new DateTime($article['updated_at'] ?? $article['published_at']))->format(DATE_ATOM); // RENAME

$articleUrl   = 'https://occuz.com/article/' . $article['slug']; // RENAME if your slug column differs
$articleTitle = $article['title'];                               // RENAME (the og:title you already print)
$articleImage = $article['image_url'];                           // RENAME (the og:image you already print, absolute)
?>
    <meta property="article:published_time" content="<?= $published ?>" />
    <meta property="article:modified_time" content="<?= $modified ?>" />
    <script type="application/ld+json">
<?= json_encode([
    '@context'         => 'https://schema.org',
    '@type'            => 'Article',
    '@id'              => $articleUrl . '#article',
    'mainEntityOfPage' => $articleUrl,
    'headline'         => $articleTitle,
    'image'            => [$articleImage],
    'datePublished'    => $published,
    'dateModified'     => $modified,
    'author'           => ['@type' => 'Organization', 'name' => 'Occuz', 'url' => 'https://occuz.com'],
    'publisher'        => ['@id' => 'https://occuz.com/#organization'],
], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) ?>

    </script>
<?php
/*
 * Optional, recommended by Google: show the same date on the page itself, near the title.
 *   <p class="post-date">Published <?= (new DateTime($article['published_at']))->format('j F Y') ?></p>
 * Keep it identical to datePublished above.
 */

What it prints for one article, using the date your sitemap gives it:

Rendered example2b-article-jsonld-example.json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "@id": "https://occuz.com/article/why-90-percent-of-your-ad-clicks-will-never-convert#article",
  "mainEntityOfPage": "https://occuz.com/article/why-90-percent-of-your-ad-clicks-will-never-convert",
  "headline": "Why 90% of Your Ad Clicks Will Never Convert",
  "image": ["https://occuz.com/images/blog-images/blog-47.jpg"],
  "datePublished": "2026-06-14T19:11:20+00:00",
  "dateModified": "2026-06-14T19:11:20+00:00",
  "author": { "@type": "Organization", "name": "Occuz", "url": "https://occuz.com" },
  "publisher": { "@id": "https://occuz.com/#organization" }
}
3

One line in your site-wide schema: the logo

The Organization block on all 77 pages points crawlers to https://occuz.com/logo.png, which redirects to /oops. Point it at the image your og:image already uses, which loads:

In the @graph Organization node3-organization-logo-fix.txt
"logo": "https://occuz.com/images/200x100BSL%20copy.png",
Optional, while you are in there: your sitemap stamps the 24 non-article pages with the time it was generated (2026-11-05T23:00:03 two days ago, 2026-11-07T23:00:04 tonight), which tells crawlers all 24 changed that night. Google uses <lastmod> only "if it's consistently and verifiably ... accurate" (Google, build a sitemap). A two-line fix is in 4-sitemap-static-lastmod.php.

The 5-minute check

Once it is live:

All 77 URLs, as they read tonight

Every URL in your sitemap, what its head says today, and the date your own sitemap gives it. After the fix, the middle column should match the right one for every article.

Show all 77 URLs (53 articles, 24 other pages)
PageSays todayYour sitemap's date
/30 Sep 2022none on the site, take it from your files
/about30 Sep 2022none on the site, take it from your files
/analytics30 Sep 2022none on the site, take it from your files
/api30 Sep 2022none on the site, take it from your files
/articles30 Sep 2022none on the site, take it from your files
/contact30 Sep 2022none on the site, take it from your files
/domains30 Sep 2022none on the site, take it from your files
/faq30 Sep 2022none on the site, take it from your files
/intent-signals30 Sep 2022none on the site, take it from your files
/pricing30 Sep 2022none on the site, take it from your files
/standardcampaign30 Sep 2022none on the site, take it from your files
/smsemailcampaign30 Sep 2022none on the site, take it from your files
/contactcampaign30 Sep 2022none on the site, take it from your files
/leadscampaign30 Sep 2022none on the site, take it from your files
/linkinbio30 Sep 2022none on the site, take it from your files
/terms30 Sep 2022none on the site, take it from your files
/privacy30 Sep 2022none on the site, take it from your files
/dpa30 Sep 2022none on the site, take it from your files
/sla30 Sep 2022none on the site, take it from your files
/cookie30 Sep 2022none on the site, take it from your files
/acceptableuse30 Sep 2022none on the site, take it from your files
/refund30 Sep 2022none on the site, take it from your files
/dmca30 Sep 2022none on the site, take it from your files
/disclaimer30 Sep 2022none on the site, take it from your files
/article/the-untapped-power-of-short-urls-in-performance-marketing30 Sep 20222 Nov 2026
/article/why-every-marketing-team-should-care-about-redirect-data30 Sep 202225 Oct 2026
/article/how-smart-redirects-can-improve-marketing-performance30 Sep 202218 Oct 2026
/article/what-happens-before-a-landing-page-loads-can-be-more-valuable-than-what-happens-after30 Sep 202211 Oct 2026
/article/beyond-link-shortening-turning-every-click-into-intelligence30 Sep 20224 Oct 2026
/article/your-url-shortener-is-sitting-on-valuable-marketing-data30 Sep 202228 Sep 2026
/article/how-to-improve-campaign-performance-without-changing-your-ads30 Sep 202221 Sep 2026
/article/why-conversion-tracking-isn-t-enough-anymore30 Sep 202214 Sep 2026
/article/the-missing-layer-in-modern-marketing-attribution30 Sep 20227 Sep 2026
/article/what-marketing-platforms-miss-between-the-click-and-the-conversion30 Sep 202231 Aug 2026
/article/why-meta-and-google-still-can-t-tell-you-which-clicks-matter-most30 Sep 202224 Aug 2026
/article/meta-pixel-vs-google-analytics-vs-intent-scoring-difference30 Sep 202217 Aug 2026
/article/the-difference-between-traffic-volume-and-traffic-quality30 Sep 202210 Aug 2026
/article/why-more-traffic-often-leads-to-worse-marketing-results30 Sep 20223 Aug 2026
/article/intent-scoring-explained-without-the-buzzwords30 Sep 202226 Jul 2026
/article/predict-conversion-potential-early30 Sep 202219 Jul 2026
/article/the-traffic-quality-problem-nobody-talks-about30 Sep 202212 Jul 2026
/article/why-conversion-rate-alone-is-misleading30 Sep 20224 Jul 2026
/article/not-all-clicks-are-equal-identifying-intent30 Sep 202228 Jun 2026
/article/the-hidden-cost-of-optimizing-for-click-through-rate30 Sep 202221 Jun 2026
/article/why-90-percent-of-your-ad-clicks-will-never-convert30 Sep 202214 Jun 2026
/article/beyond-clicks-intent-scoring-transforms-marketing30 Sep 20227 Jun 2026
/article/how-to-use-short-urls-to-enhance-user-trust30 Sep 202226 May 2026
/article/best-url-shortening-practices-for-nonprofits30 Sep 202219 May 2026
/article/the-psychology-of-clicks-why-short-urls-attract-more-traffic30 Sep 202212 May 2026
/article/top-url-shortening-tools-and-their-features-in-202630 Sep 20225 May 2026
/article/how-to-use-short-urls-in-sms-marketing-campaigns30 Sep 202228 Apr 2026
/article/the-environmental-impact-of-efficient-url-shortening30 Sep 202221 Apr 2026
/article/how-to-avoid-broken-links-with-url-shorteners30 Sep 202214 Apr 2026
/article/the-technical-side-how-url-shorteners-work-behind-the-scenes30 Sep 20227 Apr 2026
/article/how-short-urls-can-improve-link-management-for-businesses30 Sep 202231 Mar 2026
/article/the-future-of-url-shortening-trends-to-watch30 Sep 202224 Mar 2026
/article/how-to-track-campaign-performance-using-short-urls30 Sep 202217 Mar 2026
/article/understanding-url-redirection-and-its-benefits30 Sep 202210 Mar 2026
/article/how-short-urls-can-simplify-content-sharing30 Sep 20223 Mar 2026
/article/url-shorteners-and-their-role-in-influencer-marketing30 Sep 202224 Feb 2026
/article/create-branded-short-urls-with-your-own-domain30 Sep 202217 Feb 2026
/article/case-study-brands-that-successfully-used-short-urls30 Sep 20229 Jun 2025
/article/how-url-shorteners-can-help-with-ab-testing30 Sep 20229 Jun 2025
/article/the-science-behind-effective-url-shortening-strategies30 Sep 20229 Jun 2025
/article/using-short-urls-to-boost-brand-recognition30 Sep 20229 Jun 2025
/article/how-short-urls-help-manage-affiliate-marketing-links30 Sep 20229 Jun 2025
/article/security-risks-and-how-to-safeguard-short-urls30 Sep 20229 Jun 2025
/article/the-impact-of-short-urls-on-mobile-user-experience30 Sep 20229 Jun 2025
/article/integrating-short-urls-with-qr-codes-for-offline-marketing30 Sep 20229 Jun 2025
/article/the-history-and-evolution-of-url-shortening-services30 Sep 20229 Jun 2025
/article/how-to-use-short-urls-in-email-campaigns-effectively30 Sep 20229 Jun 2025
/article/short-urls-vs-long-urls-which-is-better-for-seo30 Sep 20225 Jun 2025
/article/best-practices-for-creating-custom-short-urls30 Sep 20225 Jun 2025
/article/tracking-clicks-the-analytics-power-of-short-urls30 Sep 20225 Jun 2025
/article/the-role-of-url-shorteners-in-modern-marketing30 Sep 20225 Jun 2025
/article/how-short-urls-improve-social-media-engagement30 Sep 20225 Jun 2025
/article/power-of-short-urls-enhancing-user-experience30 Sep 20225 Jun 2025

For the 24 non-article pages the sitemap date is the nightly generation time, so it is not a real edit date. Use the date the page file last changed.

Sources