JOURNAL

Claude in Google Sheets can clean up your CRM. Read the merges first

Claude for Google Workspace is in beta, and Claude can now clean data right inside Google Sheets. Five runs in the sidebar itself on 240 invented Danish companies: Sonnet 5.5 and Opus 5.5 merged nothing wrongly, the "same name or domain" formula merged 13 pairs wrongly, and an installed skill got used without being named. The skill and the test sheet are free.

12 October 2026·12 min read·Claude · Google Sheets · CRM · Claude for Google Workspace · claude news

TL;DR: Claude now works inside Google Sheets, and an obvious first job is finding the duplicate companies in the customer list. I had Claude run it in the sidebar itself, in my account, five times with Sonnet 5.5 and Opus 5.5, on a sheet of 240 invented Danish companies. None of the five runs merged anything wrongly, and each found 11 or 12 of the 12 duplicate pairs. The "same name or same domain" formula merged 13 pairs wrongly. An installed skill made Claude more cautious, even when nobody asked for it. Read the proposed merges before they reach your CRM, because in a CRM like HubSpot a merge can't be undone. The skill and the test sheet are free: download the zip.

Four of the five runs in the Google Sheets sidebar itself, recorded on 7 October 2026 with Sonnet 5.5 and Opus 5.5. The recordings are time-compressed and the film shows by how much. Invented companies.Film: Brinvik

On 6 October, Claude for Google Workspace went into public beta on every paid Claude plan. Claude opens in a sidebar next to your doc, sheet or deck, reads the file and edits it in place. In Google Sheets, according to Anthropic, Claude can write formulas, build pivot tables and charts and, when data needs cleaning, "pull a range into Python and write the results back into the sheet".

In the sidebar you pick a model and an effort level and type your request. Before Claude edits the sheet, a card appears saying "Claude wants to run a script", with a list of the changes and three buttons: Deny, Always allow and Allow once. In my account the model picker showed Fable 5.1, Opus 5.5 and Sonnet 5.5, with older models under More models. Haiku wasn't there.

The person likely to try this first is the one who owns the customer list: a sales or RevOps lead with a CRM export and a suspicion that plenty of companies are in there twice. The test ran on 7 October with the same request in Danish every time: find the duplicates, write them to a new tab with a reason, and don't touch the export.

Animation from a real screen recording of the Claude for Sheets sidebar. The request in Danish sits at the top. A card slides up: 'Permission required', 'Claude wants to run a script' and Claude's description, in Danish, of a read-only check on CVR and domain, a list of four planned steps and the buttons Deny, Always allow and Allow once. The cursor presses Allow once, the card goes, and Claude gets to work.
The card you see before Claude touches the sheet. Here Opus 5.5 asked permission for a script that only read. Recorded 7 October 2026, the start is time-compressed.

Your sheet has an undo button. Your CRM may not

In the sheet you can undo everything. Claude edits as you, and every change lands in version history. The dangerous step comes later, when the list of suggestions turns into merges in the CRM. Check what your own system can do. In HubSpot it can't be done: "once you've merged two records, it is not possible to unmerge them", HubSpot says in its guide to merging records. What was two records becomes one.

So the number that matters most in this test is how many pairs of different companies each method put together. A missed duplicate costs you a second look next month. A wrong merge moves one customer's history onto another company.

The test sheet holds 240 invented Danish companies in the columns a typical CRM export has, plus a CVR number (the Danish company registration number) where there is one. Claude Code built it beforehand. Ten companies are in there two or three times, 12 duplicate pairs in all, the way it can happen in a real CRM: a row from a web form with no CVR and no address, a Danish letter typed as two plain ones, A/S against AS. Ten groups look alike without being the same company.

Dot plot with seven rows, one per method. Left: duplicate pairs found, of 12. Right: pairs merged wrongly. The same-name-or-domain formula: 9 found, 13 wrong. The same-CVR formula: 5 and 0. Five runs in the sidebar: Sonnet 5.5 Medium 12 and 0, Opus 5.5 Medium 12 and 0, Sonnet 5.5 Medium with the skill named 11 and 0, Sonnet 5.5 High with the skill installed 11 and 0, and Sonnet 5.5 High with the skill switched off 12 and 0.
One run per setup. Read the right-hand side first: wrong merges are the ones you can't always undo in the CRM.

All five runs in the sidebar kept the right-hand side at zero. So did the CVR formula, but it only found five.

A shared domain isn't the same company

A common formula merges rows when the name is the same or the domain is the same. On the test sheet it found 9 of the 12 pairs and merged 13 pairs wrongly.

It fell into four kinds of trap. Small firms with gmail.com or hotmail.dk as their domain were merged even though they have nothing to do with each other. Krone Gruppen and two subsidiaries share krone.dk but each has its own CVR number, and they became one record. And Nordisk Plast A/S was merged with Nordisk Plast Holding A/S, the holding company above it.

A diagram with three domains as hubs: gmail.com, hotmail.dk and krone.dk. From each hub, lines run out to the companies that carry that domain in the CRM: four small firms on gmail.com, two on hotmail.dk, and three companies in the Krone group, each with its own CVR number. The formula has drawn a dark red ring around each group and made it one company.
A shared domain isn't an identity. The formula sees one ring where there are four, two and three companies.

The fourth was the same name in two cities: Hansen VVS in Odense and Hansen VVS in Aalborg became one record, and so did two painters with the same name in Vejle and Holstebro. Meanwhile the formula missed three real duplicates because the names weren't identical: Aarhus Tagdaekning written with and without the Danish letters, Hedegaard Maskiner spelled two ways, and Lindholm Data, which had renamed itself Nordvind IT and kept its CVR number.

None of the runs in the sidebar fell into those traps. All five named the Krone companies and Nordisk Plast as pairs they had kept apart on purpose, because the CVR numbers differ.

The CVR formula is safe and finds five

The safe formula is dull: merge only rows with the same CVR number, once you've stripped out DK, spaces and dots. It found 5 of 12 and merged nothing wrongly. It can't see the rest, because one of the two rows has no CVR number. That's the row from the web form, the email sync or the trade fair list.

The last seven pairs need judgement: that a ventilation firm typed once with the Danish letter and once as "oe", on the same domain, is one company; that Kvist Logistik is in there three times; and that "Jensen's Bageri" and "Jensens Bageri" are one bakery. That judgement is what you use Claude for.

Sonnet 5.5 on Medium found 12 of 12 in a minute and a half and asked once for permission to run a script that wrote the result to a new tab. Opus 5.5 on Medium also found 12 of 12, but took three minutes and asked three times, including for a script that only read the sheet. Afterwards Opus read its own result back. Neither merged anything wrongly. Opus ran second and could read Sonnet's line in the log tab, so the two runs aren't independent.

Both pointed at the same pair as the uncertain one: the rename from Lindholm Data to Nordvind IT. "It's probably a renamed company, so check it before merging," Sonnet wrote (translated from Danish). With one run each you can't crown a winner. You can see that the slower model didn't find more than the faster one on this job. That fits the Sonnet 5.5 vs Opus 5.5 test: pick the model by the job.

An installed skill gets used, even when you don't ask for it

The obvious next step was to write the Danish rules down. Claude Code wrote a skill, crm-dedupe-dk: the CVR number is the company, different CVR numbers are never merged, the three Danish letters are compared with their two-letter spellings, and gmail.com says nothing about a company. The skill went into my Claude account, and then it showed up in the sidebar.

With the skill named in the request, Sonnet found 11 of 12 and merged nothing wrongly. It also wrote down which record to keep and which to merge into it, as the skill asks. The pair it held back was Skovgaard Revision I/S and Skovgaard Revisionsfirma: same domain, but the names don't match, and one row has neither a CVR number nor an address. It "should also be checked by hand", Claude wrote (translated from Danish).

The next run didn't name the skill. Sonnet opened it on its own anyway, followed its rules and held back the same pair. Only once the skill was switched off in the account did Sonnet merge Skovgaard again and find 12 of 12, with a note that the pair "should be confirmed" (translated from Danish). That was right: the two Skovgaard rows are the same company.

So the skill made Claude more cautious, and that cost one real duplicate. The trial runs in Claude Code showed the same: with no CVR column in the file, Sonnet found 8 pairs with the skill and 11 without. So check which skills are switched on in your account before you hand the sidebar a job, because they get used without being named. And use the skill as your checklist when you read the suggestions. It's in the zip.

The first test sheet was too easy

Claude Code built the test sheet and ran 20 trials on it before anything went near the sidebar. In the first version, every duplicate pair shared an address, and Sonnet found every one without a skill by leaning on the address. A duplicate rarely looks like that. The second row comes in through another door, a web form or an email sync, with no address.

The sheet was rebuilt so that in eight of the ten duplicate groups one row has no address or a different one, and two traps were added: three firms in the same office share, and two firms with nearly the same name at the same address. An export from Danish Excel, with semicolons, Danish column names and CVR numbers written with dots, changed nothing for Sonnet with the skill. The second sheet is the one that went into the sidebar.

There are two caveats on the sidebar numbers. There's one run per setup, so 12 against 11 isn't a difference between models. And only the first run was blind. The sidebar keeps a shared log tab in the spreadsheet, Claude Log, and from the second run on Claude read it before it started. The log named the pairs earlier runs had kept apart. If you test this yourself, use a fresh sheet for every run.

That's why the test sheet is in the zip: 240 companies, the answer key and a small script that counts how many duplicates a list found and how many pairs it merged wrongly. Run your own model and your own skill on it before you give them your own customer list.

How to read a proposed merge

Ask Claude to put its suggestions on a new tab with a reason for each merge, then read them against the tree below.

A decision tree for one proposed merge. First question: do both rows have a CVR number? If yes and it's the same, merge. If yes and it's different, never merge. If a CVR number is missing, look at the domain: a free email domain like gmail.com or hotmail.dk says nothing. If several CVR numbers share the domain, it's a group of companies. If it's the same name in two cities and nothing else, leave it to a person. Otherwise merge, with a reason.
The questions for each proposed merge. The branch for different CVR numbers is the one that stops the most wrong merges.

That's the branch the formula skipped when it merged Nordisk Plast A/S with Nordisk Plast Holding A/S: same domain, two CVR numbers. Claude kept them apart in all five runs and said why.

Read what Claude says about its own work, too. All five answers said that all or part of the result hadn't been read back after it was written to the sheet. That's honest, and it's a reason to look yourself. When the card asks for permission, press Allow once rather than Always allow, so you see each change before it happens. Run big lists in batches, because according to Anthropic's guide Google stops a single operation after six minutes.

Before you put the customer list in the sidebar, check your plan. On Team and Enterprise your data processing agreement applies; on Pro and Max, the consumer terms. According to Anthropic's guide, inputs and outputs are deleted within 30 days. The extension doesn't inherit custom retention settings your organisation may have set, and zero data retention isn't available in the beta. A customer list with contact people is personal data, so decide which columns go in. To find duplicate companies, Claude needs neither your contacts' names nor their email addresses.

Internal AI tools start with the rules in your CRM

As an AI consultant, I set Claude up for sales and RevOps teams. The hard part is the rules for your own fields, whichever CRM you run: where the CVR number lives, or whether it's there at all, which domains cover a group of companies, and who gets to approve a merge. I write those rules as a skill, test it on a sheet with your own traps, and set it up so the whole team has the same skill and the same model in Claude for Google Workspace.

That's part of my internal AI tools work, and it's the kind of AI for revenue operations that saves time without costing a customer's history. Send me the column names from your export, without the customers, and I'll tell you what the rules need to handle.

FAQ

Frequently asked questions

Not inside the CRM. With Claude for Google Workspace, Claude works on an export in Google Sheets and suggests which rows are the same company. In this test, Sonnet 5.5 and Opus 5.5 found 11 or 12 of 12 duplicate pairs in five runs in the sidebar, without a single wrong merge. You do the merging in your CRM afterwards.

It depends on the system. In HubSpot, two records can't be separated again once they're merged, HubSpot says itself. Check what your own CRM can do, and read the suggestions before they become merges.

In this test, Sonnet 5.5 and Opus 5.5 found the same number of duplicates, and neither merged anything wrongly. Sonnet on Medium finished in half the time. That's one run each, and Opus ran after Sonnet, so test the model you have on a sheet where you know the answer.

Yes, it did in this test. Sonnet 5.5 opened an installed skill without being asked and followed its rules. The skills in your Claude account are available in the sidebar, so check which ones are switched on before you hand it a job.

That depends on your plan and your data. On Team and Enterprise your data processing agreement applies; on Pro and Max, the consumer terms. According to Anthropic, data is deleted within 30 days, and zero data retention isn't available in the beta. Claude doesn't need your contacts' names or emails to find duplicate companies, so leave them in the CRM.

Claude for Google Workspace is in beta on Pro, Max, Team and Enterprise. You install it from the Google Workspace Marketplace, or your Google admin installs it for the whole organisation. Then you'll find Claude under Extensions in Docs, Sheets and Slides.

Sources

How this article was made. This article was made together with AI. Overall: AI about 80 percent, Kim about 20 percent. Counting production alone, AI did about 91 percent. Claude Code built the test sheet and the skill and ran 20 trials, before Claude ran the test five times in the Google Sheets sidebar in Kim's account. Kim started and stopped four of the recordings and switched the skill off between two runs. He turned down the first film and asked for a calmer one that shows one run at a time. Three Claude agents acting as critical reviewers sharpened the angle. Kim wrote the rules, the voice and the method in advance. The numbers are a qualified estimate, not a measured log.

Portrait banner on a light ground. The headline "Who did the work?", below it two numbers for AI and Kim, a bar divided in the same proportion, and eight phase bars with their own labels underneath.
The split is a qualified estimate over the finished task, not a measured log.

Get new essays by email.

Roughly twice a month. Same voice. No list rental, no retargeting.

Protected by Cloudflare Turnstile. No challenge, no CAPTCHA. Brinvik never shares your address.