Google account stopped working after a week

Google OAuth defaults to Testing mode, which expires refresh tokens after 7 days. Here's why, what to do this week, and how to fix it for good.

The 7-day wall is Google, not you

Your reports were sending fine, then on day 7 or 8 the Google account went dead. New auth prompts, expired tokens, the lot. You haven’t done anything wrong. Google’s OAuth consent screen is in Testing mode by default, and Testing mode forcibly expires refresh tokens after 7 days.

That’s the whole story. The fix is moving the consent screen to In production. It’s free, it’s quick, and once it’s done you’re back to connect once, send forever.

What to do this week

If a report is due and you don’t have time to deal with Google verification right now, reconnect the account and carry on:

  • Open the affected site in SendTidings
  • Disconnect the Google integration (Analytics or Search Console, whichever flagged)
  • Reconnect it with the same Google account
  • The next report will send normally

That buys you another 7 days. It’s a sticking plaster, not a fix; you’ll be back here next week unless you sort the consent screen.

The actual fix: move to Production

This is a one-time job per Google Cloud project. Ten minutes, no review required for the scopes SendTidings uses.

  1. Go to the Google Cloud Console and pick the project tied to your OAuth client
  2. Open APIs & ServicesOAuth consent screen
  3. You’ll see Publishing status: Testing. Hit Publish app
  4. Confirm. Status flips to In production

That’s it. Refresh tokens stop expiring after 7 days. Existing connections keep working — no reconnect cascade needed.

Do I need Google to verify the app?

For the scopes SendTidings requests (read-only Analytics and Search Console data), no. Verification is only required if you’re requesting sensitive or restricted scopes, or if your app is shown to users outside your organisation in ways Google considers risky. A small agency reading its own clients’ analytics doesn’t trigger it.

If Google’s screen warns about verification when you publish, read what scopes it’s flagging. It’s usually fine to proceed.

How SendTidings warns you

We don’t want you to find out at the worst possible moment. When a Google grant expires or gets revoked, you’ll see:

  • A warning on the dashboard for the affected account/site
  • An email alert — a daily health check probes your Google connections and emails the org’s admins when one newly breaks

If you’ve dismissed the dashboard warning and forgotten (the Dismiss alert button only clears the warning, it doesn’t fix anything), the integration is still broken. Reconnect, then publish the consent screen so it stops happening.

Why Google does this

Testing mode is meant for development. Google assumes anyone in Testing is still building, so they cap refresh tokens at 7 days to force you to think about going live before real users depend on the app. It’s a reasonable default for genuine dev work and a daft default for anyone who’s already shipping.

Every agency new to Google hits this wall. It’s not your setup, it’s not SendTidings — it’s the default state of every new OAuth client until you publish.

See also: Connect Google Analytics 4