What is the Autotask Integration?
The Autotask PSA Integration automatically imports customer data, service contracts, and time entries from your Autotask account into Pracbill. This eliminates manual data entry and ensures your billing information stays synchronized with your PSA system.
What gets synced:
Customers - Automatically created when needed
Service Contracts - Active contracts matching your SKU filter
Time Entries - Billable and approved time entries
How often: Daily at 2 AM (automatic), or on-demand via the admin dashboard
Prerequisites
Before setting up the Autotask integration, you'll need:
Autotask Administrator Access - To create API credentials
API Username and Secret - Created in Autotask
Pracbill Admin Access - To configure the integration
Getting Started
Autotask Integration - Quick Start Onboarding Guide
Using the Sync Dashboard
The Sync Dashboard provides real-time monitoring and manual control of the Autotask integration.
Access: Navigate to Admin → Autotask.
Dashboard Overview
The dashboard displays four key sections:
1. Sync Status Overview
At-a-glance metrics in colored cards:
Last Sync (Blue) - Time since the last sync operation (e.g., "2 hours ago", "Never")
Total Syncs (Gray) - Total number of sync operations performed
Successful (Green) - Number of successful sync operations
Failed (Red) - Number of failed sync operations
2. Manual Sync Operations
Two primary sync triggers:
Sync Contracts:
Imports/updates all active contracts from Autotask
Automatically creates customers on-demand
Optional: Check "End expired contracts" to mark expired contracts as ended
Sync Time Entries:
Imports billable time entries from Autotask
Configure date range with Start Date and End Date pickers
Default: Last 7 days to today
Applies your configured fixed hourly rate
How to Trigger a Manual Sync:
Choose the sync type (Contracts or Time Entries)
Configure options (e.g., date range for time entries)
Click the sync button
You'll see a confirmation: "Contract sync has been queued. Check the logs for progress."
The sync runs in the background using Laravel Horizon
Page will refresh automatically after 2 seconds
Important: Manual syncs are queued asynchronously. They don't run instantly but are processed by background workers (usually within seconds).
3. Sync Type Breakdown
A table showing sync statistics by type:
Column | Description |
|---|---|
Sync Type | Type of entity (contract, time_entry, company) |
Success | Number of successful operations |
Error | Number of failed operations |
Warning | Number of operations with warnings |
Total | Total operations for this type |
Use this to identify which sync types have the most errors.
4. Recent Activity
The last 10 sync operations across all types, showing:
Time - When the operation occurred (relative time, e.g., "5 minutes ago")
Type - Sync type (Contract, Time Entry, Company)
Operation - Action performed (create, update, skip, error)
Status - Result (Success, Warning, Error)
Message - Brief description of what happened
Status Badges:
Green badge = Success
Yellow badge = Warning
Red badge = Error
Gray badge = Other
Click View All Logs to see the complete log history with filtering.
Quick Links
Navigate to related pages:
Configuration - Return to API credentials and settings
View Logs - Access the full log viewer with filtering
Using the Log Viewer
The Log Viewer provides comprehensive visibility into all Autotask sync operations with advanced filtering and export capabilities.
Access: Access from the link in the dashboard
Filter | Options | Description |
|---|---|---|
Sync Type | All Types, Contract, Time Entry, Company | Filter by entity type |
Status | All Statuses, Success, Error, Warning | Filter by operation result |
Start Date | Date picker | Show logs from this date onward |
End Date | Date picker | Show logs up to this date |
Per Page | Default: 25 | Number of logs per page (pagination) |
Example Filters:
View only errors: Status = "Error"
View contract syncs from last week: Sync Type = "Contract", Start Date = (7 days ago)
View all activity from yesterday: Start Date = yesterday, End Date = today
Click Apply Filters to refresh the log table.
Log Table
The log table displays detailed information:
Column | Description |
|---|---|
Time | Date and time of the operation (formatted) |
Type | Sync type (Contract, Time Entry, Company) |
Operation | Action performed (create, update, skip, error) |
Status | Result badge (Success, Error, Warning) |
Duration | How long the operation took (in milliseconds) |
Message | Description of what happened |
Details | Click "View" to see JSON details in a modal |
Status Badges:
Green = Success
Red = Error
Yellow = Warning
Gray = Other
Duration: Helps identify slow operations. Most operations should complete in under 500ms.
Viewing Log Details
For logs with additional details:
Click the View button in the Details column
A modal window opens showing JSON-formatted details
Details may include:
Field values that were synced
Error stack traces
API response data
Validation errors
Click Close or press Escape to close the modal
Exporting Logs
Export filtered logs to CSV for external analysis:
Apply your desired filters
Click the Export CSV button (top right)
A CSV file downloads with the name:
autotask_logs_{department_id}_{timestamp}.csv
CSV Columns:
ID
Sync Type
Operation
Status
Message
Duration (ms)
Created At
Use Cases:
Share logs with support team
Import into Excel for analysis
Create reports for management
Archive historical data
Quick Actions
Back to Dashboard - Return to the Sync Dashboard
View Statistics - View aggregated statistics (redirects to statistics endpoint)
Pagination
Navigate through logs using the pagination controls at the bottom of the table:
First - Jump to first page
Previous - Go back one page
Page Numbers - Jump to specific page
Next - Go forward one page
Last - Jump to last page
The pagination preserves your filters, so you can browse through filtered results.
Understanding the Sync Process
Automatic Daily Sync
Once configured, the integration runs automatically every day at 2 AM. Here's what happens:
Contract Sync - Fetches active contracts from Autotask
Only contracts matching your SKU prefix are imported
Customers are created automatically if they don't exist
Existing contracts are updated with latest information
Time Entry Sync - Fetches billable time entries
Only billable and approved entries are imported
Time entries are linked to the corresponding service contracts
Your configured fixed hourly rate is applied
Entries from the last 90 days (or your configured window) are synced
Contract Service Field Mapping
When contracts are synced from Autotask, the following fields are mapped to Pracbill Engineering services:
Autotask Field | Pracbill Field | Description |
|---|---|---|
Contract Name |
| The name of the contract |
Service Name |
| The billing description |
Unit Price |
| Monthly service fee |
Invoice Description |
| Notes/description for invoicing |
Internal Description |
| Service identifier (e.g., phone number, username) |
Start Date |
| Service start date |
End Date |
| Service end date |
Using Internal Description for Service Identifiers:
The internalDescription field on Autotask ContractServices is mapped to the service_num field in Pracbill. This allows you to store service-specific identifiers like:
Phone numbers (e.g.,
0412345678)Usernames (e.g.,
john.smith)Serial numbers (e.g.,
SN-12345)Account IDs (e.g.,
ACC-001)
How to set it up in Autotask:
Navigate to the Contract in Autotask
Go to the Services tab
Edit the ContractService line item
Enter the service identifier in the Internal Description field (max 100 characters)
Save the changes
Run a contract sync in Pracbill
The internal description is not visible on invoices - use the Invoice Description for customer-facing text.
Manual Sync via UI
You can trigger syncs manually from the Sync Dashboard:
Navigate to the Sync Dashboard
Choose Sync Contracts or Sync Time Entries
Configure options (e.g., "End expired contracts" or date range)
Click the sync button
Sync is queued and runs in the background
Monitor progress in the Recent Activity section or Log Viewer
How Customer Import Works
Important: The Autotask integration uses an on-demand customer import strategy.
Customers are NOT bulk imported from Autotask
Instead, customers are created automatically when a contract is synced
Only customers with contracts matching your SKU prefix will be imported
This keeps your customer list clean and relevant
Example Flow:
Contract sync finds "PRACBILL-Managed-Services" contract
Contract belongs to "Acme Corporation"
System checks if "Acme Corporation" exists in Pracbill
If not, system fetches company details from Autotask and creates customer
Contract is then linked to the customer
Monitoring Sync Activity
Using the Sync Dashboard
The dashboard provides real-time visibility:
Status Overview - See last sync time and success/failure counts
Sync Type Breakdown - Identify which types have errors
Recent Activity - Last 10 operations across all types
Recommended: Check the dashboard weekly to ensure syncs are running smoothly.
Using the Log Viewer
For detailed troubleshooting:
Filter by Status = "Error" to see all failures
Check the Message column for error descriptions
Click View in the Details column for full error information
Export logs to CSV for support tickets
Understanding Log Statuses
Status | Icon | Meaning | Action Required |
|---|---|---|---|
Success | check | Operation completed successfully | None |
Warning | warning | Operation completed with minor issues | Review message, may be informational |
Error | error | Operation failed | Investigate and fix issue |
Skip | arrow | Item was intentionally skipped (e.g., wrong SKU) | None, expected behavior |
Common Sync Scenarios
Scenario 1: New Customer Contract
In Autotask:
You create a new contract "PRACBILL-Website-Hosting" for "New Company Inc"
In Pracbill (after next sync or manual sync):
Contract sync detects new contract with "PRACBILL" prefix
"New Company Inc" is automatically created as a customer
Service "PRACBILL-Website-Hosting" is created and linked to customer
Log entry shows: Operation = "create", Status = "success"
How to verify:
Check Recent Activity on the Sync Dashboard
Look for "contract" type with "create" operation
Navigate to Customers to see the new customer
Navigate to Engineering Services to see the new service
Scenario 2: Logging Billable Time
In Autotask:
Your team logs 5 hours of billable work on a contract
The time entry is marked as billable and approved
In Pracbill (after next sync):
Time entry sync detects new billable entry
System finds the matching service contract
Time entry is imported and calculated: 5 hours x $150/hour = $750
Entry is ready to be included on the next invoice
Log entry shows: Type = "time_entry", Operation = "create", Status = "success"
How to verify:
Go to Sync Dashboard -> Recent Activity
Look for "time_entry" type entries
Check Engineering Items (i_eng_srv) table for the new entry
Scenario 3: Contract Ends
In Autotask:
You set an end date on a contract
In Pracbill (after next sync):
Contract sync detects the end date
Service is marked as ended in Pracbill
No new time entries will be synced for this contract
Contract remains in history for reporting