What is the difference between a contact and an opportunity in a CRM?
A contact is a person or household. It is created once and should persist for the life of the relationship. An opportunity is a single instance of demand from that contact — one estimate, one job, one time they wanted something. One contact can carry dozens of opportunities over a decade. Collapsing the two is the most common data-modeling mistake in service businesses, and it quietly breaks conversion reporting.
People persist. Demand repeats.
Software sold to B2B sales teams assumes a contact buys once, maybe twice. Home services is the opposite. A homeowner might call you for a clogged drain in 2019, a water heater in 2022 and a repipe in 2026. That is one relationship and three separate purchase decisions.
If your system creates a new contact each time, you lose the history that makes the fourth call easy to win. If it overwrites the old record each time, you lose the ability to measure how often demand converts. You need both layers, and they need different rules.
What breaks when the layers collapse
The damage shows up in places that look unrelated to data modeling.
This is why customer intelligence work usually starts with the record model rather than with analysis. You cannot compute anything reliable on top of a structure that cannot distinguish a person from a purchase event.
- Conversion rate loses its denominator. Close rate needs a count of opportunities. If contacts and opportunities are the same object, your denominator is really a count of humans, and repeat customers silently deflate it.
- Deduplication becomes destructive. Merging two “duplicate” records that are actually two separate jobs erases one job. Teams learn to fear the merge button and stop cleaning anything.
- Follow-up targets the wrong thing. “No activity in 30 days” is meaningful for an open opportunity and meaningless for a contact who simply has no current problem.
- Source attribution gets overwritten. The second job overwrites the first job’s lead source, and your marketing report loses the original acquisition channel.
Field service platforms add a third layer
Operational systems complicate this deliberately, because service work has a physical location. ServiceTitan separates customer, location and job, so one customer can own several properties and each property accumulates its own job history. Jobber uses client, property, request, quote and job. Marketing platforms usually have only contact and opportunity.
When you connect them — for example through a ServiceTitan integration or a Jobber integration — the layers rarely line up one-to-one. Someone has to decide whether the marketing contact maps to the customer or to the location. Landlords, property managers and multi-unit owners are where that decision gets tested.
A one-question test
Ask whoever administers your system this: if the same person calls next spring about an unrelated problem, does the system create a new record, update the existing one, or make a child record under it?
If the answer is “it depends on who takes the call,” you do not have a data model, you have a habit. Fixing that is unglamorous, but every downstream number — close rate, lifetime value, cost per booked job — inherits the ambiguity.
Topics: CRM data model · opportunities · contacts · reporting
Have a version of this question about your own business?
The useful answer usually depends on which systems you run and how they're connected. That's a conversation, not a blog post.