Back to work

Case study 01 · HubSpot · APRIL 2025 → Present

HubSpot for Google
Sheets

How I designed a new AI-powered distribution surface that meets spreadsheet users where they live, and earns its way into HubSpot.

hero
HubSpot for Google Sheets sidebar add-on showing the AI sales assistant inside a spreadsheet
ROLE
Senior Product Designer
Design DRI - research, end-to-end vision, craft
TEAM
Downmarket Distribution
Cross-functional pod · PM, Eng, Research
TIMELINE
Sept 2025 → Present
Beta to Spring Spotlight '26 launch
PLATFORM
Google Workspace
Sheets sidebar add-on

When I joined the project, we were a small team with a big ambition. The brief sounded simple: build a Sheets add-on. But the real question underneath it was harder.

Can HubSpot earn trust inside a spreadsheet before it ever asks someone to buy a CRM?

This is the story of how we answered that question.

HubSpot's growth engine ran on organic search, and that model was breaking down: AI Overviews cut organic click-throughs by 58%, and HubSpot's top-of-funnel demand dropped 6.5%.

Competitors and niche add-ons were mopping up demand inside the Google Workspace Marketplace while HubSpot waited for people to find us. We needed a front door that lived where our users already spent their days.

The question wasn't how to fix the search funnel. It was how to be in the room before anyone started searching.

58%
OF SMBS USE SHEETS 15–18 MONTHS PRE-CRM
9%
OF EARLY-STAGE BUSINESSES HUBSPOT CAPTURES
8M+
PAYING GOOGLE WORKSPACE SMBS (≈4.2M ON SHEETS)
Google Workspace Marketplace listing
Google Workspace Marketplace listing

The first version of the add-on was functional but directionless: a CRM connector that imported contacts and displayed them in a sidebar. It worked. But usage was one-off and migration-oriented. People came, imported, and left. We weren't part of anyone's daily workflow.

Why are we asking people to bring their data to HubSpot when we could bring HubSpot to their data?

The QUESTION

That question turned a migration tool into a daily workspace. Instead of "leave Sheets for HubSpot," we were building a sidekick that added value to the workflow founders were already living in.

"

We tried other CRMs, but we found it too complex to manage day-to-day. So we switched back to spreadsheets.

- James R · Early-stage founder

Before · Current · Vision - the strategic reframe

I led user research with early-stage founders actively managing sales pipelines in Google Sheets. Through interviews, usability sessions, and behaviour analysis, we uncovered why founders stay in Sheets - and what it would take to graduate them to HubSpot.

01

Trust and familiarity.

Sheets is familiar, flexible, and just works. They've built their business on it. Switching feels risky.

02

The value gap.

They want CRM capabilities but can't justify migration time or learning curve while wearing ten hats.

03

A daily command centre.

The spreadsheet is where the day happens. Pulling them out breaks flow - they're in it 10+ times a day.

04

Graduation triggers.

Considered when teams pass 3–5 people, pipeline crosses 20–30 deals, or follow-ups slip.

"

I don't have anyone I can ask, 'what should we do today?' Finding that assist that actually tells me, 'you've been contacting these people for a while,' or 'have you thought about doing this?' - that will make me use it every day.

- Alex S · Co-founder, HubSpot for Sheets beta participant

Persona: Cami
1 / 3

A Google Sheets sidebar gives you 280px of horizontal space. No modals. No full-page takeovers. Every interaction has to earn its place.

01

Earn the sidebar.

280px of horizontal space. No modals. Every interaction had to deliver value before asking for any commitment.

02

Meet the workflow.

No data migration, no switching, no new tool to learn. The AI reads the sheet and suggests the next best action.

03

A graduation path.

Deal tracking, task management, and full HubSpot features unlock as founders grow - not as a paywall.

The original onboarding opened a welcome modal with an ‘Import contacts’ button. During user testing 7/10 users reflexively closed the modal entirely, and the modal had a multi-second loading delay on Apps Script that engineering couldn’t fix at the platform layer. We replaced it with a sidebar welcome screen that runs the contact sync in the background. 97% of users who reach activation get there because the product promises value the moment the sidebar opens.

Before

Before: welcome modal with ‘Import contacts’ CTA

After

Brewing something good...

Itterations and edge cases

Sheets is a platform with rules. Every decision in the product either fit the rules or worked around them. Eight constraints shaped the work. Here is the design decision that came out of each one.

Platform limits

These are constraints from what Apps Script and Google Sheets could and couldn’t do.

01The constraint

Google’s Apps Script platform doesn’t let us check for new data in real time. Hiding this would have led users to trust data that was silently stale.

Design decision

Added a refresh button in a fixed location and a “Last synced 2 min ago” label on every record. The limit is named on the screen.

02The constraint

Users asked for two-way sync between Sheets and HubSpot. Apps Script couldn’t poll fast enough to make it reliable.

Design decision

Two-way sync that broke half the time would have been worse than one-way sync that worked all the time. We shipped one-way, with HubSpot as the source of truth and a manual refresh in the sidebar.

03The constraint

The first version opened the experience in a modal over Sheets. The modal covered the user’s data and took over 10 seconds to open or close inside Apps Script.

Design decision

Dropped the modal entirely. The sidebar is the only surface. Data stays visible, and the sidebar opens in under a few seconds.

04The constraint

A Sheets workbook can have multiple tabs, and Apps Script can’t detect when the user switches between them. Users imported one tab, switched to another, and lost track of which data was synced.

Design decision

Built a tab indicator inside the sidebar that names the active tab and the recommendations tied to it. Changing the tab in the sidebar moves the Sheet to that tab. The reverse isn’t possible on the platform, so the sidebar indicator is the source of truth, and the limit is named on the screen.

Real-world deployment

These are constraints from how users actually run their browsers and how the product loads in the field.

05The constraint

The AI mapper reads the entire sheet for context, which takes 3 to 5 seconds. The import primarily benefits HubSpot: it is how HubSpot builds recommendations later, not something the user sees value in yet. A loading screen would have asked users to wait for something they didn’t yet care about.

Design decision

Hid the import behind touchless sync. It runs in the background while the user moves through the next onboarding step. Users reach a working sidebar without sitting through a loading screen.

06The constraint

Most users zoom their browser to 110% or 125% by default. Inside Sheets, that shortened and narrowed the sidebar. The top-tab nav clipped off-screen, and the visible area shrank to where every pixel mattered.

Design decision

Designed while keeping in mind these edge cases, making sure every pixel matters.

Beta tester at 150% browser zoom
Beta tester at 150% browser zoom. The moment “every pixel matters” became literal.

User language and flow

These are constraints from how users described the product and what they needed to move through it comfortably.

07The constraint

Legal required three acceptance moments: HubSpot’s sign-up terms, beta program terms, and AI data consent for Breeze. Stacking them as standalone screens would have added 3 friction points to a flow we had just shortened.

Design decision

Folded each one into a moment the user was already paying attention to. Sign-up terms inside the OAuth grant. Beta terms inside the welcome state with a single accept button. AI consent inside the first Breeze action, with a tooltip showing what the AI sees.

08The constraint

Users came with their own vocabulary. Column headers like “Cust ID” instead of “Contact ID,” or “Notes” instead of “Description.” The primary action in the flow had the same problem: 6 of 8 users heard “Export contacts” and thought they were sending data away from HubSpot, not into it.

Design decision

Introduced custom property creation in the sidebar so sheet column names could carry through into HubSpot. Renamed the primary CTA to match how users described the action. Support questions about that step dropped after the rename.

This was the first project where AI tools were a working part of my own process, not a feature I was designing for someone else. The result: I could run a full design cycle from research to hi-fi in days rather than weeks. And the product was better for it.

AI tool stack

Figma Make · Lovable · Hubbable · Claude Code · ChatGPT · Writer · NotebookLM

HubSpot for Sheets fundamentally changed how HubSpot acquired early-stage customers. By meeting founders in their daily workflow 15–18 months before they'd typically consider a CRM, we created a new distribution channel that captures value at the exact moment of need.

28,260
TOTAL NEW SIGNUPS · JAN – MAY 2026
20.9%
UPGRADE RATE (HIGHEST COHORT)
22.2%
OVERALL PORTAL CONVERSION
97%
PORTALS ACTIVE AT ACTIVATION

Right problem, right time.

We identified a gap (founders using Sheets as a CRM) and built specifically for them.

Research-driven design.

Deep user understanding drove every decision, from feature prioritisation to interaction patterns.

AI as enabler.

The AI agent delivered value immediately, without setup or data migration.

A graduation path.

A natural bridge from Sheets to full HubSpot, so the transition felt like growth rather than abandonment.

With roughly 67% of users churning after a single session, the first five minutes in the sidebar needed to do significantly more. A single guided task would have addressed early churn before we had the data to prove it was a problem.

The wider lesson: when you're building a distribution product, activation isn't a metric to track after launch. It's the design brief from the first screen.

Previous

WordPress Plugin - the rebuild that got smaller.

← Back to work

Next case study

Campaign Assistant - the front door to microapps.

Read case study →