Connect, Collaborate, and Conquer with your CRM Integration
Integrate Barbour ABI’s market leading construction project leads to your team’s CRM.

Integrate with your favourite CRM





Our construction project data, your way
Customers use our APIs to extract data and import it into their Customer Management (CRM) systems. This is a part of a common ETL Process:
- Extract – developer uses API to pull project, company, and people data from the Barbour ABI platform.
- Transform – reformat data to your internal fields
- Load – import transformed data to CRM
To implement a CRM integration, a software developer will need to use the Barbour ABI APIs. If you do not have a software developer, please speak to Barbour ABI who can put you in touch with integration partners.
Ready to get started? Find the steps below ⬇️

Choose your Extract Method
If you’d like to bring Barbour ABI project data into your CRM system, you can easily do so using our APIs. There are two common approaches you can choose from, depending on your needs and how your team works:
Option 1
Extract based on filters
Use this method to set up a regular process to extract projects every day using specific filters such as sector, region, or stage.
Option 2
Extract based on tags
Use this method to let your team tag specific projects to be extracted and added to your CRM.
Code snippets & explanation below
How to extract Barbour ABI Data based on filters
Automated Daily Uploads
Set up a regular process to extract projects from Barbour ABI and upload them into your CRM each day. You can choose to upload:
- All available projects in your subscription, or
- A filtered set based on specific criteria like location, stage, or sector.
Why choose this approach?
- Keeps your team working entirely within your CRM
- Ensures your CRM is always up to date with the latest project data
- Ideal if your project criteria requirement remains the same
Things to consider:
- If your filters aren't precise, your CRM will be flooded with too many projects
A common use of the Barbour ABI APIs is to extract data so it can be uploaded to a CRM system such as Salesforce or Microsoft Dynamics.
This section provides a reference and code snippets to support the steps described in the video. For a more comprehensive explanation of the APIs, please read the full documentation here.
Getting recent projects
Typically customers want to extract projects updated in the last day for upload to their CRM system. This is achieved with the following API call which uses the project_last_published filter in the query parameter:
GET projects?query={
"project_last_published":{
"operator": "..",
"value1": -1,
"value2": 0
}
}
You will need to URL encode the query parameter, so as follows:
GET projects?query=
%7B%22project_last_published%22%3A%7B%22operator%22%3A%22..%22%2C%22value1%22%3A-1%2C%22value2%22%3A0%7D%7D
This will respond with all the projects accessible within your subscription that were updated between yesterday and today. The results will be capped to the first 50 projects and the total available provided in a project_count key. If you need to iterate through the results, use the limit and offset parameters.
Additional filters
It is common to have access to more projects than your users can manage in their day to day work and there is a risk of overwhelming your CRM system if you extract and load all projects available to you. If this is a concern, then add additional filters to the query parameter. For example the following will reduce the results to just projects valued at £1m+ located in the North of England:
GET projects?query={
"project_last_published":{
"operator": "..",
"value1": -1,
"value2": 0
},
"project_value":{
"operator": ">=",
"value": 1000000
},
"project_geocode":{
"operator": "=",
"value": "EN"
}
}
The full list of fields and the lookup values are available via the fields and lookups APIs.
Companies and people
You can get a list of the companies and people working on a specific project as follows:
GET projects/12329590/roles
This will provide the company and person ids. To get the company and person fields, use the fields parameter, for example as follows:
GET projects/12329590/roles?fields=company_name,person_first_name,person_last_name
Alternatively you can get company and people data using the companies and people API as follows:
GET companies/{company_id}
GET people/{person_id}
Using the platform
Hand crafting queries can be time consuming, especially if you need to specify a large number of categories, materials etc. The alternative is to use the Barbour ABI Platform
Create a saved search in the web application with the filters you require, then use the following API to get the query behind the saved_searches:
GET saved_searches
You will notice additional project_build_phase and project_stages filters included in the response. These are used by the web app to exclude completed, abandoned, or withdrawn projects by default.
Code snippets & explanation below
How to extract Barbour ABI Data based on tags
Select Projects First in Barbour ABI
Let your team tag the projects they’re interested in directly within the Barbour ABI platform. You then use our APIs to extract just those selected projects and upload them into your CRM.
Why choose this approach?
- Gives your team powerful tools to identify relevant projects
- Reduces noise - only the right projects are uploaded
- Ideal if you have a dedicated team already using Barbour ABI
Things to consider:
- Requires a little more development work to integrate the tagging and extraction process
This section provides a reference and code snippets to support the steps described in the video. For a more comprehensive explanation of the APIs, please read the full documentation here.
Initial setup
As a one-off task the developer should sign into the Barbour ABI Platform to create a shared tag as follows:
- View an arbitrary project and add a tag, for example ‘Add to CRM’.
- Go to ‘My leads’ (left hand menu) and click the ‘Tags’ tab
- Click ‘Add to CRM’ to see the list of projects (will be just one) with this tag
- Click ‘Share’ and share with ‘Everyone’. This will allow all users to use this tag.
Process flow
Authenticate
Authenticate to get a token for all subsequent API calls. Full details about authenticating, along with an example are provided in the main Barbour ABI API documentation.
Get the tag_id
Each tag in the Barbour ABI platform has an internal id, named tag_id. This is not visible via the web interface, so needs to be obtained as follows:
GET tags
This will return all the tags for your developer user account:
{
"tags": [
{
"tag_id": 4810,
"tag_name": "Add to CRM",
"is_priority": true,
"is_shared": true,
"created_by": 409,
"count": 1,
"project_count": 1,
"company_count": 0
},
...
Users can only delete their own tags using the Web interface, so there is little chance of this tag disappearing. However, if you as the tag owner delete it and recreate it, then it will get a new tag_id.
Extract tagged projects
Get a list of all the projects with the ‘Add to CRM’ tag as follows:
GET projects?tag_id={tag_id}
If the roles, companies and people working on the project are not required for the integration, then the fields parameter can be used to get the required project fields in a single API call:
GET projects?tag_id={tag_id}&fields=project_id,project_title,project_value
If a large number of projects have been tagged, the limit and offset parameters should be used to iterate through the results. This will be an unlikely scenario if you are making regular API calls to process the tagged projects.
To get the full set of details for a project, iterate through the list of project_ids, making this API call to get the full project details:
GET projects/{project_id}
With this API call the fields parameter can be used if specific fields are required.
The roles, companies and people for the project can be obtained with a single API call by using the fields parameter to specify your preferred fields as follows:
GET projects/{project_id}/roles?fields=company_name,company_phone,person_first_name,person_last_name
Or alternatively omit the fields parameter to get a list of company_ids and person_ids working on the project.
A single or many companies can be obtained as follows:
GET companies/{company_id}
GET companies?query={
"company_id":{
"operator": "=",
"value": [{company_id},{company_id}]
}
}
A single or many people can be obtained as follows:
GET people/{person_id}
GET people?query={
"person_id":{
"operator": "=",
"value": [{person_id},{person_id}]
}
}
Customers often want to assign the projects to the appropriate users within their CRM system. To find out which user tagged the project:
GET projects/{project_id}/tags
The response will include “tagged_by”, the user_id of the person who created the tag.
To get the name associated with a user_id:
GET users/{user_id}
The list of users names should be cached in your code, rather than making continuous calls to this API.
Stop future processing
To avoid reprocessing the project later, the ‘Add to CRM’ tag should be removed from the project as follows:
DELETE projects/{project_id}/tags
{
"tag_id": 3
}
Mark as uploaded for the user
Rather than users depending on the disappearance of the ‘Add to CRM’ tag to indicate the project has been uploaded to your CRM system, either add a new tag or add a note.
Option A: Add a tag
During the initial setup, create a second shared tag, named “CRM”. This tag will indicate the project has been successfully added to their CRM system.
Add this tag to the project as follows:
POST projects/{project_id}/tags
{
"tag_id": xxx
}
There is nothing in the Barbour ABI platform to prevent users from removing this tag from the project. If this is a traceability concern, adding a note may be preferable.
Option B: Add a note
Add a note to the project to indicate the process is complete, as follows:
POST projects/{project_id}/notes
{
"note" : "Uploaded to CRM for Giles Armitage"
}
The note could be customised with the users name, as per the example above.
This note will be available to all users in the Collaborations section within “Activities” on the project details page.
Users cannot delete other users notes.
Keeping projects updated
Barbour ABI researchers track projects, adding roles, companies and updating project information as the projects progress. Some customers simply insert projects into their CRM system and never update them, leaving their staff to make any updates they wish.
Other customers upsert (insert + update) the projects into read-only fields within their CRM system and update these fields as Barbour ABI provide updates. If you prefer the latter approach, there are two methods to get the updates:
Option A: Request all updates
Use the APIs to get a list of all the projects updated by Barbour ABI in the last n days as follows:
GET projects?query={
"project_last_published":{
"operator": ">=",
"value": -1
}
}
In this example. the “-1” is one day ago, so yesterday.
For each of these projects, check in your CRM system to see if it exists. If it exists, then update the fields.
We recommend performing these project updates daily, rather than weekly because posting large volumes of data to CRM system is sometimes constrained by the vendor.
Option B: Request specific updates
Get a list of the project_ids from your CRM and use the Barbour ABI APIs to see if these have been updated in the last ‘n’ days:
GET projects?query={
"project_id":{
"operator": "=",
"value": [{project_id},{project_id}]
},
"project_last_published":{
"operator": ">=",
"value": -1
}
}
This will provide you with just the projects you need to update in your CRM system.
If you have a large number of project_id’s in your CRM system, then use option A would be preferable, otherwise you will need to break the project_ids into groups of 100 and make a separate API call for each group of projects.
CRM integration benefits for Barbour ABI users
Enhanced Customer Engagement
Improve customer satisfaction and loyalty with every interaction logged in one place.
Personalised
Marketing
Improved Sales Efficiency
Why people love Barbour ABI
“As the person who looks after the company license, I find the support from Barbour ABI is great. The team respond swiftly to all requests for support and liaise directly with my colleagues to support them, which makes their support to our end users seamless.”

“Very helpful in responding to my questions. They responded quickly via email, and also answered questions on the phone. I think they have very good knowledge and great customer service.”

Questions? Our experts can help.
Our developers are happy to help with any API and CRM integration questions you may have. Get in touch today.