Skip to main content
You connect HubSpot once at the MSP level, with a service key.

1. Create a service key in HubSpot

1

Open Service Keys

Sign in to HubSpot as a super admin, or a user with Developer Tools access. Open Settings, then Integrations, then Service Keys, and create a key. Name it “Neo”.
2

Choose the scopes

Click Add new scope and add what your agents need. Always add crm.objects.companies.read: Neo maps your HubSpot companies to your PSA companies with it, and the mapping reports a permission error on each sync without it. To keep contacts and deals in step with your PSA, add:
  • crm.objects.contacts.read and crm.objects.contacts.write
  • crm.objects.companies.read and crm.objects.companies.write
  • crm.objects.deals.read and crm.objects.deals.write
  • crm.objects.owners.read
  • crm.schemas.contacts.read, crm.schemas.companies.read and crm.schemas.deals.read
To open a PSA ticket or project for each deal you win, add crm.objects.deals.read and crm.objects.deals.write, crm.objects.quotes.read, crm.objects.line_items.read, crm.objects.companies.read, crm.objects.contacts.read, crm.objects.owners.read and crm.schemas.deals.read, plus crm.schemas.deals.write if Neo should create the deal property it uses (step 3).Add a read scope only when agents only read that area. Neo also checks the permission groups you set per agent, so a scope alone never lets an agent change something.
3

Copy the key

Click Update, then copy the key.
Already have a legacy private app for Neo? Its access token works too: paste it in place of a service key. HubSpot stopped new private apps on September 28, 2026 for accounts created since then, and stops them on October 26, 2026 for older accounts. If you rotate the key later, save the new one in Neo: the old one stops working.

2. Add the key in Neo

1

Open Integrations

Open Integrations → HubSpot in the Neo Dashboard. The card is under Sales & Quoting.
2

Save the key

Paste it in Service Key and click Save. Neo checks the key with HubSpot before it saves, so a wrong key is rejected straight away.
3

Check the company mapping

After the next sync, open the Organization Mapping tab and confirm the matches between your HubSpot companies and your PSA companies. Agents use only confirmed matches, so a contact or deal under an unconfirmed company is listed in the report instead of synced.

3. Turn HubSpot on per agent

Open the agent from Agents, go to the Integrations section, and configure the HubSpot block. Pick a profile, then change any group. To keep contacts and deals in step with your PSA, set Contacts, Companies and Deals, Quotes & Products to Read / Write, and Properties, Pipelines & Schemas to Read Only. Give the agent your PSA’s contacts, companies and opportunities groups too, and its resources group at Read Only, which maps HubSpot owners to PSA resources (Autotask Contacts, Companies, Opportunities and Resources). On Autotask, give it Admin at Read Only too: Neo reads your opportunity stages and statuses there. Under Neo API, give it End Companies at Read Only too: the sync reads your confirmed company matches in one batch. Say in its instructions how often it runs, and name a system of record for each field your PSA should push to HubSpot (for example “Autotask owns contact phone numbers”). Neo dates each HubSpot change from HubSpot’s property history, so a HubSpot edit reaches the PSA on its own when nothing changed on the PSA record after it. The PSA keeps no such history, so a PSA edit reaches HubSpot only for a field the PSA owns. Every other difference is listed in the report; name a system of record for a field that must always follow one side. Neo updates the contacts, deals and opportunities that match on both sides on its own. It creates a missing contact, deal or opportunity on the other side only when a person asks for it on that record, because an email or a title can change and no search proves a record is new. Add a create request, such as a HubSpot checkbox property “Create in PSA” or an Autotask UDF, and name it in the agent’s instructions. Tick it on a record once you have checked the other side; Neo creates the counterpart and clears the box. Records with no request that match nothing are listed in the agent’s report. Deals and opportunities match best when HubSpot stores each deal’s PSA opportunity id: add a single-line text deal property, such as “PSA opportunity id”, and name it in the instructions. Without one, Neo matches them by company and exact title.

Turn won deals into tickets and projects

A scheduled agent can open one PSA ticket or project for each HubSpot deal you win, or whose quote your client accepts: one per deal, however many quotes it has. Set Deals, Quotes & Products to Read / Write, and Companies, Contacts and Properties, Pipelines & Schemas to Read Only, and give it your PSA’s tickets or projects group at Read / Write, its companies, contacts and resources groups at Read Only (Autotask Tickets, Projects, Companies, Contacts and Resources, and Admin at Read Only, where Neo reads your project types and statuses), and Neo API End Companies at Read Only. Neo marks each deal it has turned into work in a single-line text deal property, “PSA work id”, which holds the ticket or project it made, so a deal never becomes work twice. Create the property in HubSpot, or set Properties, Pipelines & Schemas to Read / Write and Neo creates it on its first run. Every ticket and project title ends with the deal’s id, such as [HubSpot deal 51234567890]; keep it there, because Neo finds the record by it when a run stopped before it could mark the deal. Say in the agent’s instructions:
  • the start date: only won deals whose close date is on or after it, and quotes accepted on or after it, become work. HubSpot sets a deal’s close date when it is won, unless your account turned that off. Without a start date, Neo turns nothing into work;
  • which deals become a project and which a ticket (by pipeline, deal type, or a product on the deal). Without a rule, each deal becomes a ticket, or a project when the agent has only your PSA’s projects group;
  • the ticket queue, status and priority, and the project template, if any. Without a queue, Neo skips the deal and lists it in its report.
Neo writes the deal’s amount and line items into the ticket or project, and the quote number and link when the deal has an accepted quote, and links it to the deal’s company and to its PSA opportunity when HubSpot stores the opportunity id. When Neo finds them in your PSA by email, a ticket also gets the deal’s contact, and a project gets the deal’s owner as its project lead. A deal none of whose companies has a confirmed match, or whose confirmed matches point to two PSA companies, is listed in the report instead.

Changes that always ask a technician

See Safety Controls in HubSpot API.