Our Procore integration is achieved with SyncLinx and AccountLinx, two applications that work together with ExakTime to help streamline the payroll and job-costing process. SyncLinx pulls key data out of Procore, such as employees, projects, and cost codes for use in ExakTime. This data is used by ExakTime to help you and your employees to create their time records and time cards. AccountLinx exports your employee's time records into Procore to help complete your payroll, review job costing, and other items that rely on your employee's time cards.
Some benefits of using SyncLinx and AccountLinx with Procore are:
- Improved efficiency by eliminating the need to manually enter data into both Procore and ExakTime.
- Increased accuracy by limiting the opportunity for errors when entering data.
- Reduced chance of errors for employees tracking their time throughout their work day.
This article focuses on configuring and using AccountLinx to export your time data to Procore. If you would like information about SyncLinx to import entities into ExakTime from Procore, you can refer to the following article.
As each company can set up its company file in unique ways, we have provided generic steps below to try to cover the basics and may not be able to address all scenarios. It is advised to read through all the steps for each section before proceeding to provide context.
Table of Contents
- Requirements
- Connecting AccountLinx to Procore
- AccountLinx Export Settings
- Mapping Data
- Exporting Time Data
- Reviewing Exported Time Data in Procore
- Troubleshooting Procore Integration
- Data Mapping Table
- Time Export From Accountlinx Procore API Compared With Business Bridge
Requirements
Before we can begin using SyncLinx and AccountLinx with Procore, the following must be done to ensure successful integration between the two systems.
For ExakTime
SyncLinx and AccountLinx must be installed on a Windows-based PC and configured to connect to your ExakTime Connect account. If you need assistance with the installation and initial setup of AccountLinx/SyncLinx, you can refer to the following dedicated article.
For ProCore
AccountLinx and SyncLinx rely on a Procore user with Administrator access to integrate with Procore.
- Go to Company Tools under 'Core Tools', and go to Directory.
- Click Edit for the Procore user that needs to be set to an 'Admin'.
- Under the 'Company Permissions' section, mark all options to 'Admin' from the user profile.
- Scroll to 'Project Settings' and enable the two following permissions:
- Add X to all new projects in X.
- 'Allow X to create new projects (X will have full administrative access to any projects that they create)'
- Go to the 'Personal Information' section and click the check box for 'Is Employee of X Company' and enter an ID into the Employee ID field if needed.
- Save your changes for the user.
- Go to Company Tools under 'Workforce Management' and go to Timesheets.
- Click the orange gear icon towards the top-left next to 'Timesheets'.
- Go to Configurations.
- Enable 'Can company employees be tracked on all projects?' from the 'Shared Settings' section and click Update.
- Scroll down to the 'Timesheet Settings' section and set the 'Default Cost Type For Timecards' to 'Labor' and click Update.
- Save your changes.
To utilize the Procore Timecard, you must have 'Employees' in your company.
- Go to Company Tools, and go to Directory.
- Click + Add User or edit an existing user.
- Enable the 'Is Employee Of [Company Name]' option and enter an employee ID.
- Save your changes.
- Go to Company Tools.
- If the Procore Timecard has been enabled for the company, 'Timecard' should be listed under the 'Project Management' section.
- If you are unable to perform any settings changes or confirm that the 'Timecard' feature has been enabled, you will need to contact Procore Support for further assistance to ensure the 'Timecard' option is enabled.
For SyncLinx and AccountLinx to connect to Procore, you must allow users to install apps.
- Go to Company Tools and go to Admin.
- Go to App Management.
- Enable 'Allow User Installs' towards the top-right.
- Click Select an App in the top right corner of the Procore browser then click App Management.
- Click Install App then Install Custom App.
- Copy the App Version ID of b8c9d50e-64b1-4f79-a4d9-b786bd1fd85a and paste it into the prompted field in the browser.
- Click on Install.
- Custom fields can be created on Procore at the Company Level following the path: Company Tools > Admin > Project Settings > Timesheets.
- Custom fields must be related to a Fieldset in order to be used in Projects.
- Custom fields can be used in the Employee Timesheets under the Project level.
- At least one Company fieldset must be created to activate Custom Fields on AccountLinx/SyncLinx.
- You can have multiple sets of Company Fieldset, but only one can be related/used on AccountLinx/SyncLinx.
- Supported Custom Fields Types
- AccountLinx and SyncLinx only support the following Custom Fields types:
- Plain Text (short) 255 characters
- Date
- Checkbox
- Single Select (Dropdown)
- AccountLinx and SyncLinx only support the following Custom Fields types:
Connecting AccountLinx to Procore
- Go to Tools and click Exporter Settings.
- Select the Procore exporter and click OK.
- A setup wizard should launch and guide you through the setup.
AccountLinx Export Settings
- Go to Tools and click Exporter Settings.
- Click Configuration... on the Exporter Settings window.
- The 'Settings' window will have four tabs:
- The 'General' tab offers the following options:
- Connection - Set up or reset the connection for your Procore company.
- Default Time Types - Specify the default time type that should be associated with exported time records.
- Alternative Time Types - This will allow an alternate time type to be associated with specific employees, locations, or cost codes. This allows specific employees, locations, or cost codes to have an alternate set of pay type codes when exported. The related mapping screen will show drop-down menus to specify the time types that should be associated with exported time records.
- Map Billable to - This will allow you to mark time records as billable for specific employees, locations, or cost codes. The related mapping screen will show options to mark regular, overtime, or double time as billable.
- The 'Cost Codes' tab allows you to specify how the cost codes will generated.
- The 'Sub-jobs' tab allows you to include project sub-jobs with your time record export. If enabled, you will map the sub-jobs to a Location from the 'Map Locations' screen.
- The 'Other' tab offers the following options:
- Map Work Classification To - This will allow a work classification to be associated with specific employees, locations, or cost codes.
- Comments - This will allow comments associated with the time record, employee, location, or cost codes can be exported into the 'Description' column of the Procore Timesheet screen.
- The 'Export Other' tab offers the following options:
- 'Export Batch Size' allows you to limit the number of time cards can be added with a single insert during an AccountLinx export.
- 'Export Time Zone' allows you to specify the time zone with your records to help resolve display discrepancies in Project Timesheet.
- The 'Other' tab offers the following options:
- Custom Fields can be mapped to None, Employee, Location, and Cost Code.
- Does NOT support the same custom field mapped to more than one Entity. You should not map the same custom field to different Entities.
- Only up to one Fieldset can be selected and is supported.
- Only up to 5 Custom Fields can be selected and are supported.
- Custom Fields will appear in the mapping screen related to it.
- If the Custom Field is changed on Procore and has no single selection option in it anymore, then a text field in the mapping screen is displayed.
- Every time a Custom Field is created or changed, you must re-run the "Pre-Import" process on SyncLInx to be sure the values are up-to-date and re-open ALX. The Pre-Import is a process triggered only at the first Import/Update run on SLX.
- Custom Fields can be mapped to None, Employee, Location, and Cost Code.
- The 'General' tab offers the following options:
- Save your changes made.
Mapping Data
After setting up your Procore exporter settings, you will need to map your data in AccountLinx so the time data from AccountLinx will export to the matching entities in Procore. The mapping process is fairly consistent for all applications we integrate with some variations depending on your export settings.
With Procore, there are some considerations when mapping your data that you should keep in mind:
- Mapping Employees - Mapping employees will be performed for active workers from Procore.
- Mapping Locations - Your ExakTime Locations will be mapped with the project and sub-job. If a location was imported via SyncLinx, they should be automatically mapped.
- Mapping Cost Codes - Your ExakTime Cost Codes will be mapped to Procore Cost Codes at the Company level. Every Procore project is required to have the Company level Cost Codes added to them.
For more information about mapping, you can refer to the following dedicated article.
Exporting Time Data
When your exporter settings and your mappings have been completed, you should be able to begin exporting your time data. The export process is fairly consistent for all applications we integrate with. For assistance with exporting time data, you can refer to the following dedicated article.
Exporting Custom Fields and API Behaviour
- If the time records (first API call) and custom field (second API call) were exported successfully, they are considered EXPORTED
- If the time records (first API call) were exported successfully, but their custom fields (second API call) were not, they are considered as EXPORTED WITH WARNINGS
- If the time records (first API call) were not exported successfully, they are considered as NOT EXPORTED
Reviewing Exported Time Data in Procore
When exporting time records into Procore, AccountLinx will search for an existing Timesheet for the Project and Date where the status is 'Pending' and add the time cards to it. If AccountLinx cannot find any 'Pending' Timesheets, it will create a new Timesheet. All time records reported from AccountLinx to Procore will have a status of 'Pending'.
After you have exported the time data from AccountLinx, you can review the time data in Procore by navigating to Project Timesheets or Company Timesheets.
Project Timesheet
Company Timesheets
Troubleshooting Procore Integration
Potential Errors
Depending on your mappings, you may receive an error when exporting time records to ensure the data is consistent with Procore in the event that an exported sub-job or cost code is not associated with a project in Procore. In these instances, make sure that the data is properly mapped and/or the sub-job/cost codes are active in Procore.
Connection Timeouts
Sometimes the Procore API will present a timeout error. AccountLinx will automatically retry to connect with the standard retry being 5 times with 1-second intervals. If this timeout error continues happening, you will need to try again later as the timeouts are outside of our control.
Export Validations
Cost Codes
The projects from Procore are imported into ExakTime Connect as Locations and their associated Cost Codes are added to the location's view set. This configuration prevents the use of any cost code that does not belong to a project in their Time Records. In case there are manual changes with the Location view set to include a Cost Code that does not belong to the project in use by the Time Record being exported to Procore, an error will be presented during export that reads:
Procore Cost Code does not belong to Procore Sub-Job.
Sub-Jobs
AccountLinx will prevent the exporting of any data in which a Procore sub-job does not belong to a Procore Project. This error can also occur if the sub-job is deleted in Procore and a time record with the sub-job is exported. If you try to export a time record that meets any of the above criteria, you will receive an error that reads:
Sub-job does not belong to Procore Project.
Activating Cost Codes
If Cost Codes are not activated as a default feature on Procore, you will receive the following message when trying to receive any cost code data:
"You have insufficient rights to access the CostCode (PM209500) form."
You can activate cost codes by:
- In Procore, go to the company level > Company Tools > Admin > Work Breakdown Structure.
- Click Cost Codes in the 'Segments' table.
- Highlight the root folder named Cost Codes on the left-hand side.
- Click the Add Items button to add cost codes to the appropriate parent branch.
Activating Sub-Jobs
Sub Jobs are not activated by Default in Procore. If you would like to use them in SyncLinx or AccountLinx, you will need to activate them by:
- In Procore, go to Company Tools, go to Admin, and go to Work Breakdown Structure.
- Click on the ⚙️ Gear icon near the 'Segments' section.
- Click the checkbox for 'Enable the usage of Sub Jobs on projects'.
- Save your changes.
After enabling sub-jobs, you can manage Sub Jobs under projects by navigating to Project Tools, then Admin, then Work Breakdown Structure, and going to Sub job.
Data Mapping Tables Exporting Time Data into Procore
*Bolded Fields are Required
ExakTime | Procore |
---|---|
Employee ID | Employee ID |
Cost Code ID | Cost Code ID |
Location ID | Project ID or Project ID and project Task ID or None Project Code |
Work Date | Date |
Regular Hours | TimeSpent |
Overtime Hours | Time Spent |
Double Overtime | TimeSpent |
Comments or Notes | Description |
AccountLinx Custom Field: Cost Code | Cost Code |
AccountLinx Earning Type | EarningType |
AccountLinx Billable | BillableTime |
AccountLinx Billable Overtime | BillableOvertime |
AccountLinx Default Note | Note |
AccountLinx Approval Status | Status (always sent as “Open”) |
AccountLinx Default Approver | Approver |
Job Type | Certified Job |
AccountLinx Default CostRate | CostRate |
AccountLinx ExternalRefNbr | Ref |
AccountLinx LaborItem | LaborItem |
AccountLinx TimeEntryID | TimeEntryID |
AccountLinx UnionLocal | UnionLocal (User needs to enable Construction feature in Procore) |
AccountLinx WCCC Code | WCC Code |
Time Export From AccountLinx Procore API Compared With Business Bridge
ExakTime (Source) | Export File Column Name (Business Bridge via CSV File) |
AccountLinx via Procore API |
Procore (Destination) |
Req. | Notes |
---|---|---|---|---|---|
Employee Name | Employee | N/A | N/A | This field is not used by Procore and is only on the file for reference. | |
ExakTime: Employee ID | Employee Number | Employee | Employee ID | Y | |
ExakTime: Cost Code Name | Cost Code | N/A | N/A | This field is not used by Procore and is only on the file for reference. | |
ExakTime: Cost Code ID | Cost Code Number | ProjectTaskID | Cost Code ID | Y | Not required if Location represents Procore None Project value. |
ExakTime: Location Name | Site | N/A | N/A | This field is not used by Procore and is only on the file for reference. | |
ExakTime: Location ID | Site Number | ProjectID | Project ID or Project ID and Project Task ID or None Project Code | Y | If the Location ID value in ExakTime contains both Project ID and Project Task ID (separated by a colon), they are automatically separated and placed in their respective fields in Procore. |
ExakTime: Punch Date\Time | Start Date | Time | N/A | This field is not used by Procore and is only on the file for reference. | |
ExakTime: Punch Date\Time | Stop Date | N/A | N/A | This field is not used by Procore and is only on the file for reference. | |
ExakTime: Work Date | Work Date | Date | Date | Y | |
ExakTime: Regular Hours | Regular Hours | TimeSpent | Time Spent | Y | |
ExakTime: Overtime Hours | Overtime Hours | TimeSpent | Time Spent | Y | |
ExakTime: Double Overtime Hours | Double Overtime Hours | TimeSpent | Time Spent | Y | |
ExakTime: Exported | Exported | N/A | N/A | This field is not used by Procore and is only on the file for reference. | |
ExakTime: Comments or Notes | N/A | Summary | Description | Y | Time record Comments or Employee, Location, Cost Code Notes. AccountLinx has also an option for default comment. |
AccountLinx Custom Field: Cost Code | N/A | CostCode | Cost Code | In Procore Cost Code, needs to be enabled with Cost Code feature, it is different from the Project Task. Sent user mapped value. | |
AccountLinx Setting: Earning Type | N/A | EarningType | Earning Type | Y | Earning Type: Business Bridge defaults (RG, OT). In AccountLinx Procore API it is set by the user. |
AccountLinx Custom Filed: Billable Flag | N/A | Billable | Billable | Marks Regular Hours as Billable. If not marked defaults to False. | |
AccountLinx Custom Field: Billable | N/A | BillableTime | Billable Time | If Billable Flag for Regular Hours is checked, it will output TimeSpent field for Regular Hours. | |
AccountLinx Custom Field: Billable Overtime | N/A | BillableOvertime | BillableOvertime | If Billable Overtime Flag is checked, it will output Overtime and Double Time Hours from the TimeSpent field. (This will be outputted as separate entries). | |
AccountLinx: Default | N/A | note | note | Sent with empty value. | |
AccountLinx: Default | N/A | ApprovalStatus | Status | Always sent as "Open". | |
AccountLinx: Default | N/A | Approver | Approver | Sent with empty value. | |
ExakTime Custom Field: Job Type | N/A | CertifiedJob | Certified Job | Standard value is false, can be overwritten in AccountLinx via mappings. | |
AccountLinx: Default | N/A | CostRate | Cost Rate | Sent with empty value. | |
AccountLinx: Default | N/A | ExternalRefNbr | Ref | Sent with empty value. | |
AccountLinx Custom Field: Labor Item | N/A | LaborItem | Labor Item | Sent user mapped value. | |
AccountLinx: Default Value | N/A | TimeEntryID | TimeEntryID | Always sent with a new GUID. | |
AccountLinx Custom Field: Union Local | N/A | UnionLocal | Union Local | Need to enable Construction feature in Procore. Sent user mapped value. | |
AccountLinx Custom Field: WCC Code | N/A | WCCCode | WCC Code | Worker's Class Compensation code, need to enable the Construction feature in Procore. Sent user mapped value. |