Loading tutorials…
Loading tutorials…
Contacts, Companies, and Deals are the three records every HubSpot motion runs on. Get the relationship between them right and your reports are clean for years. Get it wrong and you spend Saturdays untangling duplicate companies and orphaned deals. Here is the discipline.
Who this is forOps leads and founders configuring their HubSpot records for the first time, or anyone inheriting a portal where the same company appears 4 times and nobody knows which deals are real. If 'duplicate management' is on your monthly to-do list, this tutorial is for you.
What you'll need
Step 1
Contact = a person. Company = an organization. Deal = a sales opportunity. Ticket = a service issue. Confuse them and your reports will be wrong for years.
Contact records hold person-level data: name, email, phone, job title, lifecycle stage. One human, one Contact record. Always.
Company records hold organization-level data: domain, industry, annual revenue, employee count. One organization, one Company record — even if 5 of your contacts work there.
Deal records hold opportunity-level data: amount, stage, close date, pipeline. Multiple deals can exist per company (renewal + upsell, or net-new + expansion).
Ticket records hold support-case data: status, priority, source. Optional unless you use Service Hub.
Rule: never put person-level data on a Company record, and never put company-level data on a Contact. 'Industry' lives on Company. 'Job Title' lives on Contact. Mixing them up makes segmentation impossible later.
Step 2
Settings → Objects → each record type → Record customization. This sets the default sidebar and middle-column layout for every user.
Open Settings → Objects → Contacts → Record customization.
Drag the most-used properties to the top of the Left Sidebar: Lifecycle Stage, Lead Status, Owner, Last Activity Date, Phone, Email.
For the Middle Column, set Activities, About this contact, Communications, Tickets, Deals, Memberships, and any custom cards. Default order should match how reps actually work — usually Activities first.
Repeat for Companies (Industry, Annual Revenue, Employees, Owner, Lifecycle Stage on the sidebar) and Deals (Amount, Close Date, Deal Stage, Pipeline, Owner, Priority).
Save the layout as the default for all users. Reps can personalize on top, but the default is what new hires see and what trainings reference.
Step 3
HubSpot ships ~150 default contact properties, ~70 default company properties, ~50 default deal properties. Most of what you need already exists.
Settings → Properties → pick object type. Filter by Group → "Contact information" or "Sales properties" or whatever applies. Read through the defaults.
For each "I need a field for X" idea, search the existing list. Common ones owners re-create unnecessarily: Lifecycle Stage, Lead Status, Original Source, Industry, Annual Revenue, Number of Employees, Close Date.
When you must create custom: Click "Create property" → pick object → choose field type carefully. Field type is permanent in practice (change it and you lose data).
Group custom properties into custom property groups by team or workflow purpose (Sales Qualification, Customer Success, Billing, Marketing Attribution). Never use the default "Other" as a permanent home.
Write a description on every custom property. Future-you in 18 months will not remember why "lead_score_v3" exists.
Step 4
A Contact can be associated with a Company as "Decision Maker," "Influencer," or "Procurement Contact." Labels are how you encode the relationship.
Settings → Objects → Contacts → Associations → Manage labels (requires Sales Hub Pro / Operations Hub Pro).
Create labels that match your sales motion: Decision Maker, Champion, Influencer, Blocker, Procurement, End User, Renewal Owner.
Apply labels when associating contacts to companies and deals. From any contact record → Associations → Add label.
Labels drive reporting: "show me all deals with no Decision Maker labeled" is a powerful pipeline-hygiene query that catches stalled deals.
Set a small set (5-10 labels max) and document them. Label sprawl produces the same chaos as custom-property sprawl.
Step 5
HubSpot dedups Contacts by email and Companies by domain. Anything else (phone, name) requires manual merge. Set the rules now or live with duplicates forever.
Settings → Data Management → Duplicates (Sales Hub Pro+ unlocks AI-powered dedup).
For Contacts: HubSpot auto-merges on email match during import. If a contact has no email, it imports as new every time — this is the #1 source of contact duplicates.
For Companies: HubSpot auto-merges on root domain match (acme.com matches both acme.com and www.acme.com but NOT acme.io or acme.co.uk).
Before importing a CSV, deduplicate within the CSV first (using Excel or Google Sheets). HubSpot will not catch within-file duplicates.
Run the Duplicate Manager monthly: Contacts page → Actions menu → "Manage duplicates" (requires Marketing Hub or Sales Hub paid tier). HubSpot suggests merges; review before accepting.
Step 6
Settings → Import & Export → Start import. Use the Companies-first, Contacts-second, Deals-third order. Otherwise associations break.
Always import Companies first. Use a CSV with one row per company. Include the Domain column — HubSpot uses it for dedup and auto-association.
Import Contacts second. Include the Company Domain column on every row — HubSpot will auto-associate the contact with the company on that domain.
Import Deals third. Use the "Associate deals with existing companies / contacts" toggle and map by Email (for contacts) or Domain (for companies).
For each import, run on a sample first: take 20 rows, import as a test, verify everything looks right in the records, THEN run the full import. Catching a field-mapping error in 20 rows is 5 minutes; catching it in 20,000 rows is a 2-day cleanup.
After import, spot-check 10 random records. Are properties populated? Are associations correct? Did dedup work? Anything weird now is going to be weird forever — fix at import time.
Common mistakes
Putting company data on contact records
What goes wrong: Industry, Annual Revenue, Number of Employees end up duplicated on every contact record. When you change a company's industry, you'd need to update 12 contact records. Reports double-count. Segmentation breaks.
How to avoid: Move company-level fields to the Company object (Settings → Properties → Company). Reference them via association — a contact's industry is "their company's industry."
Creating one mega-pipeline with 14 deal stages
What goes wrong: Reps cannot tell which stage applies. Forecasting is meaningless because half the stages are "soft" qualification, not deal-progression. Pipeline reports become noise. The CRO complains weekly that the numbers do not match reality.
How to avoid: Keep deal stages at 5-7 max per pipeline. Use multiple pipelines (New Business, Expansion, Renewal) instead of one mega-pipeline. See the Sales Pipeline tutorial.
Skipping association labels and treating every contact as identical
What goes wrong: Six months in, you cannot answer 'which open deals have no decision-maker labeled?' You build deal-stage automation that assumes every contact is the buyer when 40% are procurement or end-users. Cycle time goes up because outreach hits the wrong person.
How to avoid: Set up 5-10 association labels (Decision Maker, Champion, Influencer, Procurement) and require reps to label as part of disposition. Build a dashboard showing "deals without Decision Maker labeled."
Importing data without deduping the CSV first
What goes wrong: Your 12,000-row CSV has 800 within-file duplicates (same person, slightly different email casing or formatting). HubSpot does not catch within-file dupes. You end up with 12,000 records, of which 7% are dupes. Cleanup is a 2-day project.
How to avoid: Before any import: open the CSV in Excel / Sheets, use Conditional Formatting or =COUNTIF to find duplicate emails / domains, deduplicate, THEN import.
Letting reps create new companies manually instead of associating to existing ones
What goes wrong: Reps see 'Acme Inc' is not in the company dropdown and create a new one — when 'Acme, Inc.' (with the comma) already exists. Same company, three records. Pipeline reports show three different revenue numbers.
How to avoid: Train reps to search before creating. Restrict company-creation permissions for SDRs (only AEs / managers can create new companies). Run weekly dedup audits.
Building deals before standing up Companies cleanly
What goes wrong: Deals get associated to the wrong company (or no company). Account-level revenue rollup is wrong. ABM reporting is meaningless. Customer-success can't see expansion-deal history per account.
How to avoid: Import / build Companies first. Always require a Company association at deal creation (Settings → Objects → Deals → Required properties).
Recap
Done — what's next
How to set up HubSpot CRM from scratch without painting yourself into a corner
Read the next tutorial
Hand it off
Record-architecture decisions compound. A specialist who has built 50+ HubSpot portals knows which properties to make custom, which associations to label, and how to dedupe import data so cleanup is not a quarterly job. EverestX HubSpot specialists handle this end-to-end at $14-16/hr — typically $300-600 for the initial structure work.
See specialist rates
Custom objects (Marketing Hub Enterprise / Operations Hub Pro+) are for genuinely new object types — Subscriptions, Inventory Units, Properties (real estate), Vehicles (automotive). Do not use them to add fields you could just add as properties on Contact / Company / Deal. Default objects + properties cover 90%+ of B2B needs.
Two patterns: (1) One Company record with a 'Division' property on associated Contacts and Deals — simpler, works for most. (2) Parent/child company relationships (Sales Hub Pro+) — Settings → Objects → Companies → enable parent/child. Use parent/child when divisions have meaningfully different motions and you need separate ABM reporting per unit.
Contact = someone in your CRM (a lead, customer, prospect). User = someone who logs into HubSpot (a teammate). They are completely separate objects. A User can also be a Contact if you sell to your own team, but generally the two never overlap operationally.
Yes. From any list view (Contacts / Companies / Deals): select rows → top toolbar → Edit property. Or use a workflow with enrollment criteria + 'Set property value' action. For large updates (1,000+ records), export to CSV, modify, re-import — HubSpot updates by record ID or email match.
Settings → Data Privacy & Consent. You can permanently delete a contact (and associated activities) via the contact record → Actions → Delete (GDPR). HubSpot honors the deletion across activity history, lists, and associated data. Set up a documented process before you get your first request — DIY-ing a GDPR delete under pressure leads to mistakes.
HubSpot CRM
HubSpot's Smart CRM is free, fast to spin up, and easy to break in the first month. Most owners skip the account-level defaults, invite users with the wrong permission sets, and end up rebuilding 60 days in. Here is the setup sequence that holds up.
HubSpot CRM
A HubSpot pipeline is the single most-referenced screen in the CRM. Set up wrong, the forecast number is fiction and reps stop trusting it. Set up right, the CRO walks into Monday with a real number. Here is the discipline that holds up.
HubSpot Marketing Hub
Properties are the foundation under every workflow, segment, and report in HubSpot. Most owners create 80+ custom properties in the first month, then spend the next year cleaning up the mess. Here's the discipline to do it right the first time.
HubSpot CRM
DIY HubSpot CRM is a great idea — until it isn't. This is the honest framework for when the cost of self-managing exceeds the cost of hiring help, and how to tell which side you are on.