Last Updated: September 3, 2026
This guide is for operators who already built their own Google Cloud project and OAuth app to connect Google services to SeedlyCRM, and now want CRMLynk to handle it instead.
If you have never set up a Google Cloud project, skip to Fresh setup at the bottom. It is shorter.
Read the What you lose section before you start. There is one capability that goes away, and one step that will break your existing connections if you skip it.
Today, your SeedlyCRM deployment holds your own
GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET.
Your users see your app name on the Google consent screen, and you are
responsible for your own Google verification, your own redirect URIs,
and your own API access applications.
After switching, SeedlyCRM sends users to CRMLynk, CRMLynk builds the consent screen with its own credentials, and hands the resulting tokens back to your deployment. Your users see “CRMLynk” on the consent screen. You hold no Google credentials at all.
Your data does not move. Tokens are still stored encrypted in your own Convex deployment. CRMLynk holds them only for a five minute retrieval window during the connect flow.
| Google service | Scope |
|---|---|
| Google Analytics (read) | analytics.readonly |
| Google Calendar | calendar, calendar.events |
| Google Ads | adwords |
| Google Ads conversions | datamanager |
| Google Business Profile | business.manage |
| Search Console (read) | webmasters.readonly |
| Drive and Sheets, per file | drive.file |
Gmail sync stops working.
Gmail scopes are what Google calls “restricted”, a tier above “sensitive”. They require an annual third party security assessment (CASA) that costs several thousand dollars. CRMLynk deliberately does not carry restricted scopes, which is what lets a subscription start from $49 a month.
If Gmail sync currently works on your deployment through your own verified Google app, switching to CRMLynk turns it off. CRMLynk removes Gmail scopes from any consent request it receives, so reconnecting will not bring it back.
Your options:
Google Sheets access becomes per file. Instead of reaching any spreadsheet in the account, the Sheets and Drive workflow steps open a file picker, and the file you pick is the file the CRM can touch. This requires SeedlyCRM 5.7.1 or newer. See If you are below 5.7.1.
Every existing Google connection must be reconnected after you switch.
A Google refresh token is bound to the OAuth client that created it. Your existing connections hold refresh tokens minted by your Google app. After you switch, SeedlyCRM routes all refreshes through CRMLynk, which presents CRMLynk’s credentials. Google rejects that pairing.
SeedlyCRM does not record which OAuth client issued each connection, so it cannot detect this and reconnect for you.
Symptom if you skip it: connections look fine until the current access token expires, usually within an hour, then every Google feature on that connection starts failing to refresh. It looks like an outage rather than a setup step, which is why it is worth doing deliberately up front.
Reconnecting takes about a minute per connection and does not delete anything.
Go to crmlynk.com/subscribe. You will need your Convex site URL, which is where your SeedlyCRM backend runs.
It ends in .convex.site and looks like
https://cheerful-hedgehog-123.convex.site.
To find it, open the Convex dashboard for your production deployment.
If the URL you see ends in .convex.cloud, change
.cloud to .site, keeping the name
identical.
Do not enter the address your team uses to log in to the CRM. That is your app domain, not your backend, and CRMLynk cannot reach it. The subscribe form will reject a wrong URL and tell you what to fix.
Your API key arrives by email as soon as payment clears. It starts
with sk_live_. It is also shown on the page you land on
after checkout.
Against your production Convex deployment:
npx convex env set --prod CRMLYNK_URL https://auth.crmlynk.com
npx convex env set --prod CRMLYNK_API_KEY sk_live_your_key_here
Managed mode turns on only when both are set. Setting one does nothing, which is deliberate, so a half finished switch cannot break a working install.
Do not delete GOOGLE_CLIENT_ID or
GOOGLE_CLIENT_SECRET yet. They are ignored while managed
mode is on, and keeping them means step 6 is a one line rollback if you
hit a problem.
In the CRM, go to each place a Google account is connected and reconnect it:
You will see the CRMLynk consent screen instead of your own app name. That is the confirmation that managed mode is live.
Work through every sub-account. A connection you forget will keep failing silently until someone notices a stale dashboard.
Load a dashboard that reads Google data and confirm it populates. Analytics and Business Profile are the quickest to eyeball because they render on the main dashboard.
If a connection errors, reconnect it once more. If it still errors, email [email protected] with your Convex site URL and the error text.
After a few days of everything working:
GOOGLE_CLIENT_ID and
GOOGLE_CLIENT_SECRET from your Convex environment.Remove the two CRMLynk variables and your deployment returns to your own Google app immediately:
npx convex env remove --prod CRMLYNK_URL
npx convex env remove --prod CRMLYNK_API_KEY
You then have to reconnect every Google integration again, for the same reason as step 4, in the other direction.
Older SeedlyCRM versions ask Google for a broad Sheets permission that CRMLynk no longer requests. CRMLynk removes it automatically, so your connections will work, but the Sheets and Drive workflow steps expect you to paste a spreadsheet ID, and that will fail because the CRM no longer has account wide Sheets access.
Upgrade to 5.7.1 or newer before relying on Sheets or Drive workflow steps. On 5.7.1 and newer those steps open a file picker, and picking a file is what grants access to it. There is a one click prompt to re-grant spreadsheets you had previously entered by ID.
Everything else, Calendar, Analytics, Business Profile and Ads, works on older versions.
If you never built your own Google Cloud project, there is nothing to migrate:
.convex.site URL.You never create a Google Cloud project, never apply for Business Profile access, never request an Ads developer token, and never go through Google verification.
[email protected]. Include your Convex site URL, it is the fastest way for us to look up your subscription.