Sample report: Northwind Advisory is a made-up company and every number here is invented. It shows what a real report looks like.

Jon Martin
Field report
Portal Audit
Portal 1000001
Status: complete

Northwind Advisory (sample data)HubSpot portal 1000001

An audit of how the HubSpot account Northwind Advisory (sample data) is configured: data model, data quality, people and seats, automation and marketing assets and security activity. Prepared by Portal Audit.

AccountNorthwind Advisory (sample data)
Portal ID1000001
DateOctober 1, 2026
Prepared byPortal Audit
AuthorshipDrafted with AI and checked against your audit data by software.
Account typeStandard
Filed underHubSpot portal audit

Executive summary

Scores, the five issues to handle first, seats, and the next step. Each issue is written once on its card.

What’s working

  • No duplicate property labels
  • Records of deactivated users are reassigned
  • Lead capture uses HubSpot forms that are maintained
Overall score84 / 100Grade B
AI readiness (our estimate)58 / 100Estimate, not HubSpot’s score

Issues

Seats

3 of 14 users have not logged in during the review window, and 2 of them hold a paid seat. Check whether those seats still need to be paid for.

Your next step

Start with F-05 Custom properties. See the roadmap for the order. Nothing changes in your portal unless you approve it.

  • Add cost inputs if you want a dollar range on the issue cards. Every question is a range, and N/A shows no dollar figure.
  • Share the user survey with the people who use HubSpot. Answers are anonymous.

Roadmap

Three phases. Each row is one issue card, with the owner, the effort, and whether Fixer can do the work.

Phase 1 — Fixer cleanup

Needs your approval

Portal Fixer is part of the Portal Audit app, on the same install. Fixes run only after a person approves them. Nothing changes in your portal unless you approve it.

Phase 2 — Guided fixes

Needs your approval

Approve these in the Fixer before anything runs. Nothing changes in your portal unless you approve it.

Phase 3 — Automation and process

Needs your approval
  • F-09 Workflows
    F-09. Owner: RevOps. Effort: More than a day of work. Fixer: No.

Plan these after the cleanup.

Issues

F-03 Owners and key fields

RevOps · A few hours of work · Fixer: Yes

Evidence

Low fill rates on key deals fields DQ-001

  • deals (610 records): amount 55% (target 80%, 274 missing); closedate 50% (target 90%, 305 missing); hubspot_owner_id 75% (target 80%, 152 missing)

Cost range $4,110,000–$13,700,000. 274 deals missing amount × client-provided average deal size $15,000–$50,000 = $4,110,000–$13,700,000. This is pipeline value on deals missing amount, not closed-lost revenue. Deals missing amount: 274 (audit count); Average deal size: $15,000–$50,000 (client-provided)

Low fill rates on key tickets fields DQ-001

  • tickets (1240 records): hubspot_owner_id 30% (target 80%, 868 missing)

Standard

  • Every record has an owner BP-DQ-02 fail
  • Deals carry amount, close date, company and contact BP-DQ-03 partial
  • Service tickets are owned and moved through a pipeline BP-SP-04 fail

Why it matters Reports, segments, and assignment that depend on these fields are working from a partial picture.

Fix steps

  1. CRM → the object named above (Contacts, Companies, Deals, or Tickets). If More is in the top bar, open it first. Filter to records missing the field.
  2. RevOps backfills the missing values, then requires the field on the form or on the pipeline stage that creates the record. Stage requirements are under Settings → Data Management → Objects → Pipelines, on that stage.

Who does this: RevOps.

Owner: RevOps. Effort: A few hours of work. Fixer: Yes.

Related: DQ-001 BP-DQ-02 BP-DQ-03 BP-SP-04 PLAN-02 PLAN-04 PLAN-11

F-04 Forms and lead capture

RevOps · A few hours of work · Fixer: No
Forms1
HubSpot0
Captured0
No lifecycle—
Notify nobody—
HubSpot forms with 0 fields0
Near-duplicate names0

HubSpot forms

No HubSpot forms in this report.

A captured form’s updated date is the form definition date. Submission counts were not assessed, so an older definition date does not show whether the form still receives submissions. See Method.

The form register is in forms.csv, next to this report.

Owner: RevOps. Effort: A few hours of work. Fixer: No.

F-05 Custom properties

RevOps · Under an hour of work · Fixer: Partly

Evidence

Custom properties without descriptions DM-001

  • 4 of 8 custom properties (50%) have no description
  • By object: contacts: 4/8

Custom properties in HubSpot's default property groups DM-003

  • 2 custom properties sit in default groups
  • contacts: 2 in contactinformation

Unused custom properties DQ-002

  • 5 of 10 checked custom properties have no value on any record (50%)
  • contacts: 5 (a, b, c, d, e)

Cost range $9,360–$97,500. Client-provided: 6–15 people × 2–5 hours per week × $75–$125/hour × 52 weeks = $46,800–$487,500 per year of avoidable HubSpot work. This finding is 1 of 5 open time-related findings. An even share, which is not a measured split of hours, is $9,360–$97,500. People doing the work: 6–15 (client-provided); Hours per person per week: 2–5 hours (client-provided); Loaded hourly cost: $75–$125 (client-provided); Open time-related findings: 5 (audit count)

Custom objects in use DM-006

  • 1 custom object(s): widgets

Custom objects defined but barely used GAP-02

Has 1 custom object(s) defined

Uses widgets: 2 records

What it means Records on each custom object. Fires when any defined object has fewer than 10 records.

Next step Confirm which process or integration should populate each object. Finish it, or retire the object.

What we measured: Records on each custom object. Fires when any defined object has fewer than 10 records.

Examples: widgets.

Where to check in HubSpot: Custom objects. https://knowledge.hubspot.com/object-settings/create-custom-objects

Improvement plan: PLAN-06.

Custom fields built but never filled GAP-03

Has 10 custom properties checked

Uses 5 have no value on any record (50%)

What it means Custom properties with no value on any record, divided by custom properties checked. Fires when that share is at least 25%.

Next step Archive fields nobody fills. For the ones that matter, add them to forms, record layouts, or the integration that should write them.

What we measured: Custom properties with no value on any record, divided by custom properties checked. Fires when that share is at least 25%.

Examples: a; b; c; d; e.

Where to check in HubSpot: Property settings. https://knowledge.hubspot.com/properties/create-and-edit-properties

Improvement plan: PLAN-07. Question: Q-01, Q-02, Q-03, Q-04, Q-05.

Empty custom properties

ObjectLabelInternal nameWhere
contactsaaSee F-05
contactsbbSee F-05
contactsccSee F-05
contactsddSee F-05
contactseeSee F-05

Standard

  • Every custom property has a description BP-DM-01 partial
  • Custom properties live in named custom groups BP-DM-02 partial
  • Custom objects hold real data BP-DM-04 fail
  • Unused custom properties are archived BP-DQ-05 fail

Why it matters A custom field with no description gets reused for a second meaning, and the two uses overwrite each other. Custom fields left in HubSpot’s default groups are hard to find, and they sit next to fields the team did not create. Empty custom fields still show up in forms, views, and the property picker, and they count toward the property limit. A custom object with no written owner is easy to break the next time someone edits its properties or associations.

Fix steps

  1. Settings → Properties. Select the object, open each custom property in the counts above, and open the Documentation tab.
  2. RevOps writes one line: what the field means, who owns it, and which process writes it.
  3. Settings → Properties. Select the object and open each custom property in the counts above.
  4. On the Details tab, RevOps moves the field out of the default group into a group named for the team or the process.
  5. Settings → Properties. Select the object and open each empty custom property named above.
  6. RevOps asks the owner whether it is still needed, and archives the ones that are not. Archived properties can be restored for 90 days.
  7. Data Management → Data Model. If More is in the top bar, open it first. Open each custom object named above.
  8. RevOps writes the purpose, the owner, and which integration creates the records.

Who does this: RevOps.

Questions

  • Q-01 Is the contacts property "a" (a) still needed, or should it be archived?
  • Q-02 Is the contacts property "b" (b) still needed, or should it be archived?
  • Q-03 Is the contacts property "c" (c) still needed, or should it be archived?
  • Q-04 Is the contacts property "d" (d) still needed, or should it be archived?
  • Q-05 Is the contacts property "e" (e) still needed, or should it be archived?

Owner: RevOps. Effort: Under an hour of work. Fixer: Partly.

Related: DM-001 DM-003 DQ-002 DM-006 GAP-02 GAP-03 BP-DM-01 BP-DM-02 BP-DM-04 BP-DQ-05 PLAN-06 PLAN-07 PLAN-13 PLAN-14 Q-01 Q-02 Q-03 Q-04 Q-05

F-07 Legacy apps and keys

Super Admin · Under an hour of work · Fixer: No

Evidence

Integrations installed in the review window INT-004

  • 2 integration install event(s) in the last 90 days

Standard

  • Connected apps are reviewed BP-GOV-07 partial

Why it matters An app installed in the review window needs an owner and a check that its access matches the job.

Fix steps

  1. Settings → Integrations → Connected Apps. Open each install from the review window. The count is above.
  2. The Super Admin confirms the app is approved and has an owner. This is a review, not a fail.

Who does this: Super Admin.

Owner: Super Admin. Effort: Under an hour of work. Fixer: No.

Related: INT-004 BP-GOV-07 PLAN-09

F-08 Logins and access

Super Admin · A few hours of work · Fixer: No

Evidence

Too many super admins GOV-003

  • 5 of 14 users (35.7%) are super admins. Allowed for 14 users: 2.

No permission sets (roles) in use GOV-002

  • 0 permission sets; 9 non-admin user(s) have individually configured permissions

Failed logins in the review window GOV-005

  • 35 of 940 login attempts failed in the last 90 days (3.7%)
  • Failed logins by country: US: 28, RO: 7

Users with no login in the review window GOV-006

  • 3 of 14 users have no login in the last 90 days
  • 2 on paid seats

Cost range $9,360–$97,500. Client-provided: 6–15 people × 2–5 hours per week × $75–$125/hour × 52 weeks = $46,800–$487,500 per year of avoidable HubSpot work. This finding is 1 of 5 open time-related findings. An even share, which is not a measured split of hours, is $9,360–$97,500. People doing the work: 6–15 (client-provided); Hours per person per week: 2–5 hours (client-provided); Loaded hourly cost: $75–$125 (client-provided); Open time-related findings: 5 (audit count)

Paid seats with no logins GAP-04

Has 2 user(s) on paid seats

Uses no login in 90 days

What it means Users on a paid hub seat whose id is absent from logins in the last 90 days. Names and email addresses are not listed.

Next step Reassign or remove paid seats from users who are not logging in.

What we measured: Users on a paid hub seat whose id is absent from logins in the last 90 days. Names and email addresses are not listed.

Examples: service-professional; sales-enterprise.

Where to check in HubSpot: Account name, then Account & Billing, then Seats. Login history is in account activity: https://knowledge.hubspot.com/account-management/view-and-export-account-activity-history https://knowledge.hubspot.com/account/manage-your-hubspot-subscription

Improvement plan: PLAN-03.

Super admins

Allowed for 14 users: 2

RoleCountWhere
Super admin5See F-08

Standard

  • Super admins within 2 or 10% of users BP-GOV-01 fail
  • Non-admin users get access through permission sets BP-GOV-02 fail
  • Idle users are removed and seats reclaimed BP-GOV-05 fail

Why it matters Each extra super admin can export the portal, install apps, and change security. Access set one person at a time is hard to review, and it drifts from the job the person actually does. A run of failed logins is either someone locked out or someone trying passwords that are not theirs. A paid seat with no login in the review window is a cost, and an idle login is an open door.

Fix steps

  1. Settings → Users & Teams. Compare the super admin count above with the allowance in that same line.
  2. The Super Admin moves people who do not need full access onto a permission set.
  3. Settings → Users & Teams → Permission Sets. The count of people without a set is above.
  4. The Super Admin creates a permission set per job and assigns it to each non-admin user.
  5. Settings → Account Management → Audit Logs → Login History. Filter to failed logins and read the countries in the counts above.
  6. The Super Admin reviews the failures with the people who hit them, and requires two-factor authentication or single sign-on under Settings → Account Management → Security.
  7. Settings → Users & Teams. Match the users in the counts above to a current job.
  8. The Super Admin deactivates anyone who has left, and reassigns their records first.

Keep super admins to 2 or 10% of users, whichever is higher; give others a permission set. Super admins can export all data, install apps and change security settings.

Who does this: Super Admin.

Owner: Super Admin. Effort: A few hours of work. Fixer: No.

Related: GOV-003 GOV-002 GOV-005 GOV-006 GAP-04 BP-GOV-01 BP-GOV-02 BP-GOV-05 PLAN-01 PLAN-03 PLAN-05

F-09 Workflows

RevOps · More than a day of work · Fixer: No

Evidence

Inactive workflows AUTO-001

  • 7 of 24 workflows are off (29.2%)
  • Off: "Old webinar follow-up", "Q2 2024 promo", "Lead rotation (test)", "Renewal reminder v1", "Onboarding nurture (copy)", "Newsletter welcome" (+1 more)

Cost range $9,360–$97,500. Client-provided: 6–15 people × 2–5 hours per week × $75–$125/hour × 52 weeks = $46,800–$487,500 per year of avoidable HubSpot work. This finding is 1 of 5 open time-related findings. An even share, which is not a measured split of hours, is $9,360–$97,500. People doing the work: 6–15 (client-provided); Hours per person per week: 2–5 hours (client-provided); Loaded hourly cost: $75–$125 (client-provided); Open time-related findings: 5 (audit count)

Disabled workflows

WorkflowWhere
Old webinar follow-upSee F-09
Q2 2024 promoSee F-09
Lead rotation (test)See F-09
Renewal reminder v1See F-09
Onboarding nurture (copy)See F-09
Newsletter welcomeSee F-09
Trial expiry alertSee F-09

Standard

  • Workflows that are off are cleaned up BP-AUTO-01 partial

Why it matters Workflows that are off are either a process that stopped or a process someone still expects to run.

Fix steps

  1. Automation → Workflows. If More is in the top bar, open it first. Filter to Off, or open the Unused tab. The names and counts are above.
  2. RevOps turns back on the ones that should run, and deletes the rest after saving any logic worth keeping. Deleted workflows can be restored for 90 days.

Who does this: RevOps.

Questions

  • Q-06 Should the workflow "Old webinar follow-up" be turned on or deleted?
  • Q-07 Should the workflow "Q2 2024 promo" be turned on or deleted?
  • Q-08 Should the workflow "Lead rotation (test)" be turned on or deleted?

Owner: RevOps. Effort: More than a day of work. Fixer: No.

Related: AUTO-001 BP-AUTO-01 PLAN-10 Q-06 Q-07 Q-08

F-10 Lists

RevOps · More than a day of work · Fixer: No

Evidence

Stale lists (segments) AUTO-003

  • 1 of 4 lists have had no update or membership change in 180+ days
  • 1 of those are not used by any workflow, email or other asset

Cost range $9,360–$97,500. Client-provided: 6–15 people × 2–5 hours per week × $75–$125/hour × 52 weeks = $46,800–$487,500 per year of avoidable HubSpot work. This finding is 1 of 5 open time-related findings. An even share, which is not a measured split of hours, is $9,360–$97,500. People doing the work: 6–15 (client-provided); Hours per person per week: 2–5 hours (client-provided); Loaded hourly cost: $75–$125 (client-provided); Open time-related findings: 5 (audit count)

Empty lists AUTO-004

  • 1 of 4 lists have 0 members

Cost range $9,360–$97,500. Client-provided: 6–15 people × 2–5 hours per week × $75–$125/hour × 52 weeks = $46,800–$487,500 per year of avoidable HubSpot work. This finding is 1 of 5 open time-related findings. An even share, which is not a measured split of hours, is $9,360–$97,500. People doing the work: 6–15 (client-provided); Hours per person per week: 2–5 hours (client-provided); Loaded hourly cost: $75–$125 (client-provided); Open time-related findings: 5 (audit count)

Lists built but stale or empty GAP-01

Has 4 lists

Uses 1 stale, 1 empty, 2 unreferenced

What it means Stale lists plus empty lists, divided by all lists. Fires when that share is at least 30%.

Next step Delete unreferenced stale or empty lists, and fix filters on active lists that should have members.

What we measured: Stale lists plus empty lists, divided by all lists. Fires when that share is at least 30%.

Where to check in HubSpot: Segments (lists). https://knowledge.hubspot.com/segments/create-active-or-static-lists

Improvement plan: PLAN-12.

Standard

  • Lists (segments) are maintained BP-AUTO-03 fail

Why it matters Segments that have not changed, and that nothing uses, make the segment library harder to trust. A segment with no members reaches nobody, including any email that still points at it.

Fix steps

  1. CRM → Segments. If More is in the top bar, open it first. Sort by last updated. The stale count is above.
  2. RevOps deletes the ones nothing references and puts the rest in folders by owner.
  3. CRM → Segments. If More is in the top bar, open it first. Open each empty segment. The count is above.
  4. RevOps fixes the filters or deletes the segment after checking that no email uses it.

Who does this: RevOps.

Owner: RevOps. Effort: More than a day of work. Fixer: No.

Related: AUTO-003 AUTO-004 GAP-01 BP-AUTO-03 PLAN-12

F-16 Teams

RevOps · A few hours of work · Fixer: No

Standard

  • Teams mirror the organisation BP-GOV-03 partial

Owner: RevOps. Effort: A few hours of work. Fixer: No.

Related: BP-GOV-03 PLAN-08

Usage gaps

4 places where the portal has a capability that is not being used.

Hub tiers are inferred from user seat names. Partner seats are partner or agency access, not a paid hub seat.

Not assessed: Product library use on quotes and line items (quotes or line item counts are not in this report)

Not assessed: Sequences (not assessed: the optional sequences permission was not granted, so the sequence count was not read)

Not assessed: Marketing contacts (limits module not available)

Not assessed: Form submission counts for captured (non-HubSpot) forms are not assessed. The forms API returns the form name, type, and dates, not a submission total (https://developers.hubspot.com/docs/api-reference/2026-09-beta/marketing/forms/get-form). The submissions endpoint returns each submission's fields, which this audit does not read (https://developers.hubspot.com/docs/api-reference/legacy/marketing/forms/v1/get-form-integrations-v1-submissions-forms-form_guid). An older analytics report can return a submissions total (https://developers.hubspot.com/docs/api-reference/legacy/reporting/reports/get-analytics-v2-reports-object_type-time_period), but it is not the forms permission, and the published schema does not say the rows are captured forms.

Not assessed: Sequences and custom reports stay not assessed unless their reads succeed. A readable hub with no matching paid seat is GOV-010 (advisory). Seat names still do not list the subscription.

Not assessed: Seat-based gaps (no hub seat names found on users)

Lists built but stale or empty GAP-01

See F-10 Lists.

AI readiness (Context Home)

How ready this portal’s data is for HubSpot’s AI (Breeze), scored from the four inputs HubSpot names for high-quality context: actively populated CRM fields, logged activity, connected integrations and configured team settings. Estimate, not HubSpot’s score. Open issues are written once on the issue cards.

Our estimate58/100Estimate, not HubSpot’s score · developing
HubSpot Context Home score—Not entered (no API); enter it by hand

HubSpot’s own Context Home completeness score has not been entered. Read it in HubSpot (Agents › Agent Hub › Context) and enter it to see the two side by side.

Sub-scores and evidence

Input (HubSpot’s wording)Sub-scoreConfidenceEvidence (source)
Actively populated CRM fields
Mean fill rate of the audit’s key fields on contacts, companies, deals and tickets (80%), plus the share of custom properties that hold any value (20%). Deal fill rates cover open deals and deals closed won or lost in the last 12 months, weighted by stage when pipeline probabilities are known.
71high
  • Mean fill rate across 8 key fields: 76%. audit:dataQuality.fillRates
  • Lowest: tickets hubspot_owner_id 30%; deals closedate 50%; deals amount 55%. audit:dataQuality.fillRates
  • 5 of 10 custom properties hold a value on at least one record (50%). audit:dataQuality.customProperties
  • Related findings: DQ-001, DQ-002. DQ-001

Limits: Key fields are the audit’s list, not HubSpot’s; HubSpot does not publish which fields its score reads. Deal fill rates cover open deals and deals closed won or lost in the last 12 months, weighted by stage when pipeline probabilities are known. Deal activity is open deals only.

Logged activity
Share of contacts, companies and open deals with a logged activity (Last activity date) in the last 90 days (70%) and ever (30%). Contacts and companies use a lifecycle-stage weighted recent rate when scored stages cover at least 80% of eligible records (total minus Other and blank). Otherwise the flat recent rate is used. Deal activity is open deals only. Targets are this audit's expectations, not a HubSpot setting.
51medium
  • contacts: 11500 of 18400 (63%) have a logged activity; 5200 (28%) in the last 90 days. audit:dataQuality.activity
  • companies: 1900 of 2650 (72%) have a logged activity; 1100 (42%) in the last 90 days. audit:dataQuality.activity
  • deals: 540 of 610 (89%) have a logged activity; 330 (54%) in the last 90 days. audit:dataQuality.activity

Limits: Uses "Last activity date" (notes_last_updated); activities logged only on tickets or custom objects are not counted. Email/calendar sync status per user is not readable via the API. Stage targets are this audit's expectations, not a HubSpot setting. A renamed stage is scored by its internal value.

Connected integrations
Points for each kind of evidence: integration installs in the security log (25, or 35 for 5+), integrations identified by their property groups (20, +5 per extra app up to 30), private-app/API use (10), workflow actions from apps, webhooks or custom code (5). Capped at 80 because the API cannot list connected apps.
25low
  • 2 integration install and 0 uninstall events in the last 90 days. audit:security.integrationEvents
  • Related findings: INT-004. INT-004

Limits: HubSpot’s API returns install/uninstall events but not the list of connected apps, so app names come only from property groups; install events also count re-installs (including this audit app). Inbox, calendar and Slack connections are not visible to the audit.

Configured team settings
Equal parts: teams exist; active owners on a team; users with a role/permission set; super admins ≤25% of users; no active owners tied to deactivated users.
83medium
  • 2 teams configured. audit:usersAndTeams.users
  • 3 of 8 active owners have no team. audit:owners
  • 0 active owners belong to deactivated users. audit:owners
  • 4 of 14 users have no role (permission set); 0 roles defined. audit:usersAndTeams.users
  • 5 of 14 users are super admins (36%). audit:usersAndTeams.users
  • Related findings: GOV-003, GOV-002. GOV-003

Limits: Per-user Context Home settings (user profile, email personality) are not readable via the API.

Weighted mean of the four inputs HubSpot names for high-quality context (equal weights). Bands: 0-39 low, 40-69 developing, 70-100 strong. HubSpot has no public API for Context Home or its score (developer changelog checked 2026-10-02).

Sources: HubSpot: Context Home product page · HubSpot Fall 2026 Spotlight (Context Home completeness score) · HubSpot KB: Manage your Breeze context (updated Sep 16, 2026) · HubSpot developer changelog (no Context Home API as of 2026-10-02)

Scorecard

Appendix A. Counts and module detail. The form, workflow, and owner registers are CSV files next to this report.

84 / 100
Grade · B

Overall configuration score across 5 assessed categories, 22 rules evaluated. Lowest: Governance and security (60).

CategoryScoreCriticalHighMediumLow
Data model90 / 100··1·
Data quality88 / 100···3
Governance and security60 / 100·12·
Automation88 / 100···3
Integrations100 / 100····
Limitsnot assessed····
Status · ok · 0.0 s

Account

Account typeStandard
Data hosting—
Currency—
Time zoneUS/Eastern
Status · ok · 0.0 s

Record counts

Records counted22,902
Object types5
Largest objectContacts18,400 records · 80% of total
ObjectRecordsShare
Contacts18,40080%
Companies2,65012%
Deals6103%
Tickets1,2405%
Widgets20%
Status · ok · 0.0 s

Properties

Properties01 objects
Custom8— of all properties
Custom, no description450% of custom
Duplicate custom labels0
ObjectTotalHubSpotCustomNo descriptionHiddenCalculatedDup. labels
Contacts——84———
Status · ok · 0.0 s

Data quality

Key fields checked83 objects
Below target450% of fields
Unused custom properties550% of 10 custom
Search calls10 / —No checks skipped

Custom properties

10
ObjectCustomEmptyNo description
Contacts1050

Lowest key-field fill rates

8
ObjectFieldFill rate
Ticketshubspot_owner_id30%
Dealsclosedate50%
Dealsamount55%
Dealshubspot_owner_id75%
Contactsemail98%
Contactshubspot_owner_id100%
Contactslifecyclestage100%
Ticketshs_pipeline_stage100%

Scores use only the key fields. The full list, one row per property, is in properties.csv.

t · ok · 0.0 st · ok · 0.0 s

People and seats

Users14
Super admins536% of users. Allowed for 14 users: 2
Active owners81 archived
Teams · roles2 · 0
MeasureValue
Active owners without a team3
Active owners linked to a deactivated user0
Users without a team9
Non-admin users without a role4
Empty teams0

9 owners are in owners.csv, next to this report. This section keeps the counts.

Status · ok · 0.0 s

Custom objects

Custom objects1
Properties on custom objects0
Association types0
ObjectType IDPrimary displayRequiredPropertiesAssociationsCreated
Widgets
widgets
2-1—————
Status · ok · 0.0 s

Workflows

Workflows24
On17
Off7
Webhook actions0
Custom code actions0

24 workflows are in workflows.csv, next to this report. See F-09 Workflows.

Status · ok · 0.0 s

Lists (segments)

Lists4
Empty1
Not referenced2by workflows, emails or other assets
Stale (180+ days)11 also unreferenced
Status · ok · 0.0 s

Forms

Forms1
Archived—
Definition older than 365 days0
Form typeCountShare
Hubspot1100%

A captured form’s updated date is the form definition date. Submission counts were not assessed, so an older definition date does not show whether the form still receives submissions. See Method. See F-04 Forms and lead capture. The form register is in forms.csv, next to this report.

Status · ok · 0.0 s

Marketing emails

Emails1
Published1
Drafts0
Transactional—
A/B tests—
TypeCountShare
Batch email1100%

Status · ok · 0.0 s

Security and account activity

Activity over the last 90 days. Counts only: no IP addresses or user details are shown.

Logins94011 users
Failed logins354% of attempts
Security events5
Integration installs20 uninstalls
Critical actions—
Failed logins by countryCountShare
US2880%
RO720%

Security activity by type

0 types

What users would skip

3 anonymous answers. No names and no emails are stored. This section is not part of the score.

Survey link for HubSpot users Anonymous. No name and no email. This page never changes anything in your portal.

What they would skip

  • Updating deal stages by hand
  • Rebuilding the same list every Monday

Where the time goes

  • Deals and pipeline updates: 1
  • Lists and segments: 1
  • Reports and dashboards: 1

How often messy data slows them down

  • Weekly: 2
  • Monthly: 1

Want it taken off their plate

  • N/A / not sure: 1
  • Some of it: 1
  • Yes: 1

Best practices

37 HubSpot best practices checked against this portal. The failing and partial ones are on their issue cards.

Pass8
Partial6
Fail8
Not applicable / not assessed1 / 14
PracticeStatusCard
Lists (segments) are maintained BP-AUTO-03failF-10
Custom objects hold real data BP-DM-04failF-05
Every record has an owner BP-DQ-02failF-03
Unused custom properties are archived BP-DQ-05failF-05
Super admins within 2 or 10% of users BP-GOV-01failF-08
Non-admin users get access through permission sets BP-GOV-02failF-08
Idle users are removed and seats reclaimed BP-GOV-05failF-08
Service tickets are owned and moved through a pipeline BP-SP-04failF-03
Workflows that are off are cleaned up BP-AUTO-01partialF-09
Every custom property has a description BP-DM-01partialF-05
Custom properties live in named custom groups BP-DM-02partialF-05
Deals carry amount, close date, company and contact BP-DQ-03partialF-03
Teams mirror the organisation BP-GOV-03partialF-16
Connected apps are reviewed BP-GOV-07partialF-07
No duplicate property labels BP-DM-03passF-05
Contacts have email, name and lifecycle stage BP-DQ-01passF-03
Login and security activity is reviewed BP-GOV-04passF-08
Records of deactivated users are reassigned BP-GOV-06passF-08
New integrations use service keys or project apps, not legacy keys BP-INT-04passF-07
Lead capture uses HubSpot forms that are maintained BP-MA-01passF-04
Marketing emails nurture contacts BP-MA-02passF-11
Lifecycle stage is set on every contact BP-MA-03passF-03
Sensitive data is marked and protected BP-GOV-08not applicable—
No empty or unfinished workflows BP-AUTO-02not assessedF-09
Ownership is assigned automatically BP-AUTO-04not assessedF-03
Association labels describe key relationships BP-DM-05not assessed—
Companies have a domain and industry BP-DQ-04not assessedF-03
Validation rules guard key properties BP-DQ-06not assessedF-06
No legacy private apps in use BP-INT-01not assessedF-07
Custom code uses date-versioned APIs and current credentials BP-INT-02not assessedF-09
Workflow webhook receivers are known and verified BP-INT-03not assessedF-09
Integrations checked against the 2026-27 API retirements BP-INT-05not assessedF-07
Headroom on record and property limits BP-LIM-01not assessedF-08
Headroom on pipelines, custom objects and association labels BP-LIM-02not assessedF-08
Pipeline stages reflect the real process BP-SP-01not assessedF-03
Pipelines have closed stages and a manageable number of stages BP-SP-02not assessedF-03
Pipeline count fits deal volume BP-SP-03not assessed—

Findings index

Appendix C. Each id points at the one card where it is explained.

IdCard
DQ-001F-03 Owners and key fields
BP-DQ-02F-03 Owners and key fields
BP-DQ-03F-03 Owners and key fields
BP-SP-04F-03 Owners and key fields
PLAN-02F-03 Owners and key fields
PLAN-04F-03 Owners and key fields
PLAN-11F-03 Owners and key fields
DM-001F-05 Custom properties
DM-003F-05 Custom properties
DQ-002F-05 Custom properties
DM-006F-05 Custom properties
GAP-02F-05 Custom properties
GAP-03F-05 Custom properties
BP-DM-01F-05 Custom properties
BP-DM-02F-05 Custom properties
BP-DM-04F-05 Custom properties
BP-DQ-05F-05 Custom properties
PLAN-06F-05 Custom properties
PLAN-07F-05 Custom properties
PLAN-13F-05 Custom properties
PLAN-14F-05 Custom properties
Q-01F-05 Custom properties
Q-02F-05 Custom properties
Q-03F-05 Custom properties
Q-04F-05 Custom properties
Q-05F-05 Custom properties
INT-004F-07 Legacy apps and keys
BP-GOV-07F-07 Legacy apps and keys
PLAN-09F-07 Legacy apps and keys
GOV-003F-08 Logins and access
GOV-002F-08 Logins and access
GOV-005F-08 Logins and access
GOV-006F-08 Logins and access
GAP-04F-08 Logins and access
BP-GOV-01F-08 Logins and access
BP-GOV-02F-08 Logins and access
BP-GOV-05F-08 Logins and access
PLAN-01F-08 Logins and access
PLAN-03F-08 Logins and access
PLAN-05F-08 Logins and access
AUTO-001F-09 Workflows
BP-AUTO-01F-09 Workflows
PLAN-10F-09 Workflows
Q-06F-09 Workflows
Q-07F-09 Workflows
Q-08F-09 Workflows
AUTO-003F-10 Lists
AUTO-004F-10 Lists
GAP-01F-10 Lists
BP-AUTO-03F-10 Lists
PLAN-12F-10 Lists
BP-GOV-03F-16 Teams
PLAN-08F-16 Teams

Method

This audit read the portal through the Portal Audit app installed in this HubSpot account. Nothing in the portal was changed: the app only sends read requests, and its HubSpot client blocks anything else.

What was checked

Data model, data quality, people and seats, automation and marketing assets and security activity. Only configuration and aggregate counts are kept: no contact details, email addresses or IP addresses are stored in this report.

Time windows

  • Configuration and counts as of October 1, 2026 at 9:00 AM EDT.
  • Logins and security activity: the last 90 days.
  • Logged activity on records: the last 90 days.
  • Stale lists: not updated in 180 days. Form definition dates older than 365 days (submission counts were not assessed). Draft marketing emails: not edited in 180 days.

How the scores are calculated

Each category starts at 100 and loses points for every finding in it: 40 for critical, 20 for high, 10 for medium, 4 for low, 0 for information. The overall score is the weighted average of the categories that could be assessed (Data model ×1, Data quality ×1.25, Governance and security ×1.25, Automation ×1, Integrations ×1, Limits ×0.75). Any critical finding caps the overall score at 59. Reaching a pipeline limit is rated medium at most: it stops you adding another pipeline but doesn't break anything already set up, so it doesn't trigger the cap. Grades: A from 90, B from 80, C from 70, D from 60, F below 60 (so a capped score is F). Data quality scores use key fields only. Every property that was checked is listed in properties.csv.

Form submissions

Form submission counts for captured (non-HubSpot) forms are not assessed. The forms API returns the form name, type, and dates, not a submission total (https://developers.hubspot.com/docs/api-reference/2026-09-beta/marketing/forms/get-form). The submissions endpoint returns each submission's fields, which this audit does not read (https://developers.hubspot.com/docs/api-reference/legacy/marketing/forms/v1/get-form-integrations-v1-submissions-forms-form_guid). An older analytics report can return a submissions total (https://developers.hubspot.com/docs/api-reference/legacy/reporting/reports/get-analytics-v2-reports-object_type-time_period), but it is not the forms permission, and the published schema does not say the rows are captured forms.

Run details

FieldValue
GeneratedOctober 1, 2026 at 9:00 AM EDT
HubSpot API version2026-09 (platform 2026.09)
HubSpot requests0 read requests
CRM searches0 of 250 allowed
Permissions granted0

Not assessed

  • 01Left out of your score, not assessed: Default or template deal stage names (couldn't be checked this time) DM-004. What unlocks it: Nothing to do. It is retried on the next audit. Pipelines without a closed stage or with many stages (couldn't be checked this time) DM-005. What unlocks it: Nothing to do. It is retried on the next audit. Users past their inactivity threshold (couldn't be checked this time) GOV-009. What unlocks it: Nothing to do. It is retried on the next audit. Workflows with no actions (couldn't be checked this time) AUTO-002. What unlocks it: Nothing to do. It is retried on the next audit. Legacy private apps are making API calls (couldn't be checked this time) INT-001. What unlocks it: Nothing to do. It is retried on the next audit. Workflow custom code actions (couldn't be checked this time) INT-002. What unlocks it: Nothing to do. It is retried on the next audit. Workflow webhook actions (couldn't be checked this time) INT-003. What unlocks it: Nothing to do. It is retried on the next audit. Approaching account limits (couldn't be checked this time) LIM-001. What unlocks it: Nothing to do. It is retried on the next audit. Companies with no associated contact (couldn't be checked this time) DQ-004. What unlocks it: Nothing to do. It is retried on the next audit. Overdue or unowned tasks (couldn't be checked this time) DQ-005. What unlocks it: Nothing to do. It is retried on the next audit. Key properties without a validation rule (couldn't be checked this time) DQ-006. What unlocks it: Nothing to do. It is retried on the next audit. Open deals with no recent activity (couldn't be checked this time) DQ-007. What unlocks it: Nothing to do. It is retried on the next audit. Open deals missing a contact or company (couldn't be checked this time) DQ-008. What unlocks it: Nothing to do. It is retried on the next audit. Contacts or companies with no logged activity (couldn't be checked this time) DQ-009. What unlocks it: Nothing to do. It is retried on the next audit. Duplicate contacts or companies (couldn't be checked this time) DQ-010. What unlocks it: Nothing to do. It is retried on the next audit. Name, phone, or country formatting (couldn't be checked this time) DQ-011. What unlocks it: Nothing to do. It is retried on the next audit. Open deals with a past-due close date (couldn't be checked this time) DQ-012. What unlocks it: Nothing to do. It is retried on the next audit. Deal pipeline still using template stage names (couldn't be checked this time) DM-007. What unlocks it: Nothing to do. It is retried on the next audit. Pipeline definition changes in the last 90 days (couldn't be checked this time) DM-008. What unlocks it: Nothing to do. It is retried on the next audit. Commerce objects in use (couldn't be checked this time) DM-009. What unlocks it: Nothing to do. It is retried on the next audit. HubSpot forms with no lifecycle stage or nobody notified (couldn't be checked this time) AUTO-007. What unlocks it: Nothing to do. It is retried on the next audit. HubSpot forms with the legal option set to none (couldn't be checked this time) AUTO-008. What unlocks it: Nothing to do. It is retried on the next audit. HubSpot forms create a contact for a new email (couldn't be checked this time) AUTO-009. What unlocks it: Nothing to do. It is retried on the next audit. Private-app API usage near the daily limit (couldn't be checked this time) LIM-002. What unlocks it: Nothing to do. It is retried on the next audit. Connected domain DNS, HTTPS, or email (couldn't be checked this time) LIM-003. What unlocks it: Nothing to do. It is retried on the next audit. Hub feature readable with no matching seat (couldn't be checked this time) GOV-010. What unlocks it: Nothing to do. It is retried on the next audit. These checks do not count for or against your score.