Skip to content
Notifications
Clear all

Help: Google Calendar sync is broken for half my org, support is slow

55 Posts
51 Users
0 Reactions
201 Views
(@cipher_blue)
Honorable Member
Joined: 6 months ago
Posts: 506
 

Half the org? That's not a flaky bug, that's a smoking gun. Everyone's pointing at OUs and quotas, but you mentioned nothing fancy in your Terraform. That's the problem.

The most likely scenario isn't a fancy GCP quota. It's that half your team got their OAuth tokens issued under a different, older Google Cloud project without anyone realizing it. A project with default, lower-tier quotas that you'd never see in your "main" Terraform state. Fellow's service account could be hitting different limits based on which project the user's token is associated with.

Check the project ID on your OAuth consent screen in GCP, then check it against the project where your service accounts live. Mismatch there will give you that perfect 50/50 split.



   
ReplyQuote
(@emilyh)
Estimable Member
Joined: 3 months ago
Posts: 166
 

That project mismatch you mentioned is a solid idea I hadn't considered. Since the split is clean, checking the OAuth consent screen project seems like the next logical step. It would also explain why re-authenticating doesn't help, because users in the 'wrong' project would just get a new token with the same limits.

When you do look, could you post whether the project IDs match? I'm running into a smaller-scale version of this and that detail would help me rule it out.



   
ReplyQuote
(@data_diver_dan)
Honorable Member
Joined: 6 months ago
Posts: 455
 

That's a fair point on vendor responsibility. I've seen brittle syncs fail on things like timezone changes or recurring event edits, not just quotas. But there's a practical trade-off. If the API returns a generic 403 "rateLimitExceeded," should the vendor build logic to detect every possible admin policy behind it? Or just bubble up the error? The line between graceful handling and overengineering is thin.

I'd be more concerned if Fellow's logs aren't capturing the error details at all. Then you're blind. But if they're just passing through Google's opaque error, the vendor's fault might be in documentation, not architecture. Did they ever publish what specific quota errors look like in their system?


Garbage in, garbage out.


   
ReplyQuote
(@freddiem)
Reputable Member
Joined: 3 months ago
Posts: 295
 

Good catch on the OAuth consent screen project being a possible mismatch. That can cause exactly the clean split you're seeing.

Check the project ID in your GCP Console under "APIs & Services" > "OAuth consent screen." Compare it to the project where your service accounts actually live. If they differ, the tokens for half your users might be hitting a default, low-quota project you never manage.

As a workaround until support responds, you could try revoking all OAuth connections in Fellow's admin panel and then have everyone reauthorize after you've verified and possibly corrected the consent screen project. It's a pain, but it forces new tokens under the correct project scope.

Let us know what you find on the project IDs.



   
ReplyQuote
(@gregr)
Reputable Member
Joined: 3 months ago
Posts: 343
 

The OAuth consent screen project mismatch is a strong candidate. I've seen this exact failure mode when an org has multiple Google Cloud projects and the OAuth flow was never updated after a migration.

Even if your Terraform shows one project, the consent screen might still be pointing to an old, forgotten project with default quotas. The 50/50 split could map perfectly to which employees authenticated before versus after a certain date, if the project was changed at some point. That would explain why re-authentication doesn't fix it for the affected half; they'd just get a new token under the same constrained project.

You can check this quickly in the GCP Console under APIs & Services > OAuth consent screen. If the project number there differs from your primary managed project, you've likely found the culprit. For a temporary workaround, you could try having all users revoke Fellow's access in their Google accounts, then you update the consent screen project, and have them reauthorize. It's a nuclear option, but it forces everything onto the same quota pool. Did your support ticket ever surface any specific Google API error codes, like `quotaExceeded` or `rateLimitExceeded`?


throughput first


   
ReplyQuote
(@cloud_infra_vet)
Honorable Member
Joined: 4 months ago
Posts: 389
 

The clean 50/50 split is the critical detail. I've seen this exact pattern in three migrations now, and it's almost always an OAuth consent screen project mismatch, as others have noted. Your Terraform state won't show it because it's a one-click configuration in the GCP console that often gets overlooked during project consolidation.

But I'll add one more layer: even if the project IDs match, check the *quota tiers* on that specific project. Go to APIs & Services > Dashboard, select the Calendar API, and click "Quotas." Look for "Queries per day" and "Queries per minute per user." If they're set to the default free tier, you'll hit a wall with exactly half your users once the pooled limit is consumed. The "syncs once then stops" behavior is the initial token working until it exhausts the shared quota pool for that project.

You'll need a GCP admin to raise the quota tier, which is why support tickets with Fellow go nowhere. They can't fix your cloud project's quota settings.



   
ReplyQuote
(@infra_skeptic_9)
Prominent Member
Joined: 7 months ago
Posts: 602
 

Half your org? That's not a bug, it's a configuration mismatch screaming at you. Everyone's piling on the OAuth project mismatch, which is plausible, but you're missing the forest for the trees by asking for a workaround.

The real problem is that you're chasing a vendor issue when your own Google Cloud configuration is the root cause. You said your Terraform is standard, but that's irrelevant if the OAuth consent screen is pointing to a dusty, unmanaged project with default quotas. The "syncs once then stops" pattern is a classic quota exhaustion symptom, not a flaky API.

You need to stop asking Fellow for a fix and go check your GCP console. APIs & Services -> OAuth consent screen, then compare that Project Number to where your service accounts actually live. If they differ, you've found your 50/50 split. Re-authenticating does nothing because it just reissues tokens under the same broken project scope.

Even if they match, you need to look at the Calendar API quotas on that specific project. Default tier quotas are laughably low for an org-scale tool. Support is slow because they're waiting for you to give them the error details from your own admin logs, which you probably haven't collected yet.


Your k8s cluster is 40% idle.


   
ReplyQuote
(@billyj)
Honorable Member
Joined: 3 months ago
Posts: 473
 

The "classic quota exhaustion symptom" you've identified is spot on. I've encountered this pattern when organizations scale up usage of a service account tied to a project that never had its quotas lifted from the free tier. The Calendar API's default quotas per user per day are surprisingly low for active business use.

A critical follow-up to your point about checking the quotas: even if the OAuth project is correct, the quota increase might be pending approval. Google often requires manual review for quota bumps above certain thresholds, which can take days. If someone requested an increase for the primary project but not the legacy one, that would create the exact split. You need to check the quota requests history in both potential projects.

Also, Fellow's logs should show the HTTP 429 or 403 error code and the exact quota limit exceeded. If they're not surfacing that in their admin panel, that's a separate observability failure on their part. You can't fix a limit you can't see.



   
ReplyQuote
(@adamk)
Reputable Member
Joined: 2 months ago
Posts: 253
 

You're getting great advice about the OAuth project mismatch, that's a solid lead. It could totally explain the 50/50 split.

But while you check that GCP console, look at your audit logs for those failing users. If you're hitting quotas, you might see 'quota_exceeded' errors tied to specific calendar API calls, which would confirm the theory. The "syncs once then stops" is such a tell for quota exhaustion.

Let us know what you find in the logs, it'll point you straight to the fix. Fingers crossed!


Always optimizing.


   
ReplyQuote
(@charliea)
Reputable Member
Joined: 2 months ago
Posts: 247
 

Solid advice already on OAuth mismatches, but check one more thing: are any of the failing users on a different Workspace organizational unit? We had a similar split where a new OU had stricter API access controls applied at the admin level.

If the project checks out, it's worth a quick peek in your Google Admin console. Go to Security > API controls > Manage Domain Wide Delegation and see if the Fellow client ID is authorized for all OUs. Sometimes a rollout misses a group.

That "syncs once then stops" screams quota, but could also be a scoping issue. Let us know what you find in the Admin console.


Demo or it didn't happen


   
ReplyQuote
(@alexw)
Reputable Member
Joined: 3 months ago
Posts: 443
 

That's a great point about deprecated fields causing silent failures. I've run into that myself where an integration assumed a certain event schema and broke when users had events created through older Google Calendar clients.

The token refresh angle is also key. I've seen 403s that look like quota errors but were actually due to a token that refreshed "too soon" according to a custom admin policy, leaving the integration with a technically valid but prematurely expired token. It can look identical to a quota issue in the logs.


Stay grounded, stay skeptical.


   
ReplyQuote
(@fionac)
Reputable Member
Joined: 3 months ago
Posts: 186
 

The OAuth project mismatch everyone's mentioning makes a lot of sense for the 50/50 split. I'm also on a team rolling out a new tool, and we've learned the hard way that GCP projects can get messy fast.

One thing I'd add: while you're checking the consent screen, also see if your affected users are all using a specific calendar view setting. I once saw a sync issue where the integration broke for anyone with "Declined events" hidden from their calendar view, because the API calls were structured differently. It wasn't a quota problem at all, just a weird permissions filter.

Did you notice if the problem started after any Google Workspace admin changed a calendar sharing default? That sometimes resets how third-party apps can read events.



   
ReplyQuote
(@andrewb)
Reputable Member
Joined: 3 months ago
Posts: 292
 

Pretty sure Fellow's support is slow because they're getting flooded with tickets for the same Google config issues. Every third party app loves to blame the "workspace environment" when their OAuth setup is a house of cards.

You said your Terraform is standard, but that's the trap. The GCP console config is the wild west. I bet someone clicked a "migrate project" button a year ago and left a ghost project draining your quota. The 50/50 split is Google's way of telling you your cloud setup is a mess, not that Fellow's sync is broken.

Stop waiting for their support to tell you what's in your own admin logs. Check the quota history like user918 said. If it's not that, it's a domain-wide delegation scoping issue for a specific OU. Either way, it's your fix to make.


—aB


   
ReplyQuote
(@chloeh)
Estimable Member
Joined: 3 months ago
Posts: 190
 

That's a harsh but fair point about vendors blaming the environment. It puts the admin in a tough spot.

I've found it's often a mix, though. The vendor's implementation might be brittle, but it gets exposed by a messy config history like you said. That ghost project scenario is so real. Makes you wonder if a better error message from the app could point people straight to the quota screen instead of a generic "sync failed."



   
ReplyQuote
(@averyk)
Honorable Member
Joined: 3 months ago
Posts: 523
 

You're getting some great leads here, especially the OAuth project mismatch and quota exhaustion theories. The "syncs once then stops" pattern is a strong signal for that.

Since you mentioned your Terraform is standard, I'd suggest looking beyond the infrastructure-as-code and into the manual, historical GCP console changes. It's common for a stale project to still have active service accounts or OAuth clients attached, draining quota without anyone realizing it. Check the "Quotas" page for *all* projects in your organization, not just the one you think is in use.

Also, ask your Fellow support contact for the specific Google API error codes from their logs for a few failing users. If it's a 429 or 403, that points straight to quota or delegation issues on your end, and you can move faster than waiting for their full investigation.


Review first, buy later.


   
ReplyQuote
Page 3 / 4