Google indexing of events and event like content items

A client of mine has trainings and courses on their website Aus- und Weiterbildungen — Reformierte Kirche Kanton Zürich

Lately we found out that Google isn't indexing them as one would expect.

  • Courses for 2021 don't show up at all (only if you add 2021 in the search)
  • Courses put to private, still show up pointing to the login
  • Courses that are long over show up before the new ones, that are open for registration
  • Courses that happen more than once a year and have multiple content items show up only once

Example search terms I tested:

  • Sprechen und Auftreten im Gottesdienst
  • Facebook in der Praxis (+ Kirche)
  • ZMS für Einsteigende
  • Sozialberatung in Ihrer Kirchgemeinde (some corrections have been tried on this one)

I checked the content items and the dates format and similar seem correct.
The sitemap registered and updated with Google only shows courses that are not expired.

PDFs and other material located inside those older courses are still published within the sitemap.

Maybe it would help to not list those outdated PDFs if the related event ist already expired?

If a content item is not available for the public anymore, should the login page return a 404 instead of some 3xx?

What would be best practices to improve the indexing with Google?
Which changes would make the biggest impact?
Things I could improve with those content types or for Plone in general?

Without looking into too much details (sorry!), may I suggest registering your website on the Google Search Console? If Google understands that a page is an event, then you'll be able to see the validation errors there, providing you with a start point.

You need special privileges to access inactive content (i.e. content which is either expired or not yet effective). Most search engines will verify their cache from time to time and remove stale entries. Maybe, you see this effect (at least partially - e.g. for non periodic events). If this should be the case for you, choose the inactive configuration appropriately (from my point of view, it is good when Google does not index inactive content).

Special logic is necessary to handle periodic events -- logic which may not be available for a search engine.

@tiberiuichim the site is registered with Google Search Console and testing with that :wink:

@dieter I'll definitely make sure files contained within an expired course won't show up in the sitemap - probably a subscriber that sets the same expiration on the child as well.

The "periodic" courses don't use occurrences and are separate content items - don't think special logic is needed then.

If that doesn't help enough we'll set those courses to private...
And will test with a 403 for the unauthorized redirect.