Skip to main content
Back to Articles

Building a Free CRM with Google Sheets and Webhooks

By Wilson TechnologyPublished
CRMAutomationEcommerceIntegrationStrategy

When scaling an e-commerce business, managing customer data effectively is crucial. However, the default move for many companies is to subscribe to an expensive, feature-heavy SaaS CRM like Salesforce or a broad ERP like NetSuite. While these platforms are powerful, they often introduce unnecessary bloat and significant recurring costs. Furthermore, complex interfaces in platforms like NetSuite can cause training bottlenecks that severely slow down your team when they simply need quick access to shopper data. For many mid-market e-commerce operations, the core requirement is just a reliable, centralized repository for customer profiles, order history, and interactions.

What if you could build a highly customized, cheap e-commerce CRM tailored perfectly to your business processes—without paying a dime in monthly subscription fees? By leveraging webhook automation and the flexibility of existing spreadsheet software, you can create a powerful Google Sheets CRM that scales with your immediate needs. This guide details how to build a free CRM with Google Sheets and webhooks, ensuring your customer data flows seamlessly from your storefront to your operational team.

The Wilson Tech Approach

The classic tech fix for a disorganized customer database is to immediately purchase a massive CRM platform and hire consultants to implement it. This often leads to a lengthy deployment cycle, extensive training requirements for your sales and support teams, and a system filled with features you will never use. It's a "rip and replace" mentality that treats the software as the solution, rather than focusing on the underlying business process.

At Wilson Technology, we believe in solving the business problem first and building the tech around it, the same principle we walk through in aligning your e-commerce tech stack with actual business goals. The true issue is often a lack of centralized, actionable customer data, not a lack of software features. Before investing thousands of dollars in a new platform, we look at how your data currently moves. Can we capture it directly from the source? Can we route it to a familiar, accessible format? By using Google Sheets and direct webhooks, we create a lightweight, custom-fit solution that solves the immediate data accessibility problem. This avoids the "band-aid" of another SaaS subscription and provides a foundation that can be incrementally upgraded—perhaps later moving to a custom database—only when the business process truly demands it. This holistic lifecycle approach reduces costs and improves performance immediately.

Understanding the Components: Webhook Automation and Google Apps Script

To build a free CRM with Google Sheets and webhooks, you need to understand the two main components: how data leaves your e-commerce platform and how Google Sheets receives it.

What is a Webhook?

A webhook is a method for one application to provide other applications with real-time information. Unlike an API, where you have to constantly ask (poll) the system if there is new data, a webhook automatically pushes data to a specified URL as soon as an event occurs. In the context of e-commerce, platforms like Shopify, BigCommerce, or WooCommerce can trigger a webhook whenever a new customer is created, an order is placed, or a cart is abandoned. This is the perfect trigger to update your CRM.

Google Apps Script as the Receiver

Google Sheets does not natively have a URL to send webhooks to out-of-the-box. However, Google provides a powerful, free tool called Google Apps Script. Based on JavaScript, this tool allows you to write custom code that runs in the Google Cloud and interacts with your Google Sheets.

Crucially, Google Apps Script allows you to publish a script as a "Web App." When you do this, Google provides you with a unique URL. You can use this URL as the destination for your e-commerce platform's webhooks. The script can then capture the incoming data payload, parse it, and write it directly into specific rows and columns in your Google Sheet.

Step-by-Step Guide: Building Your Google Sheets CRM

Follow these steps to construct your Google Sheets CRM pipeline.

Step 1: Prepare Your Google Sheet

First, create a new Google Sheet. This will act as your database. Set up your column headers to match the data you want to track. A basic CRM structure might include:

  • Timestamp: When the record was created or updated.
  • Customer ID: The unique identifier from your e-commerce platform.
  • First Name
  • Last Name
  • Email
  • Phone Number
  • Total Spent: (If tracking order values)
  • Last Order Date: (If tracking order values)
  • Tags/Status: (e.g., VIP, New, Wholesale)

Ensure your sheet is clearly organized. You might want to create separate tabs for "Customers" and "Orders" if you plan to track granular order data alongside customer profiles.

Step 2: Write the Google Apps Script

  1. In your Google Sheet, navigate to Extensions > Apps Script.
  2. Clear the default code and write a doPost(e) function. This is the specific function Google requires to handle incoming POST requests (which is how webhooks deliver data).

Here is a simplified example of the Google Apps Script code to capture a webhook payload and append it to your sheet:

function doPost(e) {
  try {
    // Parse the incoming JSON payload
    var data = JSON.parse(e.postData.contents);

    // Get the active spreadsheet and the specific sheet by name
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Customers");

    // Create an array mapping the payload data to your columns
    // This will vary wildly depending on your platform's webhook structure
    var newRow = [
      new Date(), // Timestamp
      data.id, // Customer ID
      data.first_name,
      data.last_name,
      data.email,
      data.phone,
      data.total_spent,
      data.orders_count
    ];

    // Append the new row to the sheet
    sheet.appendRow(newRow);

    // Return a success response
    return ContentService.createTextOutput("Success").setMimeType(ContentService.MimeType.TEXT);

  } catch (error) {
    // If something goes wrong, log the error (you can view these in the Apps Script dashboard)
    console.error(error);
    return ContentService.createTextOutput("Error: " + error.toString()).setMimeType(ContentService.MimeType.TEXT);
  }
}

Note: You must adapt the data.field_name mapping to match the exact JSON structure sent by your specific e-commerce platform.

Step 3: Deploy as a Web App

  1. In the Apps Script editor, click Deploy > New deployment.
  2. Select Web app as the deployment type.
  3. Set the description (e.g., "CRM Webhook Receiver").
  4. Set Execute as to "Me" (your Google account).
  5. Set Who has access to "Anyone". This is critical; your e-commerce platform needs public access to trigger the URL.
  6. Click Deploy and authorize the necessary permissions.
  7. Copy the generated Web app URL. This is your webhook endpoint.

Step 4: Configure Webhooks in Your E-commerce Platform

Now, configure your storefront to send data to your new endpoint.

  1. Log in to your e-commerce platform admin (e.g., Shopify, BigCommerce).
  2. Navigate to the Webhooks or Notifications section (usually found in Settings).
  3. Create a new webhook.
  4. Select the Event you want to trigger the webhook (e.g., "Customer creation" or "Order creation").
  5. Set the Format to JSON.
  6. Paste the Web app URL you copied from Google Apps Script into the destination field.
  7. Save and send a test webhook.

Check your Google Sheet. If everything is configured correctly, a new row containing the test data should appear almost instantly.

Bypassing Middleware: The Cost-Saving Advantage

The traditional way to connect an e-commerce platform to Google Sheets is to use an integration platform as a service (iPaaS) like Zapier. While these tools are user-friendly, Zapier's task-based pricing model becomes disproportionately expensive for growing SMBs dealing with high-volume e-commerce workflows. If you have thousands of orders or customer updates a month, your Zapier bill can quickly escalate to hundreds of dollars.

Instead of turning to a "rip and replace" iPaaS alternative like Make.com or self-hosted n8n, you can adopt a holistic solution by utilizing native platform capabilities, such as Shopify Flow outbound HTTP actions (which are free and available on all standard Shopify plans) or standard webhooks, to bypass middleware entirely. By building a direct connection to Google Apps Script, your e-commerce platform talks directly to Google's servers. This point-to-point integration requires zero ongoing subscription fees, freeing your business from the disproportionate burden of middleware costs as your transaction volumes grow — the same logic behind why cheap off-the-shelf connectors cost more in the long run.

Integration ROI Estimator

Calculate Your ROI

Expand

Step 1 of 2 — Your Integration Landscape

Shopify, NetSuite, ShipStation…

iPaaS, middleware, retainers — 0 if none.

Scaling and Expanding Your Google Sheets CRM

A basic Google Sheet is just the beginning. The true power of this setup is how easily you can adapt it to fit your unique business processes.

Automated Notifications

You can expand your Google Apps Script to trigger other actions. For example, if a new customer is tagged as "B2B Wholesale," your script could automatically send an email to your sales team notifying them of the new lead — a first step toward the kind of algorithmic lead routing that moves beyond basic round-robin systems. This allows for immediate follow-up without relying on external automation platforms.

Data Validation and Deduplication

A common issue with basic spreadsheet databases is duplicate entries. If an existing customer places a new order, a basic appendRow script might create a second row for that customer.

To build a robust CRM, you need to enhance your Apps Script to search for existing records before adding new ones. If a matching Customer ID or email address is found, the script should update the existing row (e.g., increasing the 'Total Spent' or changing the 'Last Order Date') rather than creating a duplicate. This requires more complex logic utilizing loops or the createTextFinder method in Apps Script, ensuring your data remains clean and actionable.

Integrating with Other Free Tools

Your Google Sheets CRM can serve as the central hub for other free or low-cost tools. You can use Google Data Studio (Looker Studio) to build visual dashboards on top of your sheet data. You can connect it to self-hosted open-source solutions like Mautic or Listmonk (deployed on cheap cloud servers) as cost-effective alternatives to standard marketing SaaS platforms like Klaviyo. The data is yours, accessible via a standard format, freeing you from vendor lock-in.

Knowing When to Upgrade

While a Google Sheets CRM is incredibly powerful, it is not a permanent solution for enterprise-scale operations. It is essential to recognize when your operational needs have outgrown this setup.

Google Sheets has limits on the number of cells and API read/write quotas. If you are processing tens of thousands of orders daily, or if your team requires complex, multi-user concurrent editing with strict role-based access control, a spreadsheet will eventually falter. When you reach that point, the data in your sheet is already structured and clean, making the migration to a true CRM platform or a custom internal application much smoother — provided you map your sales cycle before the new CRM integration rather than after.

The goal is not to use Google Sheets forever, but to use it until your business process explicitly demands—and can financially justify—a more robust technical architecture.

Why a Spreadsheet CRM Works Until It Doesn't

Building a free CRM with Google Sheets and webhooks is a practical, cost-effective way to take control of your customer data. It forces you to define your business requirements clearly and provides a custom-fit solution without the burden of recurring SaaS fees. By leveraging native platform capabilities and Google Apps Script, you can create a powerful operational tool that scales with your immediate needs.

If you are tired of paying for bloated software that doesn't fit your workflow, start by mapping your data and building the exact tool you need.

Ready to outgrow the spreadsheet on your own terms?

Whether you're standing up a zero-cost webhook CRM today or deciding when it's time to move that data into a real platform, the right call depends on your order volume and team structure, not a generic playbook.

Ready to build a customer data pipeline that fits your actual workflow? Contact WTECH to schedule a technical discovery session.

Frequently Asked Questions

How do I connect webhooks directly to Google Sheets?

You must use Google Apps Script to create a doPost(e) function. Deploying this script as a Web App generates a URL that your e-commerce platform can use as a webhook destination.

Does a Google Sheets CRM cost money to run?

No, using Google Sheets and Google Apps Script is free within Google's standard usage limits, making it a zero-cost alternative to SaaS CRMs.

How do I prevent duplicate records in my Google Sheets CRM?

You must write logic in your Apps Script to search the sheet for existing matching criteria (like an email) and update that row instead of using a basic appendRow command.

Will I need to use Zapier for this to work?

No. By pointing your e-commerce platform's webhooks directly to the Google Apps Script Web App URL, you bypass the need for paid middleware like Zapier entirely.