DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowFall ResetAmazon USFall reset deals: check better picks before checkoutAmazon US: today's deals, useful picks and quick comparisons.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
Blog

How to Make Your Own CRM Using Microsoft Access

By TheFinanceBase Team11 min read

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Yes—you can build a useful small-business CRM in Microsoft Access without writing much code. A practical first version can track companies, contacts, sales opportunities, activities, notes, and follow-ups, then turn that data into searchable forms, pipeline reports, and overdue-task lists.

This guide is for Windows users working with Access for Microsoft 365 or Access 2024. Older versions may use slightly different menu labels. The result is a desktop CRM, not a browser-based or mobile-first service.

What you will build

Your finished Access CRM can include:

  • Company and contact records
  • Leads and sales opportunities
  • Sales stages, values, probabilities, and expected close dates
  • Calls, emails, meetings, tasks, and notes
  • Due and overdue follow-up lists
  • Search and filtering
  • Pipeline, activity, and inactivity reports
  • A home screen for navigation

Access is built around tables, queries, forms, reports, macros, and modules. Tables store information, relationships connect it, queries analyze it, forms provide the interface, and reports present the results. Microsoft explains this basic structure in its Access database guide.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Is Microsoft Access a good CRM platform?

Access is a reasonable choice for one person or a small Windows-based office that wants a tailored internal system without paying for a full CRM platform. It works particularly well when the business already uses Microsoft Office, needs custom fields and reports, and can manage its own files and backups.

It is a poor fit when the team needs browser or mobile access, public customer portals, extensive marketing automation, many integrations, complex permissions, or a distributed remote-workforce application. Access can be shared, but it remains a file-based desktop database rather than a hosted CRM.

Microsoft lists a nominal 2 GB database file-size limit and up to 255 concurrent users. Those are specifications, not sensible targets for a CRM deployment. Network quality, attachments, query design, locking, and concurrent editing can create practical limits much earlier. See Microsoft’s Access specifications before planning a larger system.

Plan the CRM before opening Access

Write down the business rules first:

  • What counts as a company or account?
  • Can one contact belong to more than one company?
  • Does a lead become a contact, an opportunity, or both?
  • Which sales stages will you use?
  • Which activities require a due date?
  • Who can view, edit, export, or delete records?
  • Which reports will someone actually use?
  • Will documents live in Access or in a separate document system?

Start with companies, contacts, opportunities, activities, and follow-ups. Trying to reproduce Salesforce or HubSpot in the first version usually creates a complicated database that nobody maintains.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create the database

  1. Open Access.
  2. Select File > New > Blank database.
  3. Name the file something such as SmallBusinessCRM.accdb.
  4. Choose a local working folder and select Create.

Microsoft documents this workflow in its Access database instructions. Build the database in a local folder while designing it. Do not develop directly inside a shared network folder.

Access templates can supply tables, forms, queries, reports, and relationships, but a blank database is usually better for a CRM with a deliberate data model. Microsoft also documents modifying template databases.

Build the CRM tables

Use Table Design for each table. Give every main table a primary key, normally an AutoNumber field. Save tables with clear names such as tblCompanies. Microsoft’s table guidance covers fields, primary keys, indexes, and field properties.

tblCompanies

Field Type Purpose
CompanyID AutoNumber, primary key Unique internal identifier
CompanyName Short Text Business or account name
IndustryID Number Industry lookup
Phone, Email, Website Short Text Main contact details
Address1, City, StateProvince, PostalCode Short Text Address information
StatusID, OwnerID Number Status and assigned user
CreatedAt Date/Time Creation timestamp
Notes Long Text General account notes

tblContacts

Field Type Purpose
ContactID AutoNumber, primary key Unique contact identifier
CompanyID Number Related company
FirstName, LastName Short Text Contact name
JobTitle, Email, MobilePhone Short Text Role and contact details
IsPrimaryContact Yes/No Main contact indicator
StatusID Number Contact status
Notes Long Text Contact notes

tblOpportunities

Field Type Purpose
OpportunityID AutoNumber, primary key Unique deal identifier
CompanyID, PrimaryContactID Number Related account and contact
OpportunityName Short Text Deal name
StageID Number Sales stage
Amount Currency Estimated value
Probability Number Percentage estimate
ExpectedCloseDate Date/Time Forecast date
OwnerID, LostReasonID Number Responsibility and loss reason
CreatedAt, Notes Date/Time and Long Text History and context

tblActivities

Field Type Purpose
ActivityID AutoNumber, primary key Unique activity
CompanyID, ContactID, OpportunityID Number Related records
ActivityTypeID Number Call, email, meeting, or task
ActivityDate, DueDate Date/Time Completed and follow-up dates
Subject Short Text Short description
Completed Yes/No Completion state
AssignedToID Number Responsible user
Details Long Text Conversation or task notes

Create lookup tables such as tblUsers, tblCompanyStatuses, tblContactStatuses, tblIndustries, tblActivityTypes, tblOpportunityStages, tblLostReasons, and tblLeadSources.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not store repeated values such as “Proposal” or “Customer” as free-typed text in every row. Lookup tables keep spelling consistent and let an administrator change choices without redesigning forms.

Use practical normalization

Avoid one giant table containing company names, contact details, deals, and every interaction. That design repeats data and creates update errors. Store each company once, each contact once, and each activity as its own record. Link records with numeric keys.

Use Short Text for phone numbers and postal codes because they are not quantities to calculate. Use Currency for money, Date/Time for dates, Yes/No for binary states, and Long Text for notes. Foreign keys pointing to AutoNumber fields should normally be Number fields with the compatible Long Integer field size.

AutoNumber values are internal keys, not customer numbers, invoice numbers, or other meaningful business references.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create relationships

Open Database Tools > Relationships, choose Add Tables, and add the relevant tables. Drag each primary key to its matching foreign key, select Enforce Referential Integrity, and save the layout. Microsoft explains this process in its relationship guide.

Typical relationships are:

  • tblCompanies.CompanyID to tblContacts.CompanyID
  • tblCompanies.CompanyID to tblOpportunities.CompanyID
  • tblCompanies.CompanyID to tblActivities.CompanyID
  • tblContacts.ContactID to tblActivities.ContactID
  • tblOpportunities.OpportunityID to tblActivities.OpportunityID
  • tblUsers.UserID to owner and assigned-user fields
  • Lookup-table IDs to their corresponding records

Be cautious with Cascade Delete Related Records. Deleting a company could remove its contacts, opportunities, and activity history. For business records, an inactive status is often safer than physical deletion.

Build the company form and subforms

Create these forms:

  • frmHome
  • frmCompanies
  • frmContacts
  • frmOpportunities
  • frmActivities
  • frmTasksDue
  • frmSearch

Make the company form the central record. Put company details in the main form and contacts, opportunities, activities, and open tasks in subforms.

Rank #3
Sale
The Microsoft Office 365 Bible: The Most Updated and Complete Guide to Excel, Word, PowerPoint, Outlook, OneNote, OneDrive, Teams, Access, and Publisher from Beginners to Advanced
  • The Microsoft Office 365 Bible: The Most Updated and Complete Guide to Excel, Word, PowerPoint, Outlook, OneNote, OneDrive, Teams, Access, and Publisher from Beginners to Advanced
  • ABIS BOOK

For a contacts subform, use tblContacts as its record source, then set:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Link Master Fields: CompanyID
  • Link Child Fields: CompanyID

The same pattern works for opportunities and activities. Microsoft’s form documentation covers form creation and split forms.

Use combo boxes for stages, statuses, industries, and users. Lock or hide primary keys, use business-friendly labels, and add buttons for New Contact, New Activity, and New Opportunity. Put the next open follow-up where it is visible, and use conditional formatting to highlight overdue tasks.

Add validation and data-quality controls

Useful controls include:

  • Require CompanyName.
  • Require either an email address or phone number for a contact.
  • Prevent negative opportunity amounts.
  • Limit probability to 0 through 100.
  • Require an expected close date for active opportunities.
  • Require a lost reason when an opportunity is marked lost.
  • Warn before deleting a company with related records.
  • Use unique indexes only where duplicates are genuinely invalid.

Examples of field validation rules are:

Amount >= 0
Probability Between 0 And 100
[StageID] <> 4 OR [LostReasonID] Is Not Null

The last example assumes stage 4 means “Lost.” Change that value to match your own lookup table; do not hard-code a stage number without documenting it.

Create useful saved queries

Save queries and reuse them as form and report record sources. Centralizing SQL is easier to maintain than embedding separate versions in multiple forms.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Open follow-ups

SELECT a.ActivityID, a.CompanyID, c.CompanyName, a.ContactID, ct.FirstName & " " & ct.LastName AS ContactName, a.Subject, a.DueDate, a.AssignedToID
FROM (tblActivities AS a INNER JOIN tblCompanies AS c ON a.CompanyID = c.CompanyID)
LEFT JOIN tblContacts AS ct ON a.ContactID = ct.ContactID
WHERE a.Completed = False
  AND a.DueDate Is Not Null
ORDER BY a.DueDate;

Overdue activities

SELECT a.ActivityID, c.CompanyName, a.Subject, a.DueDate
FROM tblActivities AS a INNER JOIN tblCompanies AS c
ON a.CompanyID = c.CompanyID
WHERE a.Completed = False
  AND a.DueDate < Date()
ORDER BY a.DueDate;

Pipeline summary

SELECT s.StageName,
       Count(o.OpportunityID) AS OpportunityCount,
       Sum(o.Amount) AS PipelineValue,
       Sum(o.Amount * Nz(o.Probability, 0) / 100) AS WeightedValue
FROM tblOpportunityStages AS s
LEFT JOIN tblOpportunities AS o ON s.StageID = o.StageID
WHERE o.ExpectedCloseDate Is Null
   OR o.ExpectedCloseDate >= Date()
GROUP BY s.StageName
ORDER BY s.StageName;

Nz() prevents null amounts or probabilities from turning calculations into blanks. A weighted opportunity value should normally be calculated rather than stored, so it cannot become stale when amount or probability changes.

Recent activity by company

SELECT c.CompanyName, Max(a.ActivityDate) AS LastActivityDate
FROM tblCompanies AS c
LEFT JOIN tblActivities AS a ON c.CompanyID = a.CompanyID
GROUP BY c.CompanyName
ORDER BY Max(a.ActivityDate);

Search by company name

PARAMETERS [Enter part of company name:] Text (255);
SELECT *
FROM tblCompanies
WHERE CompanyName Like "*" & [Enter part of company name:] & "*"
ORDER BY CompanyName;

Create reports and a home screen

Build reports from saved queries rather than raw tables when joins, filters, or calculations are involved. Useful reports include:

  • Open opportunities by stage
  • Pipeline by salesperson
  • Overdue follow-ups
  • Activities due this week
  • Companies with no recent activity
  • New leads by source
  • Won and lost opportunities
  • Revenue by month
  • Contact directory
  • Customer activity history

A simple frmHome can provide buttons for Companies, New Activity, Open Follow-ups, Opportunities, Pipeline, Overdue Tasks, Search, and Backup Instructions. Macros are enough for basic navigation. VBA is useful for advanced filtering, validation, Outlook messages, report exports, and linked-table refreshes, but keep the first version as simple as possible.

Import Excel contacts safely

  1. Make a copy of the workbook.
  2. Give every column a heading.
  3. Standardize types and remove merged cells.
  4. Remove duplicate companies and contacts.
  5. Import companies before contacts.
  6. Resolve company IDs before importing related opportunities or activities.
  7. Check dates, phone numbers, notes, and record counts after import.

Use External Data > New Data Source > From File > Excel, then select the workbook and follow the import wizard. Microsoft documents this workflow in its database creation guidance.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A company name is not a safe foreign key. Duplicate names can attach a contact to the wrong account. Phone numbers may lose leading zeroes, dates may arrive as text, and long notes can be misclassified. Clean the data before importing it into the relational tables.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Share the CRM safely with a small team

For multiple users, split the database into:

  • Back end: tables only, stored in a shared location
  • Front end: forms, queries, reports, macros, and modules

Each user should have a local copy of the front end. Do not have everyone open the same front-end file from a network folder. Microsoft’s split-database guidance explains the Database Splitter Wizard and linked tables.

  1. Back up the database.
  2. Open it locally.
  3. Use the database-splitting command under Database Tools.
  4. Place the back end in a properly secured shared folder.
  5. Give every user a local front-end copy.
  6. Test linked tables from each workstation.
  7. Use Linked Table Manager if the back-end path changes.

Use a stable UNC path where possible, configure file-share permissions, and test simultaneous edits. Avoid placing a live multi-user Access back end in a consumer synchronization folder such as a continuously syncing OneDrive directory unless the deployment has been specifically tested and supported. Compact and repair during a maintenance window when nobody is connected.

Backups, security, and maintenance

Schedule backups of the back-end file, keep multiple generations, maintain an independent off-device copy, and test restoring one. A copied file is not a proven backup until restoration has been tested.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep versioned front-end releases so you can distribute a known-good update. Document what happens after accidental deletion, broken links, a damaged file, or a network outage.

Best Value

Access security depends heavily on Windows accounts, file-share permissions, database configuration, encryption, backups, and operational discipline. A split database separates interface files from data, but it does not provide complete role-based authorization, audit history, or enterprise identity management.

Minimize sensitive personal data. Do not store passwords, payment-card information, or unnecessary confidential information in the CRM. Restrict access to the back end and document who may export data.

Attachments and email history

Large attachments consume the database’s file-size budget and can reduce performance. A maintainable pattern is often to keep documents in a controlled SharePoint, OneDrive, or other document system and store a link or document identifier in Access.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For email, consider logging sender, recipient, date, subject, and a concise summary instead of importing every message. Keep Access focused on structured customer and activity data.

When Access is no longer the right tool

Consider a SQL Server back end when the database approaches its file-size limit, users experience locking or performance problems, centralized administration is required, or the organization needs stronger server-backed data management. Access can remain the front end, but migration may require query, permissions, schema, and testing changes. Microsoft provides Access-to-SQL Server migration guidance.

Consider Power Apps and Dataverse when browser and mobile access, Microsoft identity integration, cloud collaboration, workflow automation, or role-based access matters more than the simplicity of a desktop file. Review Microsoft’s Power Apps and Dataverse information; pricing and licensing can be more complex.

Choose an off-the-shelf CRM when immediate deployment, email synchronization, mobile applications, marketing automation, customer portals, or vendor-managed hosting are priorities. Examples include HubSpot CRM, Salesforce Sales Cloud, Zoho CRM, and Dynamics 365 Sales. Their current prices were not established here and should be checked directly.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Access licensing and cost context

Access is not universally free. Microsoft may include it in certain Microsoft 365 plans, or it may be purchased separately. Microsoft’s US Store showed $179.99 for Access for one PC on August 18, 2026, but price, availability, region, and checkout terms can change. See the official Access page.

Microsoft’s US business comparison pages showed these annual-billing price signals on August 18, 2026: Apps for business at $10.00 per user per month, Business Standard at $12.50, and Business Premium at $22.00. Treat these as dated US observations, not permanent prices. Confirm that your selected plan includes desktop Access and matches your organization’s licensing needs.

Pre-launch testing checklist

  • Add a company and several contacts.
  • Create an opportunity with a stage, amount, probability, and close date.
  • Record an activity and create a follow-up.
  • Mark a task complete and confirm it leaves the open-task list.
  • Check overdue activities.
  • Search by company, contact, and email.
  • Edit a lookup value and confirm forms still work.
  • Test deactivation and deletion behavior.
  • Import a sample Excel file.
  • Open the system as a second user.
  • Test simultaneous edits and a lost network connection.
  • Repair broken back-end links.
  • Restore a backup.
  • Install a new front-end version.
  • Compare report totals with known sample data.

A well-designed Access CRM can replace disconnected spreadsheets for a small Windows-based business. The important decisions are not the colors of the forms; they are the data model, relationships, follow-up workflow, deployment method, backups, and the point at which a server-backed or cloud platform becomes more appropriate.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Written by TheFinanceBase Team

The Team behind TheFinanceBase.

Add your note

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.