RecurSync — a Zoho CRM extension
Recurring meetings that actually sync — in both directions.
Zoho CRM has synced with Google Calendar for years, but never recurring meetings. Your Monday stand-up, the monthly board call, the every-other-Thursday check-in — those have always been the ones that quietly went missing. RecurSync is the extension that finally carries them across, and keeps them in step afterwards.
Why I built it
I’m Nate, and Finicky Fox is my one-person shop in St. Paul, Minnesota. The request for recurring-event sync between Zoho CRM and Google Calendar has been sitting in Zoho’s community forums for about fourteen years. People kept asking; the gap kept not closing. The usual workarounds are to enter every series twice, or to let a general-purpose automation tool flatten your series into dozens of unconnected one-off meetings.
So I wrote the thing that was missing. RecurSync understands a recurring series as a series — it translates the recurrence pattern itself between the two systems, so a weekly meeting stays one weekly meeting on both sides.
What it does
Install it in your Zoho CRM org, connect your Google account, pick a calendar. From then on the two stay matched, without anyone copying anything by hand.
Recurring series, kept whole
Daily, weekly, monthly and yearly patterns — including the awkward ones like “second Tuesday” and “last Friday” — translate between Google’s format and Zoho’s, along with end dates and occurrence counts.
Both directions
Create or change a meeting in either system and the other follows. Delete a series in one and it disappears from the other, expanded occurrences included.
Near real time
Google changes reach CRM in about a minute through a notification channel. CRM changes reach Google in seconds. An hourly backstop re-syncs anything a missed notification would otherwise have dropped.
Per person, not per org
Each CRM user connects their own Google account and syncs to the meetings they own. Connecting doesn’t expose your calendar to your colleagues or your admin.
Setting it up
- 1 Install the extension into your Zoho CRM org Your admin installs it once, the way any Marketplace extension is installed.
- 2 Each person clicks Connect Google’s own consent screen opens and asks for that person’s permission. Nobody connects on anyone else’s behalf.
- 3 Pick one calendar Choose which of your Google calendars should sync. Only that one is touched.
- 4 That’s it The settings screen shows when the last sync ran and flags anything that failed. Disconnect from the same screen whenever you want.
What RecurSync does with your Google Calendar data
RecurSync is not a web service with a login, and I don’t operate a server. The extension installs into your own Zoho CRM org and runs there, talking directly from your org to Google’s API. There is no Finicky Fox machine anywhere in that path, which means your calendar data never reaches me — not as a promise, but because no such system exists.
The permissions it asks for, and why
| Google scope | Why RecurSync needs it |
|---|---|
| calendar.readonly | Lists the calendars on your account so you can choose which one to sync. Used for nothing else, and never to read another calendar’s contents. |
| calendar.events | Reads events on the calendar you selected, and creates, updates or deletes the matching Google event when you change a meeting in CRM. This is the two-way sync itself — without write access it could only ever work one way. |
The fields it reads
Title, description, location, start and end times, the all-day flag, the recurrence rule, the event ID and version tag, and whether the event was cancelled. That is the complete list.
What it deliberately never touches
No attendees or guest lists. No organizer identity. No Google Meet or conferencing links. No attachments, colors, visibility flags or reminders. No other calendar on your account, and no free/busy lookups of anyone else. RecurSync also never adds attendees or invitations to the Google events it writes — nobody gets emailed because of this extension.
Google API Services User Data Policy. RecurSync’s use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements. Calendar data is used only to provide the sync you turned on. It is never sold, never used for advertising or profiling, and never transferred to anyone except as needed to provide the sync or where the law requires it.
The full detail — storage, retention, deletion, logs, your rights — is in the RecurSync privacy policy.
You can withdraw access at any time, from either end: click Disconnect in the RecurSync settings screen, or revoke it directly at myaccount.google.com/permissions. Either one stops the sync immediately.
What it doesn’t do — stated up front
I’d rather you know these before you buy than discover them afterwards.
- Editing a single occurrence creates a linked standalone meeting If you change just one instance of a series in Google, that occurrence arrives in CRM as its own meeting linked back to the series, rather than as an exception inside it. The information is all there; the shape is different.
- Unusual recurrence rules are skipped, not guessed at Patterns Zoho has no equivalent for — something like “the 20th week of the year” — sync their normal fields and log a warning instead of silently inventing a wrong pattern.
-
Series titles containing brackets or commas delete only the parent
When you delete such a series in Google, the parent CRM record is removed but the
expanded occurrences need clearing by hand. It’s a limitation in how Zoho’s
record search handles those characters, and it affects titles with
()or,in them. - One calendar per person Each user syncs a single Google calendar. That covers the case this was built for; if you need several, tell me and I’ll look at it.
Price
One price for the whole org, however many people connect. No per-user tier, no usage metering, no enterprise upsell. It’s a small tool that does one job properly, and it’s priced like one.
Questions go to a person — me
One person wrote this extension and one person answers the email about it. If something breaks, or you want to know whether it handles your particular calendar setup before you commit, just ask and you’ll get a straight answer.
Nate — Finicky Fox
hello@finickyfox.com
Saint Paul, Minnesota, USA