Skip to main content
Neo Agent needs its own security role and API member in ConnectWise. Create the role first, set its permissions in one pass, then create the API member with it.

Creating the Security Role and API Member

1

Create the Neo security role

Go to System → Security Roles and create a new role with Role ID Neo. Save it.
Open Security Roles

System → Security Roles

Add new role

Add a new role

Save role

Name it Neo and save

2

Set the permission levels, one module at a time

Open each module once. In every module, including Sales and Marketing, set Inquire Level to All on every entry first. Then open the groups below and set Add and Edit Level to All on the chips listed.

Service Desk

Service TicketsClose Service TicketsService Ticket - DependenciesMerge TicketsResource SchedulingKnowledge Base CreatorTicket Templates
Also set Delete Level to All on Resource Scheduling.
Company MaintenanceConfigurationsContactsManage AttachmentsManagementNotes
Time EntryTime Entry Billable Option
Project TicketsClose Project TicketsClose ProjectsProject HeadersProject NotesProject Ticket - DependenciesProject Ticket Tasks
AgreementsBilling View Time
ProductsProduct Catalog
My CompanyTable Setup
Sales and Marketing need no write access. Read access lets Neo look up context (companies, SLAs, agreements, configurations) and does not allow changes.
Three entries deserve a second look:
  • System → Member Maintenance needs Inquire = All. Neo reads your member list to resolve its own API member and to sync technicians. Without it, the connection checks fail with a 403 on the Identity check.
  • System → API Reports needs Inquire = All. ConnectWise treats this entry separately from the rest of the System module, and it lets Neo batch note history efficiently.
  • Companies → Manage Attachments is what enables ticket file attachments. Without Add = All there, attachments fail with a 403 permission error.
Keep Add, Edit, and Delete at None on the financial and admin entries not listed above. Neo does not need to write to them:
  • Invoicing and Invoice Approval
  • Billing Rate Maintenance
  • Accounting Interface
  • Purchase Orders and Purchasing Approvals
  • Member Maintenance
  • Security Roles
  • Add Licenses
Inquire stays All on every entry in this list. Only Add, Edit, and Delete go to None.The Neo dashboard’s permission groups control what Neo actually does; the role only sets the maximum access.
3

Create the API member and generate keys

  1. Go to System → Members → API Members and create a new member.
  2. Set the Security Role to Neo, the Member ID to something clear like neo_agent, and the email to psa-noreply@neoagent.io.
  3. Open the member’s API Keys tab and create a key pair with a description like “Neo-API”.
  4. Copy the Public Key and the Private Key now. ConnectWise does not show the private key again.
Use psa-noreply@neoagent.io here, never another @neoagent.io address such as team@neoagent.io. ConnectWise mails member notifications to the address on the member record. psa-noreply@neoagent.io discards everything it receives; any other Neo address delivers your ticket notifications, and the customer data inside them, to a Neo inbox instead of your team’s. An address on your own domain works too. Neo never reads this field — it authenticates with the API keys.
Note the Member ID, the Public Key (username), and the Private Key (password). The connection step needs all three.
4

Create a regular member for time entries (optional, recommended)

ConnectWise does not let API-only members create time entries. If Neo should log time, create a second, regular member:
  1. Go to System → Members (the regular list, not API Members).
  2. Create a member such as neo_agent_member and assign it the Neo security role.
  3. Note its Member ID.
This member needs no API keys. Neo authenticates with the API member’s keys and only records this member as the author of time entries. After you connect, Neo asks which member to use and lists your members to pick from (connection setup).
If you skip this step, everything else works. Neo only cannot write time entries, and an attempt surfaces an action-required notice in your inbox.

Keep Neo away from specific companies

Excluded companies keeps a company’s tickets out of Neo’s sync and triggered agents. A scheduled agent or Chat Agent reads the PSA as the account Neo signs in with, so to keep those agents away from a company too, restrict that account. ConnectWise limits a member by its Level and each company’s Territory:
  1. In System > My Company > Structure, add a location the Neo API member is not under.
  2. On each company to hide, set Territory to that location.
  3. On the Neo API member, set Level and Name to the location that holds your other companies, not Corporate.
ConnectWise says a member “will be able to search for companies at the specified level and the ones below it”, and that a company with no territory is never restricted. Its documentation does not say whether the API applies this limit, so after the change, check in a chat with Neo that it cannot open one of that company’s tickets. If the company’s tickets sit on boards of their own, Restrict Board Access on the API member hides those boards’ tickets instead.

What’s Next?

Proceed to connect ConnectWise to Neo Agent.
Before you proceed, verify you have:
  • The API Member ID
  • The Public Key (username) and Private Key (password)
  • Your ConnectWise PSA URL
  • Your exact company name from the ConnectWise login screen
  • (Optional) The regular member’s ID, if Neo should log time