Title: SDAweb Calendar Sync for Google Calendar
Author: rstake
Published: <strong>15 de mayo de 2026</strong>
Last modified: 7 de octubre de 2026

---

Buscar plugins

![](https://ps.w.org/sdaweb-gcal-sync/assets/icon.svg?rev=3533428)

# SDAweb Calendar Sync for Google Calendar

 Por [rstake](https://profiles.wordpress.org/rstake/)

[Descargar](https://downloads.wordpress.org/plugin/sdaweb-gcal-sync.0.24.1.zip)

 * [Detalles](https://es.wordpress.org/plugins/sdaweb-gcal-sync/#description)
 * [Valoraciones](https://es.wordpress.org/plugins/sdaweb-gcal-sync/#reviews)
 *  [Instalación](https://es.wordpress.org/plugins/sdaweb-gcal-sync/#installation)
 * [Desarrollo](https://es.wordpress.org/plugins/sdaweb-gcal-sync/#developers)

 [Soporte](https://wordpress.org/support/plugin/sdaweb-gcal-sync/)

## Descripción

SDAweb Calendar Sync turns any Google Calendar into a polished, on-brand events 
display on your WordPress site — without duplicate data entry. Keep scheduling in
Google Calendar the way you already do; the plugin pulls those events in and keeps
your site in sync automatically.

It’s for anyone who already runs their events in Google Calendar and wants them 
to look like a native part of their site instead of an embedded iframe — businesses,
teams, venues, clubs, communities, and organisations of every kind.

Insert a calendar with a Gutenberg block, a shortcode, or a classic widget. All 
three share one render pipeline, so the output is identical however you add it.

#### Six ways to show your calendar

 * **List / Agenda** — chronological, optionally grouped by day, week, or month
 * **Month grid** — classic 7×6 calendar with multi-day event ribbons spanning across
   cells, today highlight (cell or whole-column style), optional ISO 8601 week-number
   column, and per-feed pastel chips
 * **Card grid** — upcoming events as styled cards, responsive
 * **Week** — 7 day columns, today highlighted
 * **Day** — single-day agenda
 * **Mini-month** — compact dot-density grid for sidebars and widgets, with a tap-
   to-expand event panel showing today + next upcoming events and a «Load more» 
   button

Switch between views with one setting, or expose a visitor-facing view-toggle pill
so visitors can switch themselves. Under the hood every view shares the same data
layer, the same CSS-variable system, and the same accessibility baseline.

#### Smart UX out of the box

 * **Hover popover on event chips** (Month, Week, Mini) — a floating card with date,
   time, location, calendar, recurrence summary, and a click-through link, so visitors
   get the full event detail without leaving the page. Desktop hover + keyboard 
   focus only; touch users keep direct click-through.
 * **Mobile auto-degrade Month  Mini** — below ~600px the full grid is replaced 
   by the compact Mini-month view, so phone visitors get a clean, tappable calendar
   with no extra work from you. One wrapper, two layouts, no JS swap.
 * **ICS subscribe dropdown** — one tap to add your events to a visitor’s own calendar:
   Google Calendar (web), Apple Calendar / Outlook (webcal), Android Google Calendar
   app (intent), and Copy-link with toast confirmation. Mobile becomes a bottom 
   sheet.
 * **Live search** + **jump-to-date picker** — optional chrome controls so visitors
   can filter or navigate quickly.
 * **Multi-day event ribbons** — week-spanning bars with arrow indicators when an
   event continues beyond the visible row.
 * **Recurring event indicator** — small ↻ icon with a plain-language cadence summary
   in the tooltip («Repeats weekly until 31 December 2026»).
 * **Per-display locale override** — render a calendar in a specific language (e.
   g. nb_NO) even when the site language differs, so you can run a localized calendar
   on a site that’s in another language.

#### Two authentication paths

 * **API key** — for calendars marked «Make available to public» in Google Calendar.
   One field, paste, done.
 * **Service Account JSON** — for **private** calendars without per-user OAuth. 
   Upload the JSON, share the calendar with the service-account email, you’re set.

Credentials are encrypted at rest using a key derived from your site’s authentication
salt. They are never echoed back into the admin UI — only the masked value and (
for service accounts) the public service-account email are shown.

#### Theme-aware out of the box

The plugin reads your active theme’s `theme.json` color palette and uses your `primary`,`
accent`, `foreground`, and `background` colors automatically. Per-display overrides
let you set custom primary, accent, today-highlight, and link colors and force light/
dark mode without touching code. Every design token is exposed as a CSS custom property
so a developer can fully restyle the calendar from their theme stylesheet.

#### Five built-in theme presets

One-click coordinated colour bundles: **Default** (clean blue), **Warm earth** (
cream + deep red), **High contrast** (solid black on white for AAA-stricter sites),**
Forest** (deep green), **Sunset** (warm coral + amber).

#### Accessibility built in

WCAG 2.2 AA baseline with several AAA touches:

 * Live contrast warnings on every colour picker — the admin UI shows the WCAG ratio
   against both light and dark surfaces with pass/fail markers as you choose colours
 * Automatic high-contrast overlay via `prefers-contrast: more`
 * Focus-visible halo: a 4px white ring behind the primary outline so focus stays
   visible against any chip background
 * `prefers-reduced-motion` honored everywhere
 * ARIA roles and labels on the month grid, navigation, popovers, and view-toggle
 * Semantic HTML throughout
 * RTL-aware via CSS logical properties
 * Tabular numerals for day numbers and time labels so single- and double-digit 
   values don’t drift

#### Built for the WordPress.org standard

 * Block editor first-class — server-side rendered, ServerSideRender preview, all
   the standard `InspectorControls`
 * Shortcode and classic widget on the same render pipeline
 * No bundled core libraries (no jQuery on front-end, no Guzzle, no Carbon, no Monolog)
 * No third-party authentication relay — your credentials only ever talk directly
   to googleapis.com
 * Translation ready via translate.wordpress.org once the plugin is published and
   indexed (no bundled `.po`/`.mo` — WordPress auto-loads locale files into `wp-
   content/languages/plugins/` per the WP Plugin Handbook), plurals via `_n()`, 
   JS strings via `wp_localize_script`
 * Free and GPLv2

#### For developers

Extension hooks are documented in `docs/hooks.md` inside the plugin folder. The 
first-release set includes filters for event data, event URLs, query args, cache
TTL, render output, palette resolution, plus actions for refresh and uninstall lifecycle.

### Third-Party Services

This plugin connects to the Google Calendar API to retrieve events from calendars
you configure.

 * Service: Google Calendar API v3
 * Website: https://developers.google.com/calendar
 * Terms of Service: https://developers.google.com/terms
 * Privacy Policy: https://policies.google.com/privacy

Data sent: the calendar ID(s) you configure, plus either your API key or a JSON 
Web Token signed with your service account credentials. Event data is returned to
your server and cached locally as WordPress transients. No event data is sent to
any third party.

The ICS subscribe feature, when enabled, serves a self-hosted iCalendar (.ics) feed
from your own site — built from the same calendar data already fetched via the Google
Calendar API above — so subscribers can add it in Google Calendar, Apple Calendar,
Outlook, or any other app that supports calendar subscriptions. No data is sent 
to any third party beyond the Google Calendar API connection already disclosed.

## Bloques

Este plugin proporciona 1 bloque.

 *   SDAweb Calendar Display events from one or more Google Calendars. Choose a 
   saved display or configure inline.

## Instalación

 1. Upload the plugin to your `/wp-content/plugins/` directory, or install it from 
    the Plugins screen in WordPress.
 2. Activate the plugin.
 3. Go to **Settings  SDAweb Calendar Sync** to add your first calendar.
 4. Choose API key (public calendars) or Service Account (private calendars), follow
    the in-app setup guide, save.
 5. Create a display, choose a view, and copy its shortcode — or insert the **SDAweb
    Calendar** block in a page.

## FAQ

### Do I need a Google account to use this plugin?

You need a Google Cloud project to generate either an API key (for public calendars)
or a service account (for private calendars). The plugin’s Help tab walks you through
both setups in 7–8 steps each. Setup is one-time per site.

### Does this plugin send my data anywhere other than Google?

No. Calendar data is fetched directly from `googleapis.com` using the Google Calendar
API. The plugin does not contact any SDAweb-controlled servers, analytics endpoints,
or third-party relays. There is no telemetry.

### Can I display a private (non-public) calendar?

Yes. Use the Service Account authentication option. The plugin shows you the service
account email; share your private calendar with that email in Google Calendar’s 
sharing settings, and the plugin can read it.

### How often does the plugin refresh events?

A WP-Cron job refreshes registered calendars in the background every 15 minutes.
Cache lifetime is configurable upward in the plugin settings (15 minutes is the 
enforced minimum). You can also click «Refresh now» on any calendar in the admin
to fetch immediately.

### Does it work with caching plugins?

Yes — the calendar HTML is part of the page output, so any page-cache plugin caches
it like any other content. The cache will refresh on its own schedule. If you need
immediate refresh after a calendar change, purge the page cache.

### Can I add multiple calendars to one display?

Yes. Each display picks one or more registered calendars and merges them. Events
are color-coded by calendar. A multi-feed legend strip can be enabled above the 
events; chips can be styled solid (single-feed) or pastel (multi-feed legibility).

### Will it work with my theme?

The plugin reads your active theme’s `theme.json` color palette automatically, so
calendar colors match the site by default with zero configuration. If you use a 
classic theme without `theme.json` (or want to override), every color is exposed
as a CSS variable that you can override from your theme stylesheet. Five built-in
theme presets give you coordinated palettes with one click.

### Is the plugin accessible?

Yes — built-in. WCAG 2.2 AA baseline includes `prefers-reduced-motion` and `prefers-
contrast: more` support, `:focus-visible` outlines with a white halo (visible on
any background), ARIA labelling on the month grid, navigation, popovers, and view-
toggle, semantic HTML throughout, RTL-aware via CSS logical properties, and live
contrast warnings in the colour-picker UI as you choose values.

### Can I show the calendar in a different language than the rest of the site?

Yes. Each display has an optional Locale override field — set it to `nb_NO`, `sv_SE`,
etc. and that calendar renders weekday names, month names, and built-in labels in
that language regardless of the site’s language. Useful when an English site hosts
Norwegian-audience content.

### Where are the extension hooks documented?

In `docs/hooks.md` inside the plugin folder. The plugin commits to keeping documented
hooks stable within a major version.

## Reseñas

No hay valoraciones para este plugin.

## Colaboradores y desarrolladores

«SDAweb Calendar Sync for Google Calendar» es un software de código abierto. Las
siguientes personas han colaborado con este plugin.

Colaboradores

 *   [ rstake ](https://profiles.wordpress.org/rstake/)
 *   [ sdaweb ](https://profiles.wordpress.org/sdaweb/)

«SDAweb Calendar Sync for Google Calendar» está traducido en 1 idioma. Gracias a
[los traductores](https://translate.wordpress.org/projects/wp-plugins/sdaweb-gcal-sync/contributors)
por sus contribuciones.

[Traduce «SDAweb Calendar Sync for Google Calendar» a tu idioma.](https://translate.wordpress.org/projects/wp-plugins/sdaweb-gcal-sync)

### ¿Interesado en el desarrollo?

[Revisa el código](https://plugins.trac.wordpress.org/browser/sdaweb-gcal-sync/),
echa un vistazo al [repositorio SVN](https://plugins.svn.wordpress.org/sdaweb-gcal-sync/)
o suscríbete al [registro de desarrollo](https://plugins.trac.wordpress.org/log/sdaweb-gcal-sync/)
por [RSS](https://plugins.trac.wordpress.org/log/sdaweb-gcal-sync/?limit=100&mode=stop_on_copy&format=rss).

## Registro de cambios

The most recent releases are listed here. The complete history is in
 docs/CHANGELOG.
md bundled with the plugin.

#### 0.24.1

 * Accessibility: in Month view, multi-day events (the bars that stretch across 
   several days) were not marked as cells of the calendar grid, so screen readers
   could misreport the grid’s rows and columns (axe-core: aria-required-children).
   Each bar is now a grid cell. Nothing changes on screen.
 * Accessibility: the full date on each Month day number (e.g. «7 October 2026»)
   was attached in a way most screen readers ignore, so only the bare number was
   read. The full date is now read out; the number on screen looks the same. Thanks
   to a K–12 school district for testing against WCAG 2.1 AA and reporting both.

#### 0.24.0

 * Changed: an event whose description carries an «Info: » line used to show a small
   ⓘ in front of its title — easy to miss, and it said nothing about what it meant.
   It now shows a «Read more » badge after the title, in the display’s accent colour,
   in List, Cards, Day, Week, Upcoming, the hover popover and the «+N more» list;
   the compact Month and mini-calendar chips show just the arrow. The text can be
   changed per display under Localisation & overrides (e.g. «Les mer»), and the 
   badge can get its own colour under Event links. Nothing changes for events without
   a marked link.
 * New: «Only link events with a marked link» under Event links. Tick it to link
   only the events that have an «Info:» line — every other event is shown as plain
   text, with no link to Google Calendar. Off by default, so nothing changes until
   you tick it.
 * Changed: in the display editor the two «open in» menus under Event links looked
   like duplicates; they are now «Open Google Calendar links in» and «Open «Read
   more» links in», and the link settings are greyed out when the option they depend
   on is off.

#### 0.23.6

 * Fixed: on a site whose timezone lies west of the calendar’s — any site in the
   Americas with a Google calendar left on its default timezone, for example — every
   all-day event was shown one day early, in all views and in the hover popover.
   All-day events are now placed on their own date in the display’s timezone. Sites
   in Europe and further east were not affected and see no change.
 * Fixed: in the Subscribe popover, the «Android (Google Calendar app)» choice had
   an empty link, so on an Android phone it never opened the Calendar app; it reloaded
   the page or landed on Google’s «Add by URL» page instead. It opens the app again.
   The other three choices were unaffected.

#### 0.23.5

 * Fixed: a busy Month, Week, Day or mini calendar silently lost its last days. «
   Max events» (default 50) was applied to the calendar grids as well, so everything
   after the 50th event of the period was left out. The grids now always show every
   event in their date range; «Max events» applies to List and Cards, as its new
   description says. If a calendar of yours had more events than the limit, the 
   missing ones appear after this update.
 * Accessibility: on phones the view switcher (List / Month / Cards …) shows icons
   only, and the hidden labels were removed in a way that also hid them from screen
   readers, so VoiceOver and TalkBack announced five unnamed links. The labels are
   now hidden visually only. Nothing changes on screen.
 * Fixed: on a server without PHP’s mbstring extension the mini calendar (also used
   as the phone version of every Month display), the Upcoming list and any display
   with a saved search filter stopped with a fatal error. They now work without 
   it; on servers that have mbstring — nearly all — nothing changes.
 * Fixed: a calendar or display whose name WordPress cannot turn into plain letters—
   a name starting with an emoji, or written in Cyrillic, Greek, Chinese, Japanese…—
   was saved under an address the plugin could not find again: it could not be edited
   or deleted, and its shortcode showed nothing. New ones get a usable address («
   📅 Kalender»  `kalender`), renaming a display does too, and records already stuck
   are repaired automatically on update. Names in Norwegian and other Latin-alphabet
   languages were never affected.

## Meta

 *  Versión **0.24.1**
 *  Última actualización **hace 1 semana**
 *  Instalaciones activas **70+**
 *  Versión de WordPress ** 6.5 o superior **
 *  Probado hasta **7.1.3**
 *  Versión de PHP ** 7.4 o superior **
 *  Idiomas
 * [English (US)](https://wordpress.org/plugins/sdaweb-gcal-sync/) y [Norwegian (Bokmål)](https://nb.wordpress.org/plugins/sdaweb-gcal-sync/).
 *  [Traducir a tu idioma](https://translate.wordpress.org/projects/wp-plugins/sdaweb-gcal-sync)
 * Etiquetas:
 * [agenda](https://es.wordpress.org/plugins/tags/agenda/)[calendar](https://es.wordpress.org/plugins/tags/calendar/)
   [events](https://es.wordpress.org/plugins/tags/events/)[google calendar](https://es.wordpress.org/plugins/tags/google-calendar/)
   [schedule](https://es.wordpress.org/plugins/tags/schedule/)
 *  [Vista avanzada](https://es.wordpress.org/plugins/sdaweb-gcal-sync/advanced/)

## Valoraciones

Aún no se han enviado valoraciones.

[Tu valoración](https://wordpress.org/support/plugin/sdaweb-gcal-sync/reviews/#new-post)

[Ver todas las reseñas](https://wordpress.org/support/plugin/sdaweb-gcal-sync/reviews/)

## Colaboradores

 *   [ rstake ](https://profiles.wordpress.org/rstake/)
 *   [ sdaweb ](https://profiles.wordpress.org/sdaweb/)

## Soporte

Problemas resueltos en los últimos dos meses:

     0 de 1

 [Ver el foro de soporte](https://wordpress.org/support/plugin/sdaweb-gcal-sync/)