HubSpot Admin Reference · Complete Guide

Every HubSpot Object
Explained

Properties, purpose, real-world examples, case studies, and admin best practices for every standard object in HubSpot — CRM, Sales, and Activity.

CRM records Sales commerce Timeline activities Case studies
Naveed Abbas profile photo
Naveed Abbas
CRM Administrator
🏛️

CRM Objects

Core records for people, companies, opportunities, and support — available in all HubSpot plans

Core records for people, companies, opportunities, support, industry-specific records, and custom CRM data models.

👤
Contacts
Individual people your business interacts with
CRM Object All Plans Core Object
Overview
Properties
Example
Case Study
Admin Best Practices
Why It Exists

Contacts solve the fundamental CRM problem: "Who are the people we're talking to?" Every interaction, deal, email, and activity in HubSpot ultimately revolves around a Contact. It is the most central object in the entire system.

What Is a Contact?

A Contact record represents a real individual person — a lead, prospect, customer, partner, or any human being your business has a relationship with. Every form submission, email open, website visit, or sales interaction is stored on a Contact record.

Who Uses It

Marketing — segments contacts into lists for campaigns. Sales — reaches out, logs calls, tracks lifecycle. Service — handles tickets associated to contacts. Admins — maintain data quality, manage properties, set lifecycle rules.

Key Concept: Deduplication

HubSpot uses email address as the unique identifier for contacts. If two records share the same email, HubSpot flags a duplicate. As an admin, managing duplicates is one of your most critical ongoing responsibilities.

Associated Objects

↔ Companies ↔ Deals ↔ Tickets ↔ Quotes ↔ All Activities

Default Contact Properties

PropertyTypePurpose
emailEmailPrimary identifier — used for deduplication
firstnameTextFirst name for personalization
lastnameTextLast name
phonePhoneDirect phone number
jobtitleTextRole or title at their company
companyTextCompany name (text field, separate from Company object)
lifecyclestageDropdownWhere in the funnel: Subscriber → Lead → MQL → SQL → Opportunity → Customer → Evangelist
hs_lead_statusDropdownSales status: New, Open, In Progress, Open Deal, Unqualified, Bad Timing
hs_analytics_sourceDropdownOriginal traffic source (Organic, Paid, Direct, etc.)
hs_email_optoutCheckboxWhether contact has opted out of marketing emails
createdateDateWhen the record was created
lastmodifieddateDateLast time any property was updated
notes_last_contactedDateLast time a rep logged a contact activity
hubspot_owner_idOwnerWhich HubSpot user owns this contact
hs_content_membership_statusDropdownAccess to private content / membership portals
city / state / country / zipTextLocation data for segmentation and personalization
websiteURLPersonal or company website
linkedin_bio / twitterhandleTextSocial profiles
num_notes / num_contacted_notesNumberCalculated engagement counts

Real-World Example

Scenario
B2B SaaS Company — Lead comes in via webinar
  • 01Sarah Khan registers for a webinar using a HubSpot form
  • 02HubSpot creates a Contact record automatically with her email, name, and job title
  • 03Lifecycle stage is set to "Lead" by a workflow triggered on form submission
  • 04She attends the webinar → workflow updates her to "MQL" and notifies an SDR
  • 05SDR logs a call on her record, creates a Deal, and updates Lead Status to "In Progress"
  • 06She buys → lifecycle stage updates to "Customer" → enrolled in onboarding sequence

Case Study

Problem

A digital marketing agency had 4,200 contacts in HubSpot but 38% were duplicates. Their email open rates were tanking because the same person was getting emails twice. Their lifecycle stages were inconsistent — some customers were still labeled "Lead."

Admin Solution

  • 🔍
    Ran a duplicate audit using HubSpot's built-in duplicate tool (Contacts → Actions → Manage Duplicates). Merged 1,592 duplicate records over two weeks.
  • ⚙️
    Built a workflow that auto-updates Lifecycle Stage based on deal stage changes — so a won deal instantly flips the contact to "Customer."
  • 🚫
    Added required field validation on all forms: email must match standard format, phone must have 10+ digits. Reduced junk submissions by 60%.
  • 📋
    Created a "Contacts with no owner" active list. A weekly task reminds the admin to assign or clean these records.
RevOps Perspective
Contacts are your reporting foundation. If lifecycle stages are wrong, your funnel report lies. If contacts are duplicated, your email metrics are deflated. A RevOps admin treats contact data quality as a weekly maintenance task, not a one-time setup.

Admin Best Practices

  • Always set a default Lifecycle Stage on form submissions — never leave it blank
  • Use workflows to progress lifecycle stages automatically based on behavior (form fill, email click, deal creation)
  • Run monthly deduplication audits — HubSpot auto-suggests duplicates based on email and name similarity
  • Set Contact Owner via round-robin workflow for inbound leads — no lead should go unassigned
  • Create a required email validation property to block fake emails on form submission

Common Mistakes

  • Leaving lifecycle stage blank
    Without a lifecycle stage, you can't build funnel reports or trigger stage-based workflows.
  • Not associating contacts to companies
    In a B2B setup, unassociated contacts break account-level reporting entirely.
  • Using the company text field instead of the Company object
    The "company" text property on a Contact is just a string — it doesn't link to a real Company record.
Interview Gold

"HubSpot uses email as the contact deduplication key. As an admin, I maintain data quality by running bi-weekly duplicate audits, using required field validation on forms, and building workflows that auto-update lifecycle stages based on deal activity."

🏢
Companies
Organizations, businesses, or accounts your contacts belong to
CRM ObjectAll PlansB2B Critical
Overview
Properties
Example
Case Study
Admin Best Practices
Why It Exists

In B2B sales, you don't sell to individuals alone — you sell to businesses. A Company record is the account-level view of everything happening with an organization. It groups all contacts at that company, all deals with that company, and all support history.

Auto-Association by Domain

HubSpot can automatically associate a Contact to a Company if their email domain matches the company's domain name. For example, naveed@techcorp.com → auto-associates to the "TechCorp" company record that has domain techcorp.com.

As an admin, you control this setting: Settings → Objects → Companies → Auto-associate companies to contacts.

↔ Contacts (many)↔ Deals↔ Tickets↔ Quotes
PropertyTypePurpose
nameTextCompany name — used for deduplication
domainURLWebsite domain — used for auto-association with contacts
industryDropdownIndustry sector for segmentation
numberofemployeesNumberCompany size — useful for ICP targeting
annualrevenueNumberAnnual revenue for account scoring
lifecyclestageDropdownCompany-level funnel stage
hs_lead_statusDropdownSales outreach status at the account level
city / state / country / zipTextHQ location
phonePhoneCompany main phone number
hubspot_owner_idOwnerAccount owner — typically an AE or CSM
typeDropdownProspect, Partner, Reseller, Vendor, etc.
createdateDateWhen the record was created
hs_num_associated_contactsNumberCalculated — count of linked contacts
hs_num_open_dealsNumberCalculated — number of open deals associated
descriptionText AreaFree-text description of the company
Enterprise SaaS — Account Management Setup
  • 01Admin creates a Company record for "Unilever" — sets domain as unilever.com
  • 02HubSpot auto-associates 14 contacts with @unilever.com emails to the company record
  • 03Account Executive is set as Company Owner — now visible on all associated records
  • 04A Deal is created and associated to Unilever — now visible from the company timeline
  • 05Company-level revenue is tracked: total closed revenue across all deals = $240,000
Case Study — Problem

A B2B consulting firm had all contacts in HubSpot but no Company records. They couldn't see which accounts had open deals, which clients had support tickets, or what their total revenue per account was. Sales and CS were constantly asking each other "are we working with this company?"

Admin Solution

  • ⚙️
    Enabled domain-based auto-association. Overnight, HubSpot linked 600+ contacts to company records automatically.
  • 📊
    Built a Company dashboard showing: total open deals per account, last activity date, MRR, number of contacts, and ticket count.
  • 👤
    Assigned a CSM as Company Owner for all active clients — now the CSM gets notified when a client submits a ticket or a deal changes stage.
  • Always populate the Domain field — it enables auto-association and company enrichment via HubSpot Insights
  • Use Company Type property to distinguish Customers vs Prospects vs Partners in reports
  • Set Company Owner deliberately — don't leave companies unowned. Owner = accountable team member.
  • Use the "Parent Company" association for subsidiaries and enterprise accounts with multiple entities
💼
Deals
Revenue opportunities moving through your sales pipeline
CRM ObjectAll PlansPipeline-Based
Overview
Properties
Example
Case Study
Admin Best Practices
Why It Exists

Deals answer the question: "What revenue opportunities are we actively working on, how much are they worth, and when will they close?" Every sales team needs to track this — and Deals are HubSpot's answer to that pipeline visibility problem.

The Pipeline System

Deals live inside Pipelines. A pipeline is a sequence of stages, each with a close probability percentage. You can create multiple pipelines for different sales motions (e.g. New Business vs Renewal vs Partnership).

Prospecting
10%
Discovery
25%
Proposal
50%
Negotiation
75%
Closed Won ✓
/
Closed Lost ✗
↔ Contacts↔ Companies↔ Line Items↔ Quotes↔ All Activities
PropertyTypePurpose
dealnameTextName of the deal — usually "Company + Product/Service"
amountNumberTotal deal value in currency
closedateDateExpected closing date — used in forecasting
dealstageDropdownCurrent pipeline stage
pipelineDropdownWhich pipeline this deal belongs to
hubspot_owner_idOwnerDeal owner — the sales rep responsible
deal_currency_codeDropdownCurrency for international deals
hs_deal_stage_probabilityNumberAuto-calculated win probability by stage
dealtypeDropdownNew Business, Existing Business, Renewal
descriptionText AreaNotes about the deal
closed_lost_reasonDropdownWhy the deal was lost — critical for sales analysis
hs_forecast_amountNumberManual forecast override — used in Sales Hub forecasting
num_associated_contactsNumberHow many contacts are linked to this deal
createdateDateWhen the deal was created
hs_date_entered_[stage]DateAuto-populated timestamp when deal entered each stage
hs_time_in_[stage]DurationAuto-calculated time spent in each stage
Digital Agency — Project Deal Flow
  • 01SDR qualifies a lead at "TechStart Inc." — creates a Deal: "TechStart – Brand Package | $12,000"
  • 02Deal enters "Discovery" stage. Close date: 45 days out. Owner = SDR.
  • 03After discovery call, deal moves to "Proposal." A Quote is created and attached.
  • 04Client negotiates price — deal moves to "Negotiation," amount updated to $10,500
  • 05Client signs → Deal moves to "Closed Won." Workflow fires: notify finance, create onboarding task, update contact lifecycle to Customer
Case Study — Problem

A SaaS startup's sales manager had no idea which deals were at risk. Deals sat in "Proposal" for 60+ days with no movement. Close dates were always in the past. The pipeline report was unreliable and leadership had no confidence in the forecast.

Admin Solution

  • ⚙️
    Built a workflow: if a deal stays in the same stage for more than 14 days without activity, notify the owner and create a follow-up task automatically.
  • 📋
    Made "Closed Lost Reason" a required field when moving to Closed Lost — instantly improved win/loss analysis data.
  • 📊
    Created a "Stale Deals" report: all deals with close date in the past and stage not = Closed Won/Lost. Manager reviews this every Monday.
  • 🚫
    Required the Amount field when a deal reaches the Proposal stage using a stage-entry workflow that blocks progression if amount is empty.
  • Create separate pipelines for different business lines (e.g. SMB vs Enterprise vs Partnerships)
  • Use required fields per stage — enforce data quality as deals progress
  • Always populate Closed Lost Reason — it's the most valuable data for sales coaching
  • Build a "Deal Velocity" report tracking average time-in-stage to identify bottlenecks
🎫
Tickets
Customer support and service requests — tracked from open to resolved
CRM ObjectService HubPipeline-Based
Overview
Properties
Example
Case Study
Admin Best Practices
Why It Exists

Tickets solve the customer service tracking problem: "When a customer has an issue, who owns it, what's the priority, and when was it resolved?" Without Tickets, support teams lose track of requests, customers repeat themselves, and resolution time is invisible.

Ticket Pipeline

Like Deals, Tickets move through a pipeline of stages: New → In Progress → Waiting on Contact → Waiting on Us → Closed. You can customize these stages based on your support process.

↔ Contacts↔ Companies↔ Conversations (inbox)
PropertyTypePurpose
subjectTextShort description of the issue
contentText AreaFull description of the problem
hs_pipelineDropdownWhich support pipeline
hs_pipeline_stageDropdownCurrent stage in the pipeline
hs_ticket_priorityDropdownLOW, MEDIUM, HIGH, URGENT
hs_ticket_categoryDropdownProduct Issue, Billing, General, Feature Request
hubspot_owner_idOwnerSupport agent assigned to this ticket
createdateDateWhen ticket was opened
hs_ticket_closed_dateDateWhen ticket was resolved
time_to_closeDurationAuto-calculated resolution time
hs_resolutionText AreaHow the issue was resolved — notes
source_typeDropdownEmail, Chat, Phone, Form — where ticket came from
SaaS Company — Customer Support Flow
  • 01Customer emails support@company.com about a login error
  • 02HubSpot inbox converts the email into a Ticket automatically — associated to the contact
  • 03Ticket is set to Priority: HIGH, Category: Product Issue
  • 04Agent responds via HubSpot — all replies logged on the ticket timeline
  • 05Issue resolved → ticket moved to "Closed." Time to close: 2.5 hours
  • 06CSAT survey sent automatically via workflow. Score recorded on ticket record.
Case Study — Problem

An e-commerce brand handled all support via Gmail. No tracking, no SLAs, no reporting. Tickets were lost in email threads. Management had no idea how fast issues were being resolved or which issues were most common.

  • ⚙️
    Connected Gmail to HubSpot Conversations inbox — every support email became a trackable Ticket automatically.
  • 📊
    Built a report: Average Time to Close by Category. Discovered "Billing" tickets took 3× longer than Product tickets — flagged to management.
  • 🚨
    Created a workflow: if ticket is open for 24+ hours with no reply, escalate to manager and change priority to URGENT.
  • Create separate ticket pipelines for different support channels (email, chat, phone)
  • Make Priority a required field — every ticket needs a severity level
  • Build SLA workflows — auto-escalate tickets that breach response time limits
  • Always associate tickets to both the Contact AND the Company — needed for account-level service history
📅
Marketing Events
Webinars, conferences, and events — with contact-level attendance tracking
CRM ObjectMarketing Hub
Overview
Properties
Case Study
Admin Best Practices
Why It Exists

Events are a major lead gen and engagement channel. Marketing Events let you connect tools like Zoom, GoToWebinar, or Eventbrite to HubSpot so attendance data flows directly onto contact records — enabling post-event automation and segmentation.

How It Works

When integrated with an event tool, HubSpot creates a Marketing Event record and tracks each contact's status: Registered, Attended, No-Showed, or Cancelled. This status is stored on the Contact record and can trigger workflows.

↔ Contacts (with status)← Zoom / GoToWebinar / Eventbrite
PropertyTypePurpose
hs_event_nameTextName of the event
hs_start_datetimeDate/TimeWhen the event begins
hs_end_datetimeDate/TimeWhen the event ends
hs_event_descriptionText AreaDescription of the event
hs_num_registeredNumberTotal registrations
hs_num_attendedNumberTotal who attended
hs_num_no_showsNumberTotal who registered but didn't attend
hs_external_event_idTextID from the external platform (Zoom, etc.)
Case Study

A B2B software company ran monthly webinars but had no way to follow up differently with attendees vs no-shows. Everyone got the same email sequence.

  • ⚙️
    Connected Zoom to HubSpot via Marketing Events integration. Every registrant and attendee automatically synced to HubSpot.
  • 📧
    Built two post-event workflows: Attendees → "Thank you + next steps" sequence. No-shows → "You missed it — here's the recording" sequence with re-engagement CTA.
  • 📊
    Result: 34% higher demo booking rate from attendees vs previous generic sequence.
  • Integrate your event platform (Zoom, GoToWebinar) for automatic contact status syncing
  • Build separate follow-up workflows for Attended vs No-Show contacts
  • Use Marketing Event data to update Lifecycle Stage — a webinar attendee who watches 80% is often MQL-ready
🔒
Appointments · Courses · Listings · Services
Industry-specific objects requiring activation — not active by default
Inactive by DefaultActivate to Use
ObjectIndustry Use CaseKey Benefit
AppointmentsService businesses, clinics, salons, consultantsTrack booked appointments with contacts, date/time, service type, and outcome. Enables scheduling + CRM in one place.
CoursesEdTech, training companies, coaching businessesTrack course enrollment, progress, and completion per contact. Associates to contacts like a product catalog for education.
ListingsReal estate agencies, property portalsCreate property listings as records — associate to contacts who inquired or are interested. Track showings and inquiries.
ServicesProfessional services firms, agenciesTrack individual service line items separate from products — useful for recurring service agreements and scope management.
Admin Caution

Only activate these objects if your business genuinely needs them. Activating unused objects clutters the CRM, confuses users, and adds navigation overhead. Activation is reversible but data cleanup can be time-consuming.

How to Activate

Settings → Objects → [Object Name] → Click "Activate Object." Once activated, it appears in the sidebar and can have properties, views, and workflows built on top of it.

🧩
Custom Objects
Build any record type your business needs — beyond HubSpot's standard objects
Enterprise OnlyCRM Object
Overview
Examples
Case Study
Admin Best Practices
Why It Exists

Every business has unique data. A logistics company tracks Shipments. A construction firm tracks Projects. A real estate business tracks Properties. Custom Objects let you model any of these as first-class CRM records with their own properties, associations, pipelines, and automation.

What You Can Do With Custom Objects

  • 🏗️
    Create any object with a custom name, icon, and description
  • 🔗
    Associate it to standard objects (Contacts, Companies, Deals, Tickets)
  • ⚙️
    Add custom properties of any type
  • 🔄
    Build workflows, reports, and lists based on the custom object
Business TypeCustom ObjectKey PropertiesAssociated To
Logistics companyShipmentTracking #, Origin, Destination, Status, ETAContact (sender), Company (client)
Construction firmProjectProject Name, Start Date, Budget, Status, PMCompany (client), Contact (stakeholder)
SaaS companySubscription PlanPlan Name, MRR, Contract Length, Renewal DateCompany, Contact, Deal
Real estate agencyProperty ListingAddress, Price, Bedrooms, Status, Listing DateContact (buyer/seller), Agent
Law firmCase / MatterCase #, Practice Area, Open Date, Assigned AttorneyContact (client), Company
Case Study

A B2B IT services company managed 200+ client projects. They used Deals for initial sale but had no way to track the ongoing project after sale — timelines, milestones, delivery status, and assigned engineers weren't in HubSpot at all. CS and delivery were working from spreadsheets.

  • 🧩
    Admin created a "Project" Custom Object with properties: Project Name, Start Date, End Date, Delivery Status, Assigned Engineer, Budget, Client Sign-Off Date.
  • 🔗
    Associated every Project to its parent Deal (the original sale) and the Company (the client).
  • 📊
    Built a Project Pipeline — stages: Kickoff → In Progress → Review → Delivered → Closed. Now leadership has real-time delivery visibility.
  • ⚙️
    Workflow: when Deal reaches "Closed Won," automatically create a Project record with kickoff date = today + 7 days. Assign to delivery team lead.
  • Design the schema on paper before building — define properties, associations, and use cases first
  • Only create Custom Objects when standard objects genuinely can't solve the problem
  • Custom Objects are created via API or Settings → Objects → Custom Objects (Enterprise)
  • This is a strong interview differentiator — being able to design and justify a custom object schema shows senior admin thinking
💰

Sales Objects

Revenue and billing records — products, proposals, invoices, payments, and subscriptions

Sales and commerce records used for products, quotes, invoices, payments, subscriptions, and billing adjustments.

📦
Line Items
Individual products or services attached to a Deal or Quote
Sales ObjectSales Hub
Overview
Properties
Case Study
Admin Best Practices
Why It Exists

A deal amount of "$10,000" tells you the total — but not what's included. Line Items break the deal into individual products and services, enabling accurate revenue recognition, product performance reporting, and standardized pricing via the Product Library.

Product Library Connection

Line Items are pulled from your Product Library (Sales → Products). When a rep adds a Line Item to a deal, they pick from pre-configured products with set prices, discounts, and billing terms. This ensures pricing consistency across your entire sales team.

→ Deals→ Quotes← Product Library
PropertyTypePurpose
nameTextProduct or service name
hs_product_idTextLinks to the Product Library record
priceNumberUnit price
quantityNumberNumber of units
amountNumberAuto-calculated: price × quantity
discountNumberDiscount applied — flat or percentage
hs_billing_start_delay_daysNumberWhen billing starts after creation (for subscriptions)
recurringbillingfrequencyDropdownMonthly, Quarterly, Annually, One-time
hs_term_in_monthsNumberContract term length in months
descriptionTextWhat's included in this line item
Case Study

A digital agency had no product library. Reps created deals with random amounts and made up pricing on the fly. Finance couldn't report on which services were most sold. Discounts were inconsistent — some clients got 30% off without approval.

  • 📋
    Admin built a Product Library with 12 standardized service SKUs — each with name, description, default price, and billing frequency.
  • 🚫
    Set a maximum discount rule: reps can discount up to 10% without approval. Above 10%, a workflow creates an approval task for the sales manager.
  • 📊
    Built a "Revenue by Product" report — now visible which services drive the most revenue and which are rarely sold.
  • Always build a Product Library before enabling Line Items — otherwise reps will enter free-text products with no consistency
  • Use recurring billing frequency for subscription products — this feeds into Subscription records
  • Build discount approval workflows — protect margin by controlling who can offer what discounts
📄
Quotes
Formal proposals with e-signature and payment links — sent directly to buyers
Sales ObjectSales Hub Starter+
Overview
Properties
Case Study
Admin Best Practices
Why It Exists

Quotes eliminate the "proposal chaos" problem — Word docs, PDF emails, inconsistent formatting, no tracking. A HubSpot Quote is a branded, trackable, signable proposal that a buyer can sign and pay from a single link. Everything is logged back on the Deal record.

Deal created
Quote created from deal
Link sent to buyer
Quote opened + signed
Deal = Closed Won
↔ Deals↔ Contacts→ Line Items→ Payments
PropertyTypePurpose
hs_titleTextQuote title shown to the buyer
hs_expiration_dateDateWhen the quote expires — creates urgency
hs_quote_amountNumberTotal amount including all line items
hs_quote_statusDropdownDraft, Pending Approval, Approved, Published, Closed, Rejected
hs_esign_enabledCheckboxWhether e-signature is enabled on this quote
hs_payment_enabledCheckboxWhether payment link is included
hs_quote_linkURLShareable URL for the buyer
hs_sender_company_nameTextYour company name on the quote
hs_pdf_download_linkURLDownloadable PDF version
hs_termsText AreaPayment terms and conditions text
Case Study

A SaaS sales team was sending proposals via Google Docs. They had no idea when clients opened them, couldn't track e-signatures, and deals stalled at proposal stage with no follow-up triggers.

  • 📄
    Moved all proposals to HubSpot Quotes — now every quote open, view, and signature is tracked and visible on the Deal record.
  • ⚙️
    Built workflow: when a Quote is viewed but not signed within 48 hours → create a task for the rep to follow up with a call.
  • Added Quote Approval flow — quotes over $5,000 require manager approval before being sent. This blocked under-discounting and protected margin.
  • 📊
    Result: Average deal close time dropped from 18 days to 11 days after implementing Quote tracking and automated follow-ups.
  • Always set an expiration date — creates urgency and prevents old quotes from being signed out of date
  • Enable quote approval workflows for deals above a certain threshold
  • Build a workflow that moves the Deal to "Closed Won" automatically when a Quote is signed
  • Customize the Quote template with your company branding — Settings → Sales → Quotes → Templates
🧾
Invoices
Payment requests sent to clients after agreements are reached
Sales ObjectRequires HubSpot Payments
Overview
Properties
Admin Best Practices
Why It Exists

Invoices close the loop between proposal and payment. A Quote says "here's what you'd pay" — an Invoice says "here's what you owe now." Keeping this inside HubSpot eliminates the need to jump to a separate invoicing tool (like FreshBooks or QuickBooks) for basic billing.

Quote signed
Invoice created
Invoice sent to client
Client pays
Payment record created
↔ Deals↔ Contacts→ Payments
PropertyTypePurpose
hs_invoice_statusDropdownDraft, Open, Paid, Void, Past Due
hs_numberTextAuto-generated invoice number (e.g. INV-0042)
hs_due_dateDateWhen payment is due
hs_invoice_dateDateDate invoice was issued
hs_amount_billedNumberTotal amount on the invoice
hs_amount_paidNumberAmount collected so far
hs_balance_dueNumberOutstanding balance (auto-calculated)
hs_payment_termsDropdownNet 7, Net 15, Net 30, Due on receipt
  • Use Invoices for clients on HubSpot Payments — avoids manual PDF billing workflows
  • Build a workflow: when Invoice status = "Past Due," send an automated payment reminder email
  • For complex billing, integrate with QuickBooks or Xero — HubSpot syncs Invoice data bidirectionally
💳
Payments
Captured payment records — money your business has received
Sales ObjectHubSpot Payments
Overview
Properties
Admin Best Practices
Why It Exists

Payment records give you actual collected revenue data inside HubSpot — not just committed revenue from Deals. This is the difference between "we closed a $10k deal" and "we've actually collected $8,000 of that $10,000."

A Payment record is created automatically when a client pays via a Quote payment link or HubSpot Invoice. It captures the transaction amount, method, date, and links back to the contact, deal, and invoice.

← Quote payment← Invoice payment↔ Contacts↔ Deals
PropertyTypePurpose
hs_payment_dateDateWhen payment was captured
hs_amountNumberAmount collected in this payment
hs_payment_method_typeDropdownCredit Card, ACH, Stripe, etc.
hs_payment_statusDropdownProcessing, Succeeded, Failed, Refunded
hs_payment_idTextUnique transaction identifier
hs_processing_feeNumberTransaction processing fee deducted
hs_net_amountNumberAmount after processing fees
  • Use Payment data in reports to track actual collected revenue vs committed revenue from deals
  • Build a workflow on Payment Status = "Failed" — notify the customer and rep immediately
  • Connect Stripe or your payment processor via integration for external payment sync
🔄
Subscriptions
Recurring billing relationships — MRR, renewal tracking, and plan management
Sales ObjectHubSpot PaymentsSaaS / Retainer
Overview
Properties
Case Study
Why It Exists

For SaaS, agencies, and subscription businesses, a one-time deal close is just the beginning. Subscriptions track the ongoing billing relationship — MRR per customer, renewal dates, plan upgrades, and churn risk — all inside HubSpot.

↔ Contacts↔ Companies← Line Items (recurring)
PropertyTypePurpose
hs_mrrNumberMonthly Recurring Revenue for this subscription
hs_arrNumberAnnual Recurring Revenue (MRR × 12)
hs_billing_periodDropdownMonthly, Quarterly, Annual
hs_next_payment_due_dateDateWhen the next payment is due
hs_statusDropdownActive, Past Due, Cancelled, Paused
hs_subscription_start_dateDateWhen the subscription began
hs_end_dateDateWhen the subscription ends (if fixed term)
hs_num_associated_line_itemsNumberHow many products are on this subscription
Case Study

A SaaS company had no visibility into renewal risk. Subscriptions were tracked in a spreadsheet. CSMs didn't know when accounts were due for renewal until 2 weeks before — too late for meaningful expansion conversations.

  • ⚙️
    Built workflow: 90 days before subscription end date, create a "Renewal" deal in the Renewal Pipeline. Assign to CSM owner.
  • 📊
    Built an MRR dashboard: Total MRR, MRR by plan tier, MRR at risk (subscriptions past due), and MRR up for renewal in the next 30/60/90 days.
  • 🚨
    Workflow: Subscription status changes to "Past Due" → immediate notification to CSM + automated payment retry email to customer.
↩️
Credit Memos
Refunds, billing adjustments, and credits applied to invoices
Sales ObjectHubSpot Payments
Overview
Properties
Why It Exists

Credit Memos handle the inevitable — a client was overcharged, a project was cancelled mid-way, or a product was returned. Instead of issuing a refund through a different system, Credit Memos track billing adjustments directly in HubSpot, tied to the original invoice and contact record.

↔ Invoices↔ Contacts↔ Companies
PropertyTypePurpose
hs_statusDropdownOpen, Applied, Voided
hs_credit_amountNumberTotal credit amount being issued
hs_remaining_creditNumberCredit balance not yet applied to an invoice
hs_currency_codeDropdownCurrency of the credit
hs_create_dateDateWhen the credit memo was issued
hs_memoTextReason for the credit memo — free text notes

Activity Objects

Logged touchpoints — interactions between your team and contacts that attach to any record

Timeline activities that show how your team communicates, follows up, schedules, documents, and tracks touchpoints.

What Makes Activities Different

Unlike CRM or Sales objects, Activities don't exist as standalone records with their own section. They are logged touchpoints — they attach to Contact, Company, Deal, or Ticket records and build the timeline of all interactions. Every activity can be associated to multiple record types at once.

📞
Calls
Phone call records — auto-logged via HubSpot Calling or manually entered
Activity ObjectAll Plans
Overview
Properties
Case Study
Why It Exists

Calls are the primary outreach activity for SDRs and sales reps. Logging calls ensures the team's outreach is visible to managers, enables activity-based reporting ("how many calls per deal?"), and keeps the contact timeline complete for anyone reviewing the record.

Auto vs Manual Logging

HubSpot Calling — built-in dialer that auto-logs every call with duration, recording (if enabled), and outcome. Manual — reps click "Log Activity → Call" on a contact record and fill in the details after an external call.

PropertyTypePurpose
hs_call_titleTextShort description or subject of the call
hs_call_bodyText AreaCall notes — what was discussed, next steps
hs_call_durationNumberDuration in milliseconds (auto-logged)
hs_call_statusDropdownCOMPLETED, BUSY, NO_ANSWER, CANCELED, LEFT_VOICEMAIL, CONNECTED
hs_call_directionDropdownINBOUND or OUTBOUND
hs_call_recording_urlURLLink to call recording (if enabled)
hs_timestampDate/TimeWhen the call occurred
hubspot_owner_idOwnerWhich rep made/took the call
Case Study

A sales manager suspected some reps weren't making enough calls. But without call logging enforcement, there was no data. The pipeline looked healthy but deals were stalling — and no one could explain why.

  • ⚙️
    Admin required reps to use HubSpot Calling — all calls auto-logged. Removed ability to manually close deals without logging a connected call.
  • 📊
    Built a "Rep Activity" dashboard: calls per rep per week, calls per deal, average call duration, left voicemail vs connected rates.
  • 🔍
    Discovered one rep had 40% of the pipeline but only 25% of the call volume — a coaching conversation happened the following week.
✉️
Emails
1:1 email interactions logged on contact timelines — not bulk marketing emails
Activity ObjectAll Plans
Overview
Properties
Why It Exists

Email Activity logs 1-to-1 sales emails on the contact record — so any team member can see every email conversation a rep has had with a prospect, without accessing their personal Gmail. It's the CRM email transparency layer.

Important Distinction

Email Activity = 1:1 emails sent from a rep's inbox (via Gmail/Outlook integration, or HubSpot Sales sequences). Marketing Emails = bulk emails sent via Marketing Hub campaigns. These are two completely different things in HubSpot.

PropertyTypePurpose
hs_email_subjectTextEmail subject line
hs_email_textText AreaEmail body content
hs_email_statusDropdownSENT, OPENED, REPLIED, BOUNCED, FAILED
hs_email_directionDropdownEMAIL (outbound) or INCOMING_EMAIL (reply received)
hs_email_open_countNumberHow many times the email was opened
hs_email_click_countNumberHow many times links were clicked
hs_timestampDate/TimeWhen the email was sent
hs_email_from_emailEmailSender's email address
hs_email_to_emailEmailRecipient's email address
📅
Meetings
Scheduled meetings logged via the HubSpot Meetings tool or manually
Activity ObjectAll Plans
Overview
Properties
Why It Exists

Meetings are critical milestone touchpoints in the sales process. When a discovery call or demo is booked, that's a major engagement signal. Logging it enables reporting on meeting volume per rep, meeting-to-deal conversion rates, and contact engagement scoring.

HubSpot Meetings Tool

The Meetings scheduling tool creates a booking page (like Calendly but inside HubSpot). When a contact books through it, a Meeting record is automatically created and associated to their Contact record — zero manual logging needed.

PropertyTypePurpose
hs_meeting_titleTextMeeting name or subject
hs_meeting_bodyText AreaMeeting notes and agenda
hs_meeting_start_timeDate/TimeWhen the meeting starts
hs_meeting_end_timeDate/TimeWhen the meeting ends
hs_meeting_outcomeDropdownSCHEDULED, COMPLETED, RESCHEDULED, NO_SHOW, CANCELLED
hs_meeting_locationTextPhysical location or video link
hs_meeting_external_urlURLZoom / Google Meet link
hubspot_owner_idOwnerRep hosting the meeting
📝
Notes
Free-text manual notes added to any record by any team member
Activity ObjectAll PlansAlways Manual
Overview
Properties
Why It Exists

Not everything that matters fits in a structured property. Notes are the free-text scratchpad on any record — a rep's observation after a call, a warning about a difficult contact, or context that helps the next person who picks up the account.

Best Uses for Notes

  • 📌
    Capture context that doesn't have a property: "Spoke to CFO — she's the real decision maker, not the VP of Sales"
  • ⚠️
    Flag important details: "This contact prefers text over email — call them before 2pm"
  • 📋
    Document post-meeting summaries that get pinned to the record for the whole team to see
PropertyTypePurpose
hs_note_bodyText AreaThe note content — supports rich text formatting
hs_timestampDate/TimeWhen the note was logged
hubspot_owner_idOwnerWho wrote the note
hs_attachment_idsTextIDs of any files attached to the note
Tasks
To-dos assigned to reps — manually created or auto-generated by workflows
Activity ObjectAll Plans
Overview
Properties
Case Study
Why It Exists

Tasks are the action layer of HubSpot. They answer "what needs to happen next, and who is responsible?" A task is always tied to a rep (owner), a due date, and a record. Critically, tasks can be auto-generated by workflows — meaning your CRM can proactively remind reps to take action without manual setup.

Auto-Created Tasks via Workflows

This is where Tasks become powerful for admins: create a task workflow that fires when a deal goes 10 days without activity → Task auto-created: "Follow up with [Contact Name] re: [Deal Name]" → Assigned to deal owner → Due tomorrow.

PropertyTypePurpose
hs_task_subjectTextTask title — what needs to be done
hs_task_bodyText AreaAdditional instructions or context for the task
hs_task_statusDropdownNOT_STARTED, IN_PROGRESS, COMPLETED, DEFERRED
hs_task_priorityDropdownLOW, MEDIUM, HIGH
hs_task_typeDropdownCALL, EMAIL, TODO — controls which activity type it triggers
hs_timestampDate/TimeDue date and time for the task
hubspot_owner_idOwnerWhich rep is responsible for this task
hs_task_completion_dateDateWhen the task was marked complete
Case Study

An SDR team relied on reps manually creating follow-up tasks. Predictably, many were forgotten. Deals sat idle. Leads went cold. The manager had to ask every rep "did you follow up with X?" in every 1:1.

  • ⚙️
    Admin built a workflow: 3 days after a Contact is created as a Lead with no activity logged → auto-create Task: "First outreach to [Contact Name]" assigned to owner. Due in 1 day.
  • ⚙️
    Second workflow: Deal in pipeline with no activity for 7 days → Task: "Check in with [Company Name] — deal going stale." Priority: HIGH.
  • 📊
    Built a Task Completion Rate report — which reps complete their tasks on time vs let them expire. Used in weekly coaching.
💬
Communications
Chat, WhatsApp, SMS, and other messaging channel interactions
Activity ObjectConversations Inbox
Overview
Properties
Why It Exists

Modern buyers communicate across channels — chat, WhatsApp, SMS, and social messaging. Communications logs every one of these channel interactions on the contact record, just like a call or email. This gives you a unified conversation history regardless of which channel the customer prefers.

Channels That Log as Communications

💬 Live Chat (HubSpot chatbot) 📱 WhatsApp Business 💬 Facebook Messenger 📲 SMS (via integrations)
PropertyTypePurpose
hs_communication_bodyText AreaThe message content of the communication
hs_communication_channel_typeDropdownLIVE_CHAT, WHATS_APP, FACEBOOK_MESSENGER, SMS
hs_timestampDate/TimeWhen the message was sent/received
hubspot_owner_idOwnerAgent or rep who handled the conversation
hs_communication_logged_fromDropdownWhich platform the message came from
📬
Postal Mail
Physical mail and direct mail interactions logged on contact records
Activity ObjectManual or Integration
Overview
Properties
Why It Exists

Some businesses still use direct mail as a touchpoint — handwritten notes, gift boxes, physical proposals, or regulatory documents. Postal Mail lets you log these as activities on a contact record so your CRM timeline reflects every channel of communication, not just digital ones.

This is one of the less commonly used activity objects, but for industries like financial services, legal, healthcare, and luxury goods where physical mail is still prevalent — it's an important part of the complete contact timeline.

↔ Contacts↔ Companies
PropertyTypePurpose
hs_postal_mail_bodyText AreaDescription of what was sent or received
hs_timestampDate/TimeDate the mail was sent or received
hubspot_owner_idOwnerWho logged the mail activity
hs_attachment_idsTextScanned copies or attachments