Bookkeeper and User Management
Hurdlr's Bookkeeper Dashboard makes it easy for bookkeepers to manage users and other bookkeepers, with useful user row actions and bookkeeper management flows immediately available upon rendering the Accountant Dashboard.
1. User Row Actions
There are already several useful actions for managing users available to bookkeepers on each user row within the Accountant Dashboard:
Action | Description |
---|---|
Reconcile | Brings the bookkeeper to the Reconciliation Dashboard for the user. Only present if the user is active. |
Log In | Logs the bookkeeper into the user's account. Only present if the user is active. |
View Reports | Opens a popup with a list of reports that the bookkeeper can view for the user. Only present if the user is active. |
Email Reports | Opens a popup with a list of reports that the bookkeeper can email on behalf of the user. Only present if the user is active. |
Import Rules | Brings the bookkeeper to the Import Rules screen for the user. Only present if the user is active. |
Import from QBO | Brings the accountant to Hurdlr's Quickbooks Online Import UX. Only present if the user is active. |
Import from Xero | Brings the bookkeeper to Hurdlr's Xero Import UX . Only present if the user is active. |
Import from Bench | Brings the bookkeeper to Hurdlr's Bench Import UX. Only present if the user is active. |
Change Email | Opens a form to change the user's email address. Only present if the user is active and the bookkeeper has READ_WRITE access for the user. |
Remove User | Opens a popup asking for confirmation of the removal of the user. Only present if the user is active and the bookkeeper has READ_WRITE access for the user. |
Restore User | Opens a popup asking for confirmation of the restoration of the user. Only present if the user is removed and the bookkeeper has READ_WRITE access for the user. |
If you'd like to add your own custom actions on each user row in addition to those already available within the Accountant Dashboard, you can populate a userActions
array within the options
object. Each object within that array should contain a displayName
string and value
string.
You will also want to take advantage of the Hurdlr Embedded experience's registerAccountantUserActionListener
, which will invoke the callback function you provide whenever one of your bookkeepers presses on one of your custom user actions. To register the listener, simply add the following line of JS to be ran once after Hurdlr.init({...})
:
Hurdlr.registerAccountantUserActionListener(myAccountantUserActionCallback);
Whenever an accountant presses a custom user action, myAccountantUserActionCallback
will be invoked, with a JSON object as the single argument, containing the userId
as well as the value
of the action that you provided when defining the userActions
array.
2. Updating, Removing, and Restoring Bookkeepers
The ability to update, remove, and restore bookkeepers is already included within the Accountant Dashboard, as shown below:
3. Adding Bookkeepers and Users
If you want to include the ability to add users and bookkeepers from within the Accountant Dashboard, then you will want to take advantage of the Hurdlr Embedded experience's registerAccountantDashListener
functionality. Without this listener registered, the ability to add users and bookkeepers will be hidden within the Accountant Dashboard, and they will need to be added via Hurdlr's Save a teammate endpoint. Editing, removing, and restoring will still be available within the Embedded experience regardless of whether the listener is registered or not.
To register this listener, simply add the following line of JS to be ran once after Hurdlr.init({...})
:
Hurdlr.registerAccountantDashListener(myAccountantDashCallback);
Whenever an accountant clicks on a CTA within the Accountant Dashboard to add, update, remove, or restore an accountant or user(s), myAccountantDashCallback
will be invoked with a JSON object as the single argument, containing the following attributes:
Field | Description | Format |
---|---|---|
type | Type of CTA that was pressed by your bookkeeper. You must handle Hurdlr.ADD_USERS and Hurdlr.ADD_BOOKKEEPER , that way you can save new bookkeeper(s) or user(s) in your system prior to saving them in the Hurdlr API via the Save a teammate and Save users endpoints. Handling Hurdlr.UPDATE_USERS , Hurdlr.REMOVE_USERS , Hurdlr.RESTORE_USERS , Hurdlr.UPDATE_BOOKKEEPER , Hurdlr.REMOVE_BOOKKEEPER , and Hurdlr.RESTORE_BOOKKEEPER is optional. The edits triggered by these events will automatically be made to the Hurdlr API, so these are mainly to ensure you can make edits to the bookkeeper or user(s) in your system if need be. | Must be one of the following enumerations: Hurdlr.ADD_USERS , Hurdlr.ADD_BOOKKEPER , Hurdlr.UPDATE_USERS , Hurdlr.REMOVE_USERS , Hurdlr.RESTORE_USERS , Hurdlr.UPDATE_BOOKKEEPER , Hurdlr.REMOVE_BOOKKEEPER , Hurdlr.RESTORE_BOOKKEEPER |
id | Id of the user in Hurdlr's API. Only present if type is Hurdlr.REMOVE_BOOKKEEPER or Hurdlr.RESTORE_BOOKKEEPER . | Any integer |
userId | Id of the user in your DB. Only present if type is Hurdlr.REMOVE_BOOKKEEPER or Hurdlr.RESTORE_BOOKKEEPER . | Any string |
bookkeeper | Bookkeeper that was added or updated. Only present if type is Hurdlr.ADD_BOOKKEEPER or Hurdlr.UPDATE_BOOKKEEPER . | Any Bookkeeper object |
users | Users that were added, updated, removed, or restored. Only present if type is Hurdlr.ADD_USERS , Hurdlr.UPDATE_USERS , Hurdlr.REMOVE_USERS , or Hurdlr.RESTORE_USERS . | Array of User objects |
A Bookkeeper object has the following attributes:
Field | Description | Format |
---|---|---|
id | Id of the bookkeeper in Hurdlr's API. Only populated if type is Hurdlr.UPDATE_BOOKKEEPER . | Any integer |
userId | Id of the bookkeeper in your DB. Only populated if type is Hurdlr.UPDATE_BOOKKEEPER . | Any string |
Email address for the bookkeeper. | Any email string | |
firstName | First name for the bookkeeper. | Any string |
lastName | Last name for the bookkeeper. | Any string |
status | Status of this bookkeeper. | Must be one of the following enumerations: ACTIVE , INACTIVE |
canManageAdmins | Whether this bookkeeper can add other bookkeepers. | Any boolean |
canManageUsers | Whether this bookkeeper can add users. | Any boolean |
users | Clients this bookkeeper has access to. | Array of User objects |
A User object has the following attributes:
Field | Description | Format |
---|---|---|
id | Id of the user in Hurdlr's API. Only populated if type is Hurdlr.UPDATE_BOOKKEEPER , Hurdlr.ADD_BOOKKEEPER , Hurdlr.UPDATE_USERS , Hurdlr.REMOVE_USERS , or Hurdlr.RESTORE_USERS . | Any integer |
userId | Id of the user in your DB. | Any string |
Email address for the user. Only present if type is Hurdlr.ADD_USERS or Hurdlr.UPDATE_USERS . | Any email string | |
firstName | First name for the user. Only present if type is Hurdlr.ADD_USERS . | Any string |
lastName | Last name for the user. Only present if type is Hurdlr.ADD_USERS . | Any string |
status | Status of the relationship between the bookkeeper and the user. Only present if type is Hurdlr.UPDATE_BOOKKEEPER , Hurdlr.ADD_BOOKKEEPER , or Hurdlr.ADD_USERS . | Must be one of the following enumerations: ACTIVE , INACTIVE |
accessLevel | Level of access for the relationship between the bookkeeper and the user. Only present if type is Hurdlr.UPDATE_BOOKKEEPER , Hurdlr.ADD_BOOKKEEPER , or Hurdlr.ADD_USERS . | Must be one of the following enumerations: READ_WRITE , READ_ONLY |
bizType | Type of the user's business. Only present if type is Hurdlr.ADD_USERS . | Must be one of the following enumerations: CONSULTANT , REAL_ESTATE_AGENT , DRIVER , INSURANCE_AGENT , RETAIL , HOST , FREELANCER , E_COMMERCE , SALES , OTHER |
bizName | Name for the user's business. Only present if type is Hurdlr.ADD_USERS . | Any string |
An example of the arguments passed to myAccountantDashCallback
for the Hurdlr.UPDATE_BOOKKEEPER
event type is shown below:
{
type: "Hurdlr.ADD_BOOKKEEPER",
bookkeeper: {
id: 12345,
userId: "bookkeeper's id in your DB",
email: "[email protected]",
firstName: "bookkeeper's first name",
lastName: "bookkeeper's last name",
status: "ACTIVE",
canManageAdmins: false,
canManageUsers: true,
users: [
{
id: 6789,
userId: "user's id in your DB",
status: "ACTIVE",
accessLevel: "READ_ONLY",
}
]
}
}
Updated about 1 month ago