.jpg)
In today's competitive market, managing customer relationships is everything. But for many small businesses, freelancers, and growing teams, commercial Customer Relationship Management (CRM) software is often too expensive, too complicated, or too bloated with features you’ll never use.
What if you could build your own simple, powerful, and custom CRM for free, using the tools you already have in Google Workspace?
Enter Google AppSheet. This powerful no-code platform, which is part of the Google Cloud family, allows you to turn your Google Sheets into fully functional web and mobile apps.
In this comprehensive, up-to-date guide, we will walk you through every single step of building a simple yet robust CRM from scratch. You will learn how to manage contacts, track companies, log interactions, and even create automations like 'click-to-email' buttons. No coding is required.
Before we build, let's understand the tool. Google AppSheet is a no-code development platform. In simple terms, it reads the data from your Google Sheet (or other sources like SQL databases) and automatically generates a functional app with views, forms, and buttons. You then customise this app in a visual editor.
It's the perfect solution for creating internal business tools, and a CRM is one of the most popular use cases.
Right, let's get to the practical part. We will build a relational CRM with three core components: Companies, Contacts, and Interactions (like calls or meetings).
This is the most important step. A good app is built on a good data structure. We are going to use a single Google Sheet with three separate tabs (or "sheets").
Companies, Contacts, and Interactions.Now, you must set up the column headers for each tab exactly as follows. These headers are the "fields" your app will use.
On the Companies tab:
Company IDCompany NameWebsitePhoneAddressOn the Contacts tab:
Contact IDFirst NameLast NameEmailPhoneRoleCompany ID (This is the "key" that will link a Contact to a Company)On the Interactions tab:
Interaction IDDateType (This will be a dropdown for 'Call', 'Email', 'Meeting')NotesContact ID (This links the interaction to a specific Contact)Top Tip: You can add one or two lines of sample data under the headers just to help AppSheet understand the data type, but it's not strictly necessary.
This is where the magic begins.
By default, it will probably only add the Companies tab. Don't worry, that's normal. You'll see a preview of your app on the right-hand side.
Now we need to tell AppSheet about our other two tables.
Companies table is already there. Click the "+ Add Table" button.Contacts and click "Add".Interactions sheet.You should now have all three tables (Companies, Contacts, Interactions) listed in your Data tab.
This is how we make the app smart. We need to tell AppSheet what kind of data is in each column and, crucially, how the tables link together.
Click on each table name (Companies, Contacts, Interactions) in the Data tab and review its columns.
For the Companies Table:
Company ID: Make sure this is set as the Key (it will have a key icon). For Initial value, you can put UNIQUEID(). This formula tells AppSheet to generate a random, unique ID every time a new company is created.Website: Change the Type to URL.Phone: Change the Type to Phone.For the Contacts Table:
Contact ID: Set this as the Key and use UNIQUEID() for the Initial value.Email: Change the Type to Email.Phone: Change the Type to Phone.Company ID: This is the most important part!Type from Text to Ref.Companies table.Companies table. You've just created your first relationship!For the Interactions Table:
Interaction ID: Set this as the Key and use UNIQUEID() for the Initial value.Date: Change the Type to Date. You can set its Initial value to TODAY().Type:Type to Enum (this means "list of choices").Call, Email, Meeting.Notes: Change the Type to LongText.Contact ID: Time for the second relationship!Type to Ref.Contacts table.What just happened? By setting up these Ref types, you've automatically linked your data. AppSheet now understands that:
This means when you look at a Company's details, you will automatically see a list of all related Contacts. And when you look at a Contact, you'll see a list of all their related Interactions. That's a CRM!
Your app is functional, but let's make it look good and easy to use.
Companies, Contacts, and Interactions.Companies view.Deck.Company Name.Phone or Website.Contacts view.Deck.CONCATENATE([First Name], " ", [Last Name]). This will show the full name.Email.Interactions view is less important as a main view (it's better to see it inside a contact). You can either delete it (click the bin icon) or change its "Position" from Center to Ref. This hides it from the main bar but keeps it available for the app to use.Now, test your app in the preview. Click on a Company. You should see its details, and underneath, a list of "Related Contacts". Click on a Contact, and you'll see their "Related Interactions". Click the "+" button to add a new Company or Contact and test your forms.
Actions are buttons that do things. Let's add "click-to-email" and "click-to-call" buttons to our Contacts view.
ContactsEmail ContactExternal: Start an email[Email] column.Display inline and choose an email or envelope icon.ContactsCall ContactExternal: Start a call[Phone] column.Display inline and choose a phone icon.Now, when you look at a Contact's details in your app, you will see two new buttons: "Email Contact" and "Call Contact". Tapping them on your phone will launch your email or phone app automatically.
You're almost done! Let's add a final polish.
You now have a fully working, relational CRM. But the journey doesn't have to stop there. The beauty of AppSheet is its scalability. Here are some "extra credit" ideas:
Contacts table called Status (with an Enum type for 'Lead', 'Working', 'Customer', 'Lost'). You can then create filtered "Slices" (in the Data tab) to see only your 'Leads'.Dashboard view. This allows you to show multiple views on one screen, such as a Company's details and their list of Contacts side-by-side.Deals. You can link this to a Company and give it a Value (Currency type) and Stage (Enum type) to build a simple sales pipeline.Contact is added, or schedule a daily report.Congratulations! You have successfully built a powerful, custom CRM system using Google AppSheet and Google Sheets. You now have a tool that is perfectly tailored to your business, works on all your devices, and didn't cost you a penny in software fees.
By starting with a solid data structure in Google Sheets and leveraging the power of AppSheet's Ref types, actions, and UX controls, you've created a scalable solution that can grow with your business.