Resources | Ampersand - The Engineer’s Guide to CRMs

The Engineer’s Guide to CRMs

A field guide for engineers building software that reads from and writes to CRMs.

Ampersand presents

Seven parts · Six diagrams

Volume one

Agent of Record · Systems of Record

Seven-part edition

Who this guide is for

This guide is written for engineers and builders who:

  • want to understand CRMs and what problems they solve.
  • build agentic products that need customer context.
  • build applications on CRMs or related systems of record.

The core question this guide tries to answer is:

What does an engineer need to understand about a CRM before building an agent that reads from or writes to one?

Part I

What is a CRM?

For engineers to build on top of CRMs, engineers must first understand:

  • What is a CRM?
  • Who uses a CRM?
  • Why do these users need a CRM?

In this section

  1. The CRM in one picture

    What role the CRM plays in the business and the applications and people that interface with them.

  2. Who uses the CRM

    How do sales teams use the CRM? What roles and responsibilities do CRM users have?

  3. Why a spreadsheet isn’t enough

    What the spreadsheet can do, where it breaks down, and what the CRM is built to solve.

Diagram 01 · The mental model

The CRM in one picture

Every interaction with a customer is a piece of business context. A CRM turns these pieces into a system of linked records which models business entities and relationships.

// Four moves

  1. 01 What happens
  2. 02 What gets stored
  3. 03 Who uses the CRM
  4. 04 How software uses the CRM

01 · What happens

02 · What gets stored

physical intro interest form email phone call meeting company they work for Works at one company Is involved in people and deals Has interactions Sales rep labels as potential revenue Person Maya Chen person_0142 Company Northstar Labs company_0067 Opportunity Expansion Stage · Evaluation Owner · Alex Activity Next meeting: Thursday call · email · note · call

The Activity record tracks interactions, emails, activities, conversations, contacts, and more.

03 · Who uses the CRM and how

Sales

discover and convert new revenue

What do I do next on this deal?

Marketing

increase demand and decide channels to invest

Which campaigns produce engagement?

Customer success

retain customers

Is this account healthy?

Leadership

manage performance, forecasts, and produce reports

How is the pipeline doing?

Each business function uses a CRM for a specific responsibility

Each role has a different workflow that a CRM must be designed to accommodate. Some workflows are specialized and extremely custom to the business, role or individual.

04 · How software uses the CRM

Custom CRM objects and fields various data records Auth · Scopes Read context reconstruct businesscontext Subscribe listen to new updates Write interact withbusiness action B2B products Agentic products Dashboards

People and software use CRM records to plan and carry out customer work. An integration needs access to the relevant records and a way to handle schema changes, failed requests, and incomplete data.

The CRM captures many aspects of the business to serve as a single source of truth.

Customers add objects, fields, and workflows as their business changes. Integrations need to handle those changes.

Diagram 02 · The case for a CRM

Why a spreadsheet stops working, and what a CRM does instead.

// 01 Why not use a spreadsheet?

Many small teams start with columns and rows.

Three columns, one team

CompanyOwnerStage
Acme LogisticsJ. LeeQualified
Bellweather CoS. RiveraProposal

Fourteen columns, and counting

Custom fields, added per team

  • Sales
  • Marketing
  • Customer success
  • Leadership

Eventually the columns, rows, and custom fields make it too difficult to coordinate on. The increasing number of roles and workflows the spreadsheet must support becomes complicated.

Teams need shared ownership, history, and workflow rules.

// 02 What problem does it solve?

As the number of people increases, collaborative work complexity increases.

Ten people

AccountOwnerStatusLast contact
Acme LogisticsJ. LeeQualified12 Aug
Bellweather CoS. RiveraProposal02 Sep

One hundred people

AccountOwnerStatusLast contact
Acme Logistics S. Rivera Qualified 12 Aug
Acme Logistics J. Lee Stage 2 missing
Corvid Group missing MQL 28 Aug

A duplicated account, contested owner, or missing history.

A CRM coordinates work across business roles and functions.

// 03 What is a CRM?

Customer information starts in a row.

CompanyContactEmailDealLast call
Acme LogisticsMaya Chenmaya.chen@acme.com48,00012 Aug

↓ Each becomes a record

Contact Task Account Opportunity Activity

Contacts, accounts, and activities provide different context.

// 04 Derived views

Each job function needs a different slice of the CRM, and can reconstruct a view for their own workflow.

Account executive

Onboarding

Renewals

Adoption

Expansion

Sales development

Lead

Contact made

Needs defined

Proposals

Negotiations

One set of records

All views derived from the CRM’s objects and relationships.

Derived views may be created from customized objects or fields.

  1. 01 Teams add fields and workflows
  2. 02 as more people contribute
  3. 03 Linked records connect their work
  4. 04 Each role selects a useful view

What is a CRM?

“A CRM can help a sales team store business context on all their prospects, track the progress for each of those customers, but also aggregate reports to help understand the state of the business at a high level.”
Joel · Account Executive

A CRM’s primary function is to enable an enterprise sales team’s resources and processes to more efficiently make revenue, aka more money.

Who uses a CRM?

Engineers often sit far from sales, but to build on top of a CRM, they need context on who they are building for.

  • Prospecting: finding new buyers.
  • Qualifying: determining whether a potential buyer has a problem the team can solve, along with the money and authority to buy.
  • Pitching: demonstrating the product or showcasing the value the team can provide.
  • Closing: agreeing on terms, pricing, and contracts to secure revenue.

Other roles use the CRM too: management reviews the pipeline and forecasts revenue; marketing examines where deals come from; and customer success tracks renewals and schedules check-ins. (Paraphrased from Joel’s interview.)

Why do sales teams need a CRM?

For an individual salesperson, the CRM helps answer questions about a particular account: Who are we talking to? What happened last? What needs to happen next?

These responsibilities are often represented as a pipeline or funnel in which prospective buyers gradually become customers. Sales teams need to track:

Buyers and companies: who the buyers are, their responsibilities, and where they work. Pipeline stage: where each prospective deal stands. Interactions: activity involving sales, marketing, and the buyer. Relationships: the connections across those people, companies, deals, and interactions.

Is a spreadsheet enough?

Many small teams start tracking this information in a spreadsheet. That can work for a few people. As a team grows from 10 people to 100, coordinating data, access, and workflows becomes harder.

Familiar engineering problems

Sales collaboration introduces familiar engineering problems:

Challenge Engineering responsibility
Conflicting edits and overwritten data Coordinate updates with optimistic or pessimistic locking. ACID describes atomicity, consistency, isolation, and durability.
Permissions beyond file sharing Apply role-based access control (RBAC) and least privilege to limit who can read or change records.
Manual reminders and routine tasks Use event-driven workflows to respond to changes in business state.
Fragile links between entities Model records and relationships; use normalization and referential integrity where appropriate.
Slow queries as data and complexity grow Use database indexing and, where appropriate, horizontal scaling to support the workload.
History scattered across files and tabs Retain changes and interactions alongside the records they describe.

A CRM provides a maintained, customizable platform for evolving sales processes. Companies can build on that platform instead of maintaining a custom spreadsheet-based sales system.

Engineers building on a CRM must understand its reliability, scalability, access, and workflow guarantees. These depend on the product and configuration. Integrations must respect them as business processes evolve.

Part II

The CRM data model

A business sets up its CRM around its products and services, customers, and sales process.

Standard objects provide a starting point but custom objects, fields, and relationships capture the details specific to that business.

CRM changes as teams grow, add workflows, and revise their sales process.

In this section

  1. How business shapes the CRM

    Illustration of how a CRM reflects a business and why customization is a large part of its design.

  2. Core object model

    How CRMs map customers and their sales process into standard and custom objects.

  3. Differences between a database and a CRM

    Database teams can plan schema changes through migrations. A customer’s CRM may evolve through changes made by several teams, with varying levels of architectural oversight.

  4. A schema that changes over time

    Company processes change, and configuration constantly evolves in the CRM.

Diagram 03 · Part II · The CRM data model

How a business shapes its CRM through objects and fields

Customization is a core CRM capability

Each business has its own products, services, and sales strategy. Its CRM captures what it sells, who it sells to, and how deals progress through configured relationships, custom objects, and custom fields.

Salesforce-style examples: standard objects on the left; business-specific objects and fields on the right.

  • Provider model · standard objects

  • Configured · example relationship

  • Customer-defined · custom objects

Custom objects linked through contact roles N : N Owns · 1 : N 1 : N 1 : N 1 : N 1 : N Lead User / Owner Contact Maya Chen Opportunity Acme Expansion Task Security review Event Review meeting Account Acme Logistics

Simplified relationships · verify the customer schema. 1 : N = one-to-many · N : N = many-to-many. Lead conversion can create or link Accounts, Contacts, and Opportunities; only the Contact link is shown here.

Salesforce models tasks and calendar events with Task and Event records. Their links to other records depend on the activity.

What the business sells and how it sells

Products, services, and sales processes shape the schema.

A property agency tracks listings. A recruiter tracks open roles. Customers define the objects, fields, and relationships needed to represent their offerings and manage their sales process.

  • Real estate

    Property__c

    Listings · Addresses · Asking price

  • Recruiting

    Job_Posting__c

    Roles · Departments · Applicants

  • Wholesale

    Inventory__c

    SKUs · Warehouses · Suppliers

  • Customer-specific schema

    objects, fields, relationships, and stages

Example account fields

"Name": "Acme Logistics",

"Industry": "Logistics",

"Renewal_Tier__c": "Gold",

"Sales_Motion__c": "Partner"

Custom fields capture this customer’s service tiers and sales approach.

Even two businesses using Salesforce can organize their products, services, and sales process differently.

Business choices become CRM configuration

Products and services
Objects for properties, job postings, or inventory; fields for price, service tier, and renewal dates.
Sales strategy
Fields for sales channel and qualification; stages that reflect how the business closes deals.
Customer relationships
Links between buyers, companies, offerings, and the opportunities being pursued.

The customer’s business shapes the schema.

Discover the customer’s objects, fields, and relationships. Confirm what they mean before mapping them into the product.

The CRM’s core object model

Engineers building on CRMs need to understand the core entities, their relationships, and how a sales team adapts them to its process.

A sales team commonly tracks:

  • Buyers: their roles and responsibilities.
  • Companies: the organizations where buyers work.
  • Pipeline position: where a potential sale stands.
  • Interactions: conversations, tasks, and events.
  • Relationships: how those records connect.

CRMs map these concepts into standard objects. The names vary by provider:

Business concept Salesforce HubSpot
Organization Account Company
Person Contact Contact
Potential sale Opportunity Deal
Support issue Case Ticket

The model becomes specific

Standard objects help a company get started, but a CRM reflects decisions made for the business at a particular time. CRM architects help teams translate their sales operations into objects, fields, relationships, permissions, and workflows that can evolve.

Custom objects

When the company’s language does not fit the standard model, it may define its own objects:

  • Real estate: properties, listings, addresses, and prices.
  • Recruiting: job postings, hiring managers, departments, and applications.
  • Retail: inventory, SKUs, warehouses, and suppliers.

Discover before reading

An application may encounter an object or field only at runtime. It needs schema introspection to discover names, types, relationships, and required fields, then map that customer-specific model into concepts the application or agent understands.

Engineers may expect a fixed set of endpoints. A CRM integration must accommodate a flexible, customer-owned data model.

Diagram 04 · Part II · Schema ownership and change

A planned application schema, an evolving customer CRM

A well-managed application database has an intentionally designed schema. Its engineering team controls how that schema changes. A customer’s CRM may change as several teams adapt their products, services, and workflows.

The difference is how changes are governed, and who controls them.

Application database

Illustrative model: an engineering team owns the schema.

Defined tables and relationships

Application

Uses defined fields and relationships.

  • Customers

    id · name · email

  • Orders

    id · customer_id · total

  • Subscriptions

    id · customer_id · renewal_at

Changes have an explicit implementation path

  1. Define

    Agree field meaning, data types, and relationships.

  2. Review and migrate

    Update the schema and the code that depends on it.

  3. Maintain

    Keep tests and documentation aligned with the model.

This describes a managed schema, not every application database.

Customer CRM

Schema changes follow the business’s evolving needs.

  • Sales

    A new qualification step

  • Customer success

    A renewal workflow

  • Marketing

    A new campaign source

Who coordinates the changes?

A CRM architect or admin, or teams with configuration access.

One customer’s configuration, accumulated over time

  • Qualification__c

    Sales added criteria for a new process.

  • Renewal_Date__c

    Customer success schedules renewal work.

  • Lead_Source__c

    Marketing tracks campaign attribution.

  • Stage__c / Stage_v2__c

    An older report and a newer workflow differ.

Oversight varies by customer

Some companies employ a dedicated CRM architect. Others add fields as individual teams need them. Even a carefully designed CRM can accumulate older fields, overlapping meanings, and changing workflows.

Know who defines the schema and how it changes.

Inspect the customer’s configuration and confirm field meaning. Track the changes that affect the product’s mappings and workflows.

Customer differences

The business process becomes software

A founder-led sales process might need only a list of contacts, a few notes, and a simple set of deal stages.

After the company hires its first sales team, it may add owners, tasks, and a shared pipeline.

As the organization grows, it may introduce territories, qualification criteria, revenue attribution, approvals, specialized roles, and different processes for different products or customer segments.

Post-sales teams create more requirements. The company may need to track onboarding, product adoption, account health, renewals, and expansion opportunities.

Enterprise customers may introduce security reviews, procurement stages, legal approvals, parent-child account structures, and many stakeholders inside the same buying process.

The CRM grows alongside the business.

  • New people bring new requirements.
  • New products change what the company needs to understand.
  • New customer segments change the way opportunities are evaluated and relationships are managed.

The CRM reflects the current but evolving state of the business.

A company’s CRM schema changes

Traditional application databases are often designed around a model that developers hope will remain relatively stable. Schema migrations are expensive, and changing existing data structures can break downstream behavior.

A CRM faces a different organizational pressure: the process it represents may continuously change as the business itself evolves its products, services, and sales process.

The schema reflects how the organization has evolved. Old fields, abandoned workflows, inconsistent conventions, and one-off automations are often the residue of earlier versions of the business.

Part III

Reading and writing CRM data

Reading and writing from a CRM, from an engineer’s point of view, may look the same as using an API, but it is not quite the same as interacting with a database you control natively.

A database stores an application state according to rules that an engineer defines.

A CRM stores shared business state that may span sales, marketing, customer success, operations, and finance. Since various business functions may use the CRM for different purposes, who wrote the record, how it relates to other records, and which business functions and processes act on it are important questions to answer when understanding the record.

Applications and agents read a CRM record to reconstruct business context, while writing to a CRM record means taking action in a business process.

In this section

  1. Reading from a CRM

    Reading a record is reconstructing the business context and requires navigating the CRM graph.

  2. Subscribe to updates

    Subscribing to change events allows an application to listen to specific updates.

  3. Writing to a CRM

    Writing to a CRM depends on the business workflow and the risk of overwriting, and needs defined rules at scale.

Reading

Reading records: reconstructing the business context

A single CRM record on its own is often not enough to know its business context. A contact identifies a person, but only after following a person’s relationships with their company and the actions they take can an agent meaningfully understand who the contact is in the business context.

For agents, reading from a CRM involves:

  1. Finding the records.
  2. Tracking their relationships.
  3. Interpreting the records and fields based on business rules.

Reading from CRMs is closer to creating a view than finding a specific resource or document. An agent helping to prepare for a sales call needs access to contacts, companies, opportunities, emails, meetings, and other resources to reconstruct the business context needed to meaningfully understand how to prepare for the call.

The CRM may be designed to enable engineers to fetch resources through a predictable API, but the engineer must also understand the core business questions, which likely require a sequence of calls to understand the resource graph and business context.

Change notifications

Subscribing to changes

Anusha describes subscriptions as useful when a product needs to detect a change within seconds or minutes and then act on it.

Dion + Anusha

Editorial questions · Answer excerpts, 11 Sep 2026

Dion
Does the change notification contain enough context?
Anusha
Salesforce sends us what changed and the record ID. But just the change data might not be enough to process it. They need the actual first name, last name, some ID they can match.
Dion
What does the integration do next?
Anusha
So for a given record that’s been changed, we hydrate that event with all of the information they would have chosen. Salesforce says the last name got updated, the email was deactivated, but these in themselves aren’t enough for the downstream consumer to act on. So we go back to Salesforce, fetch all of that, transform it, and send it along to whatever destination they’ve picked: a webhook or Kinesis (for example).

CRMs store the business context across multiple objects that then can be reconstructed for different views. When getting a change event, the service must also navigate the CRM graph through its relationships to hydrate the rest of the information.

Writing

Writing back to the CRM

Applications and agents read CRM records to reconstruct business context. Writing to a CRM record means taking action in a business process.

Writing depends on the business responsibility

  • A sales development rep may record a contact and their calls in the CRM.
  • A new call may update the status of the deal in the pipeline.
  • A new contact may be added to a company account and marked as the owner.

Understand the affected workflow

The company’s sales process determines its stages, permissions, assignment rules, and required fields.

CRM records show previous interactions and the current stage of a deal. Workflows use that information to assign tasks and coordinate next steps.

What data can be safely written and what is too high-risk to be written programmatically are distilled into write rules and processes.

Batch writes

Writing to the CRM at scale also brings different challenges. Writing each record separately can consume quota quickly.

Anusha describes collecting event-triggered write actions over a period and submitting them together.

“Some customers want the batch handled as a whole so they can evaluate the complete result. Others want valid records to proceed when individual records fail. This expectation affects how the integration reports results and handles retries.”
Anusha Talasila

Practical takeaways

Engineering lessons about reading and writing

  • Reading from a CRM means reconstructing the business context.
  • A single record may be incomplete and need to climb the graph to get more info.
  • Fetching more information from a fragment is called hydration.
  • Subscribing to a change allows an application to listen to updates.
  • Change events often send a fragment, which requires hydrating the relevant record.
  • Writing has more constraints based on the business responsibility.
  • Batching writes needs a well-defined write policy on when to write and on failure.

Part IV

CRM problems in production

Customer installations bring data volumes, access changes, and operating conditions that internal tests may not reveal.

Jay, founding engineer at Ampersand, shares with Dion the challenges of building on top of CRMs at scale.

The conversations focus on what failed, what made diagnosis difficult, and the changes needed to make progress, errors, and recovery visible.

In this section

  1. Deploying code in customer instances

    Installing and maintaining code in customer instances can only be seen in production.

  2. Reading large amounts of data at scale

    Jay shares how reading large amounts of data requires backfills to batch reads, and the challenges of maintaining them.

  3. Building for error edge cases

    CRMs notoriously have many undocumented error cases that might mean different things.

  4. Working connections and integrations can suddenly break

    CRMs are people-dependent, and changes in people may cause integrations to break.

Deploying code inside a customer’s CRM

For custom control over events, some CRMs support adding logic directly inside a customer’s instance.

Adding software to a customer’s instance has its own challenges. The code has to be installed, tested, updated, and possibly removed in an environment the integration team does not control.

The Salesforce version of this code is an Apex trigger which can run automatically in response to record changes or change events.

Jay shares how Ampersand added filter events to reduce quota usage, but the difficulty appeared during removal.

Dion + Jay

Editorial questions · Interview excerpts

Dion
What prevented you from removing the trigger?
Jay
Even though I had the code perfect, like 100% coverage, and my Apex [Trigger] was completely isolated from existing code. I was not able to remove it because our customer didn’t have enough coverage [for their instance].
Dion
What did that mean for the team supporting the integration?
Jay
Getting the code in was easy, but removing the code was blocked. The lack of coverage meant I couldn’t remove my own code.

Customer production instances are difficult to build for

Dion + Jay

Editorial question · Supplied interview excerpts

Dion
How did your test environment differ from the customer’s?
Jay
We are using our own test instances.
Jay
The production instance of what we have for testing is in very different shape with actual customer instances, especially if they’ve been around for a long time.
Jay
They might have automations and customization on top of their system [that we don’t have insight on].

Engineers often build on a test instance, but the real challenge is when the production instance may have custom specialized workflows that may not be maintained and also block external development.

Practical takeaways

Building on CRMs in production

  • Customized CRMs may require specialized code to be inserted for specific functionality.
  • Deploying code into customer instances comes with challenges that cannot always be planned for.
  • Customer configurations may block installation, maintenance, and even removal of code.

Challenges at scale: reading large amounts of data

“We never thought this would actually go on for hours and hours.”
Jay

When reading large amounts of data, a CRM cannot supply the data all in one read. Reading the data may require a backfill, which reads the data in batches. Jay shares the challenges of reading data at scale.

Dion + Jay

Paraphrased conversation · Supplied by Dion

Dion
What is an example of a scalability problem that you do not encounter until you reach a certain size?
Jay
If you are reading an instance with millions of records, a backfill can run for hours. Earlier on, our background jobs sometimes timed out because we did not expect them to run that long.
Dion
What made that difficult to diagnose?
Jay
We did not have enough observability. It was hard to know whether a job was stuck or simply still processing. A builder might ask why it was stalled, but we could not clearly show whether it was at page 100 out of 20,000 and still moving forward.
Dion
How did that improve?
Jay
We added heartbeat mechanisms and better operation visibility. Progress tracking, page counts, and logs help show that a job is alive and advancing rather than looping or failing silently.
Dion
So the lesson is that a backfill needs more than a mechanism to read historical data; it needs a mechanism to prove that it is progressing.
Jay
Right. Otherwise, a long-running but healthy import and a broken import can look the same.

Practical takeaways

Engineering lessons at scale

  • Reading 100 records and reading thousands of records are different.
  • Reading records in batches may employ a backfill.
  • When backfills stop reading, it can be difficult to debug.
  • Reading can stop because of infrastructure issues, permission changes, CRM failures, or quota limits.
  • Observability becomes a requirement to maintain and manage reading data at scale.

A status code can be ambiguous

“The status code itself is not always clear.”
Jay

Many APIs may not be documented. Jay shares how error codes may mask errors.

Dion + Jay

Paraphrased conversation · Supplied by Dion

Dion
You said providers can return errors that look similar but require different responses. What does that mean in practice?
Jay
A provider might return the same status code for several different reasons. You can add a handler for that status code and think you have covered the issue, but the correct response may vary depending on the actual cause.
Dion
So one error could be a temporary provider issue, while another could be a customer-specific permission or configuration problem.
Jay
Exactly. The status code itself is not always clear enough to tell you what to do.
Dion
And that gets harder as you add providers.
Jay
Yes. Different providers describe the same kinds of failures differently. If you support many providers, it becomes difficult to capture and standardize all of those cases.
Dion
Is that why it helps to group known errors into categories before sending them into an agent workflow?
Jay
Yes. There are many different error types and formats. If an agent has to process all of the raw information directly, token use can become a problem. Known categories should be handled ahead of time where possible.

Most CRMs are designed for people interacting on the web, not necessarily via their APIs. These APIs may have many undocumented edge cases that you wouldn’t necessarily know unless discovered through multiple instances and patterns begin to form.

Practical takeaways

Engineering lessons: errors

  • Many CRM errors are not well documented.
  • Error codes may mask underlying issues.
  • Some errors can only be recognized through production experience and data.
  • Building for the edge cases is the most underestimated engineering work for integrating with CRMs.

Customer changes can break a working connection

Jay shares how changes in users may break a working connection in an integration.

Dion + Jay

Paraphrased conversation · Supplied by Dion

Dion
What are examples of connections that initially work but fail later?
Jay
A user may authenticate successfully and be able to read Contacts for a long time. Later, the product may try to read Accounts, but the user does not have the required permission or scope. The user might not know that the connection was incomplete.
Dion
So the connection can look healthy until the application reaches a capability it has not needed before.
Jay
Right.
Dion
What are other ways credentials can break after setup?
Jay
Someone can authenticate into another instance, which may invalidate the existing token. The person who originally authenticated can leave the company and have their account deactivated. An admin can revoke access, rotate credentials, or change OAuth settings.
Dion
And those events may happen without the broader team realizing they have affected the integration.
Jay
Exactly. The company may only notice once the installation starts failing.
Dion
Permissions are separate from OAuth, too?
Jay
Yes. OAuth is the authorization flow and its scopes. Permissions are what the CRM admin has granted the user in the CRM itself. A user might be authorized through OAuth but still not have access to a specific object or resource.

Human change in organizations can get complicated for everyone involved. The underlying CRM also reflects the same complications.

“The rest of the company has no idea why it’s failing.”
Jay

Engineering summary

Engineers often want to set and forget. Building with CRMs may not be the case since the underlying users and permissions may continuously be changing.

Changes in people are also not always predictable. Maintaining an unforeseen change may require intervention from customer support or investigation with the end consumer to find out what has changed in the customer’s business, which then gets reflected in their CRM setup.

CRMs used by large teams may see large changes; they may not know what is happening in the company, much less their CRM. Maintaining this integration then may require patient customer support to help find the right people to solve the problem.

Part V

CRM-powered agents

Agents that need context from their customers’ CRMs need a reliable way to get their customers’ data.

This section uses an AI Sales Development Representative (SDR) to illustrate an example of building a CRM-powered agent.

In this section

  1. Bring CRM context into the agent

    The interaction diagram shows how data reaches an agent through the product and integration.

  2. CRM-powered agent example: AI SDR

    Example of what an AI SDR does and how it interacts with a CRM.

  3. Agent layers built on CRM context

    Agents read from the CRM, perform reasoning, and take business action.

Diagram 05 · Part V · From record to agent

What actually happens between your agent and the customer’s CRM?

// Reading the section

Five strata between the record and the agent, drawn as an architectural section. Each one is narrower than the one above.

Each layer affects which data reaches the agent.

Permissions limit access; requests retrieve data; mappings select and transform fields for the agent.

Wide

  1. The record

    Objects, standard and custom fields

    Multiple records with their fields hold the business context.

  2. Authorization

    Token · Scopes · Object permissions

    The integration user sees a different CRM than the admin who configured it.

  3. Transport

    Rate limits · Pagination · Retries

    Quota may be shared with other tools in the customer’s org.

  4. Shape

    Mapping · Hydration · Shape

    A thin change event tells you to check for the updated records.

  5. Your agent

    The reasoning

    Customer data and context arrive through the four layers above.

Narrow

The output contains the fields selected for this feature, after access checks, retrieval, and mapping.

One record, entering and arriving

In: as Salesforce returns it

"Id": "0016g00000XyZabAAG"

"Name": "Acme Logistics"

"OwnerId": "0056g000004Bq1r"

"Renewal_Tier__c": "Gold"

"Status_2__c": "DO NOT USE"

"LastModifiedDate": "…11:04Z"

18 chars; REST always returns the case-safe form.

Through four layers

Out: what the agent reasons over

company: "Acme Logistics"

owner: "Jordan Lee"

tier: "Gold"

as_of: "2026-09-02T11:04Z"

source: "salesforce/account"

OwnerId resolved. Tier mapped. Dead field dropped.

The agent normalizes the data, synthesizes, and identifies an action.

Omitting a needed field can remove context. Including an obsolete field can introduce an outdated value. The source and timestamp give a trail to explain where the data came from.

Connection and data checklist

  1. 01 Check access and rules scopes, validation rules, and one owner
  2. 02 Check delivery and quotas a shared quota, and events that arrive thin
  3. 03 Check custom object & field mappings fields may be named differently

Read, write, and subscribe operations

  1. 01 Read — Reconstruct business context Six records in, one view out
  2. 02 Subscribe — Stay up to date Listen to updates
  3. 03 Write — Take a business action Update a record or workflow

Check access, delivery, and field mappings.

An agent needs the relevant records, permissions, and field mappings. The next section applies these concerns to an AI SDR workflow.

An AI sales development representative

An AI sales development representative (SDR) assists with or automates parts of a sales workflow. A sales representative may offload data-intensive or communication tasks to it.

Work the agent can support

  • Prospecting

    Scan databases for accounts that match the company’s ideal customer profile.

    READ

  • Data enrichment

    Find missing email addresses, phone numbers, job roles, and company information.

    READWRITE

  • Lead qualification

    Cross-reference information from websites to prioritize prospects.

    READ

  • Communication

    Draft personalized emails and coordinate follow-ups and scheduling.

    READWRITESUBSCRIBE

Where the operations sit in the stack

Each responsibility crosses several layers. These operations describe CRM interactions; other services have their own interfaces.

  1. 01

    Context · READ

    Retrieve needed records and fields. Combine them with other systems or public information, retaining the source of each fact.

  2. 02

    Orchestration · SUBSCRIBE + READ

    Receive changes and select a workflow. Read current records if an event lacks context. Requests and schedules can also trigger work.

  3. 03

    Reasoning · Use context

    Assess a prospect or draft a message. Reasoning alone needs no CRM write. Request additional reads through tools; pass proposed changes to the action layer.

  4. 04

    Action · WRITE + READ

    Check permissions and required approvals, then update the intended record. Verify the response or read back the result. Email and calendar actions use their own services.

Example: SUBSCRIBE to new leads → READ context → propose enrichment → WRITE approved fields and verify.

Part VI

From one integration to enterprise infrastructure

Building a product or AI agent that connects with customer CRMs means supporting many customer installations.

Each installation needs to maintain separate credentials, permissions, schemas, mappings, and sync state.

Each customer can change its configuration as their business changes. Support needs to identify which installation is affected and what integrations have stopped.

This section introduces a management layer around the customer connections and building out the infrastructure that powers this layer at scale.

In this section

  1. Track each customer installation

    The diagram distinguishes normal data movement from stalled operations and blocked access, using illustrative counts.

  2. Support different customer requirements

    Configuration varies by installation. Dion and Anusha discuss the changes involved in adding regional support.

  3. Maintain the product over time

    Installation status, data movement, failures, and recovery need ongoing visibility. A closing checklist revisits the guide’s implementation questions.

Diagram 06 · Part VI · Supporting customer installations

Why has this integration stopped moving data?

Each customer connection needs its own status, error history, and recovery process.

Configuration per installation

Each integration needs auth, object and field schema, field mappings, sync state, and error handling and must be tracked for each customer.

With a hundred customers, details are constantly changing by installation. A failure needs to be traced to the affected customer.

The management layer

auth · schema · mappings · sync · errors · read, write, subscribe

configuration and state tracked per installation

Operating as expected · 63 of 100

54

operational, connected, and moving data on schedule

9

initial import progressing; checkpoints advancing

Delayed or failing · 25 of 100

9

initial import stalled; checkpoint not advancing

6

rate-limited while reading and writing

6

writes rejected by a customer validation rule

4

mapped field removed from the customer schema

Access blocked · 12 of 100

5

required feature unavailable on the customer plan

5

authorization revoked; connected user deactivated

2

contacts unavailable to the connected user

Each line represents an installation to inspect its configuration, recent activity, and errors. The highlighted line follows one installation whose authorizing user has been deactivated.

Investigation areas · 01 integration · 02 provider · 03 customer configuration · 04 user access

Highlighted installation: access revoked. Check the connected user and reauthorize.

Track each customer’s connection separately. Show its status, errors, and recovery steps.

In this example, 37 connections need attention. The causes include integration failures and customer changes. Support needs the status and cause for each connection.

Illustrative scenario; counts are not measured customer data. Each installation is assigned one primary status here.

Connection context

Building a product that works with a CRM

Building a single integration with a CRM can be done using an API that gives read and write access.

However, building a product or an agent for other businesses is a different story.

Every customer is a separate business with its own CRM configuration and customizations, and is constantly changing.

Each customer brings its own configuration

Concern Information to retain
Identity Provider and intended CRM instance
Access Authorized identity and needed permissions
Schema Relevant objects, fields, and relationships
Mapping How CRM fields support product concepts
Sync Progress, checkpoints, and freshness
Errors Affected operations and recovery state

From integration to product

Managing the customer installations

If you have 100 customers, each with their own CRM, your product must manage 100 customized CRMs. Each has its own connection and authentication, permissions, object and field schema, field mappings, new records, and errors.

Each customer’s CRM may also be evolving, which can trigger reauthentication, schema drift, or an integration that stops working.

Observability becomes a requirement

Since every customer’s data integration can break for independent reasons, an observability layer that detects changes in the connection and in reads and writes becomes essential to fixing an installation and allowing the application or agent layer to continue working.

Some errors need human intervention

Some errors are shared across providers and can be built into the infrastructure, while some are highly specific to the provider or even the customer’s instance, needing customer support to navigate the complex CRM configuration changes.

An infrastructure layer for the product

The product needs a management layer to maintain those integrations and support their reliability. It needs observability to know which integrations have been successfully set up, are still working and moving data, and which are broken.

Eventually all products that need access to CRMs will need an infrastructure layer to manage their provider integrations; it is just a matter of scale.

Supporting multi-region infrastructure

Different countries and regions have different laws on how data is handled. The need for different product surfaces and separate data orchestration adds a level of management complexity in addition to just managing installations.

Dion + Anusha

Edited and condensed · Paraphrased from the transcript

Dion
Adding EU support meant changing our React library so a customer’s frontend could pass a region value. Why did that require engineering work?
Anusha
My understanding is that their system didn’t distinguish EU from US customers. Ampersand needed that distinction.
Dion
What else does supporting another region involve?
Anusha
We maintain separate EU and US infrastructure and separate projects for each region. Even though we don’t store customer data, we still route it. We have to manage the infrastructure that handles those different regions.

Handling data across regions also has downstream impact on product flows and onboarding. Maintaining infrastructure requirements also comes with maintenance and support from product engineering.

Supporting multiple providers at scale

Building for each provider may be different. Patterns are useful, but assumptions have to be tested.

“You have to go back to first principles and really understand what this provider needs from you.”
Anusha Talasila

Providers may also update their requirements or even make undocumented changes that express different errors. Maintaining domain expertise per provider becomes part of the infrastructure problem when building for multiple integrations at scale.

Practical takeaways

Engineering lessons

  • Supporting one integration is an API call.
  • Supporting a product that needs CRM data needs a management layer.
  • CRM integrations are expected to break from changes from the provider, the customer, or schema drift.
  • Observability becomes a requirement to gain visibility into why CRM integrations break.
  • Managing and maintaining a large set of customer integrations becomes an infrastructure problem.
  • Multi-region infrastructure is an example challenge that comes at scale.
  • Supporting every provider requires domain expertise.
  • Providers may also change functionality without notice; the infrastructure must catch the change.

Part VII

Appendix

CRM work brings together business language, data models, integration patterns, and operating concerns.

This appendix collects the terms used throughout the guide into a compact reference for engineers.

In this section

  1. Records and structure

    The objects, fields, relationships, and schemas that represent customer and revenue work.

  2. Integration and operation

    The reads, notifications, backfills, checkpoints, and permissions involved in maintaining CRM data flows.

  3. A living revenue system

    The CRM reflects an evolving business.

  4. Closing remarks

    Building products on a CRM requires enterprise infrastructure at scale.

Glossary

Records and structure

CRM
Software used to organize customer relationships and the work around them.
Company / Account
A record representing an organization.
Contact
A record representing a person.
Opportunity / Deal
A potential sale, often tracked through stages.
Activity
A recorded interaction or task; its representation varies by provider.
Schema
The available record types, fields, and relationships.
Field mapping
A correspondence between a CRM field and a concept used by another system.
Custom object
A customer-defined record type added beyond the CRM’s standard objects.
Custom field
A customer-defined field added to a standard or custom object.

Glossary

Integration and operation

Backfill
Retrieving historical data to establish context or fill a gap.
Incremental read
Retrieving changes since a previous point.
Change notification
A signal that something changed, with contents determined by its source.
Subscription
A mechanism for receiving notifications when CRM records change.
Hydration
Retrieving additional record data after receiving a notification.
Checkpoint
Recorded progress used to continue or recover work.
Authentication
Establishing the identity used for a connection.
Authorization
Determining what that identity is permitted to access or change.
Scope / CRM permission
An OAuth scope limits what a connection may request; a CRM permission limits what the connected user may access. Either can constrain the integration.
Installation
One customer’s configured connection, including its identity, permissions, schema mappings, and sync state.

Putting the pieces together

A living revenue system

A CRM begins as a place to store customer information.

As the company grows, it becomes the shared memory of the organization, a coordination layer for its revenue teams, and a model through which leaders understand the business.

Four connected roles

Record. Preserve the organizations, people, opportunities, and activities that make up customer relationships.

Remember. Reconstruct what has happened, what the customer needs, and what the company has promised.

Coordinate. Direct people, processes, and tools toward the next useful action.

Learn. Turn patterns across many relationships into a better understanding of how the business creates customer value.

Closing perspective

Builders build on CRMs as infrastructure

CRMs help the company scale the business by helping to find prospective customers, build relationships, turn potential deals into revenue, deliver value, retain customers, and expand accounts over time.

The CRM reflects the current state of the business but never contains the complete truth. It is highly customizable, continually changing, and shaped by the people and processes that maintain it. The CRM gives an organization a shared model to act on.

Engineers building agents and products that need their customers’ CRM data must design for this living system and also treat their data integrations as infrastructure. Their infrastructure must manage all their customers’ integrations, continuously build for edge cases, and plan for how their product will scale across customers and regions. Finally, supporting reliable CRM integrations means they must have a dedicated customer service team for human edge cases that not even their customers fully understand.

Engineers need to ask how they will maintain the underlying infrastructure and whether this is a problem they want to own.

Acknowledgments

About this edition

Developed from Dion Low’s manuscript and editorial direction, with engineering perspectives from Anusha Talasila and Jaehyun (Jay) Lim, and a sales perspective from Joel Theodros, Account Executive, and others from the Ampersand team.

Presented by Ampersand as part of Agent of Record: Systems of Record.

  • Dion Low

    Founding Engineer, Marketing · Primary author and editor

    Dion joined Ampersand as a founding engineer and has built Ampersand’s observability dashboards and embeddable products for onboarding customers.

  • Jaehyun (Jay) Lim

    Founding Engineer

    Jay joined Ampersand as a founding engineer and has built many core backend services, including subscribe actions, and maintains customer support across the product life cycle.

  • Anusha Talasila

    Software Engineer

    Anusha joined Ampersand from Amazon Web Services to support and build on the Ampersand platform. She built onboarding and financial-reporting systems at Amazon Marketplace and architected event-driven services.

  • Joel Theodros

    Account Executive and Founding GTM

    Joel joined Ampersand as a founding GTM. He brings perspective from various sales organizations and as an ex-founder.

Start building
deep integrations today