JOURNAL
Published on
CONNECTING A CRMTO GOOGLE SHEETSWITHOUT A DEVELOPER
An afternoon’s work. It holds if you settle first who is right.
THE ANSWER
You can connect a CRM to Google Sheets without a developer in three ways. The scheduled export your CRM already offers. A no-code connector that copies one record at a time. A script inside the sheet. Before the tool, settle the direction: who writes, who reads. And give the link an owner, or it stalls quietly.

AI-generated image
IN SHORT
One direction: the CRM writes, the sheet reads.
No ID column, no updates — only duplicates.
A link with no owner shows stale figures.
BEFORE THE TOOL
DECIDE WHO WRITES AND WHO READS
A link between a CRM and a sheet starts with one question. Which of the two is right. If the CRM writes and the sheet reads, the sheet is a photograph. If both write, you own two truths that drift apart. One direction, CRM to sheet: that is the version that holds. (Nobody edits the columns that arrive from outside.)
THE THREE ROUTES
HOW TO CONNECT CRM AND SHEETS
Three routes, three different limits. Choose on one thing: what you are willing to keep standing in 6 months.
The export you already have
Nearly every CRM exports to CSV, and many can do it on a schedule. It adds nothing new to look after. The limit: it rewrites everything each time, so anything you typed by hand goes.
A no-code connector
Zapier or Make pick up an event in the CRM: a new contact, a stage that changes. They add or update a row, with no code. The limit: one record at a time, and the cost follows the runs.
A script inside the sheet
Google Sheets includes Apps Script: code that runs on the sheet. It calls the CRM’s API, rewrites only the columns you name, and handles awkward records. The limit is double: it is code, and somebody has to read it in 6 months.

AI-generated image
THE BUILD
SIX STEPS, IN THIS ORDER
Turn the sheet into a table
One header row at the top, records underneath, nothing else. No blank rows for breathing space, no headings partway down, no merged cells. A handsome sheet is a sheet nothing can write into.
Add the identifier column
The ID the CRM gives the record, not the company name. It is the only way to update the right row instead of adding one. Without it, every pass leaves duplicates.
Write the direction down and keep to it
CRM to sheet, or sheet to CRM. If you truly need both, keep them on separate fields: the CRM owns its own, you own the columns you add. A column with two masters loses a value.
Separate the data from the calculation
Formulas, charts and notes don’t belong in the columns arriving from outside. They belong in a second sheet that reads the first. A sync can then rewrite its own data without touching your work.
Connect on a copy and try the awkward records
A record with no email, an empty date, a name with an apostrophe, an amount with a comma, a record archived in the CRM. Those are what break links. Ordinary records work even when the link is badly made.
Give it an owner and a signal
A person who answers when it stalls, a column with the time of the last update, an address for the errors. A link that stops without saying so keeps showing old figures. Share the sheet with named people: it holds your client list.
WHERE IT BREAKS
THE MISTAKES THAT KILL IT
The renamed column
The link looks the header up by name. The day it becomes “Client email” instead of “Email”, the sync stops. Headers change together with the link, never on their own.
Dates read backwards
A sheet reads dates by the file’s locale settings, not by whoever opens it. A convention different from the CRM’s turns 3 April into 4 March, flagging nothing. Check it once, before you fill the sheet.
Deletions that never arrive
Almost every link adds and updates; very few delete. A record archived in the CRM stays in the sheet and keeps counting. If the sheet counts something, add a status column.
A frequency chosen by instinct
Every platform caps how often it can be called, and every connector costs per run. Ask how stale a figure would have to be before a decision changed. Hardly any sheet read in the morning needs refreshing every 5 minutes.
A link that fails silently is worse than a link that was never built.
QUESTIONS
- Scheduled export or connector?
- If a photograph refreshed once a day is enough, take the export. It adds nothing to maintain and nothing to pay per run. A connector earns its place when something must happen right after an event.
- Can the sheet write back into the CRM?
- It can, and it is the direction that breaks most often. Confine it to fields nobody else touches, on a separate sheet, with a column marking the rows already sent. Everything else stays one-way.
- Do I need to code to use Apps Script?
- Adapting an existing script takes care and a copy to try it on. Writing one that handles errors, paged results and API limits takes real programming. The difference shows the day it stops and nobody knows where to look.
- When does this stop being enough?
- When more people read the sheet than understand it. When the columns added by hand matter more than the ones from the CRM. When the sheet decides rather than shows: from there you need a different home for the data.
You can do this on your own, and I’d tell you to, for as long as it holds. If the link has become the thing somebody rebuilds every Monday, write to me. Then it is the whole process worth looking at.