Sync TradeTapp Data with your CRM
This tutorial demonstrates how to retrieve and use subcontractor qualification data to keep your CRM up to date. The steps include retrieving qualifications & identifying clients.
TradeTapp enables you to centralize all qualifications. Qualification data is created automatically in TradeTapp when subcontractors submit their data.
You can use TradeTapp & Bid Board as your primary invite management service while simultaneously operating a CRM tool like Salesforce or Microsoft Dynamics without doing manual work to keep your CRM updated.
Before You Begin
- Register an app (select either the Traditional Web App or the Desktop, Mobile, Single-Page App application type).
- Make sure to select the BuildingConnected API via the API Access dropdown after registering your app. The TradeTapp API is housed under the BuildingConnected API heading.
- Acquire a 3-legged OAuth token with
data:read
scope.
Important: TradeTapp API v2 will return data points for instances where an invited subcontractor has made at least one historical submission or the data was imported. Data will not be returned for the following circumstances:
- Invitations where the subcontractor has been invited but has not yet made a submission
- Project approval data (This function is currently not supported by APIs)
Step 1: Retrieve a list of Qualifications
Query for new and existing qualification data by calling GET qualifications.
filter[updatedAt]
limits the response to qualifications that were created or updated since the specified time.
Request
curl 'https://developer.api.autodesk.com/construction/tradetapp/v2/qualifications?filter\[updatedAt\]=2017-01-01..' \
-H 'Authorization: Bearer <TOKEN_VALUE>'
Response
{
"pagination": {
"cursorState": "cD0xNDcxOA==",
"limit": 20,
"totalResults": 3,
"nextUrl": "/construction/tradetapp/v2/qualifications?cursorState=cD0xNDcxOA%3D%3D",
"previousUrl": null
},
"results": [
{
"id": "6307acdf1ea3270060e88e00",
"uniqueId": "U1010",
"questionnaireVersion": "Primary Qualification",
"qualification": {
"status": "QUALIFIED",
"internalSingleLimit": 50000,
"internalTotalLimit": 125000,
"dateExpires": "2024-10-03T00:00:00.000Z",
"summary": "Great profile. Qualified.",
"denialReason": null,
"preExpirationStatus": null,
},
"applicationStatus": "SUBMITTED",
"applicationDetail": "NEW",
"companyName": "New York Interiors ",
"yearFounded": 2004,
"stateFounded": "California",
"taxIdType": "US_FEIN",
"federalTaxId": "411901185",
"submissionCurrency": "USD",
"numberOfHomeOfficeEmployees": 586,
"numberOfFieldSupervisoryEmployees": 302,
"hasProfessionalLicenses": true,
"hasUnionAffiliations": true,
"hasParentCompany": true,
"parentCompanyName": "New York Contractors",
"currentEstimatedBacklog": 10000,
"insuranceBrokerContactName": "Matthiew Serot",
"insuranceBrokerCompanyName": "Lemke Group",
"insuranceBrokerContactPhone": "650000000",
"insuranceBrokerContactEmail": "jallawy1e4@lekmegroup.com",
"suretyBrokerAgencyCompanyName": "Raynor, Weber and Bergstrom",
"suretyBrokerContactName": "Cindy Lehrer",
"suretyBrokerContactPhone": "415000000",
"suretyCompanyName": "Marvin-Hagenes",
"suretySingleProjectBondingCapacity": 100000,
"suretyAggregateBondingCapacity": 500000,
"bankName": "Steuber, Leffler and Jerde",
"bankLineOfCreditTotal": 963320,
"bankLineOfCreditOutstanding": 7640438,
"bankContactName": "Jeanelle Allawy",
"bankContactPhone": "2124724015",
"bankContactEmail": "jallawy1e4@slj.com",
"submittedAt": "2017-02-20T00:00:00.000Z",
"updatedAt": "2023-06-26T00:00:00Z",
"csiCodesForWorkPerformed": [
{
"primaryCode": "3",
"secondaryCode": "37",
"tertiaryCode": "16",
"codeDescription": "Pumped Concrete"
}
],
"regionsServed": [
{
"region": "Florida"
}
],
"marketsServed": [
{
"market": "Hospitality"
}
],
"completedReferences": [
{
"projectName": "A Project Name",
"location": "8924 Sachs Court, Mattawa, ON, V5M",
"yearCompleted": 2021,
"value": 5004615,
"scope": "Plexiglass",
"referenceContactCompany": "Innojam",
"referenceContactName": "Nike Longworth",
"referenceContactPhone": "3959641188",
"referenceContactEmail": "nlongworth1e4@innojam.biz",
"isLargestProject": false
}
],
"companyContacts": [
{
"positionTitle": "Director of Operations",
"contactName": "Nat Girke",
"contactPhone": "1656366322",
"contactEmail": "ngirke1e4@newyorkinteriors.com",
"contactFax": "1656366322",
"contactType": "BOTH"
}
],
"insuranceCoverages": [
{
"insuranceType": "WORKERS_COMPENSATION",
"carrier": "Leafy Pea Insurance Company",
"perOccurrenceLimit": 100000,
"aggregateLimit": 1000000,
"policyExpirationDate": "2024-05-09",
"isNotApplicable": false
}
],
"experienceModificationRatings": [
{
"year": 2022,
"experienceModificationRating": 0.83
}
],
"osha300Results": [
{
"year": 2022,
"totalNumberDeathsBoxG": 0,
"totalNumberCasesDaysAwayBoxH": 1,
"totalNumberCasesRestrictionTransferBoxI": 0,
"otherRecordableCasesBoxJ": 0,
"totalHoursWorked": 16216
}
],
"certificates": [
{
"id": "6476478d249a0533bab39072",
"type": {
"id": "63653068d6df3afebe7a46fc",
"name": "Disadvantaged Business Enterprise (DBE)"
},
"agency": {
"id": "63653068d6df3afebe7a46fa",
"name": "United States Department of Transportation",
"website": "https://www.transportation.gov/civil-rights/disadvantaged-business-enterprise"
},
"number": "123456",
"expiresAt": "2023-07-03T17:00:00.000Z",
"fileName": "TEST PDF (1) (1).pdf"
}
],
"unions": [
{
"unionName": "Safety Officer Union",
"unionNumber": "7075"
}
],
"annualVolumeRevenues": [
{
"year": 2020,
"estimatedVolumeRevenue": 51546617
}
],
"professionalLicenses": [
{
"licenseType": "Electrician",
"licenseNumber": "D8665258258930",
"licenseState": "New York",
"issuingAgency": "New York Registry of Contractors",
"additionalDescription": "LNO123"
}
],
"companyOfficeAddresses": {
"pagination": {
"cursorState": null,
"limit": 50,
"totalResults": 1,
"nextUrl": null,
"previousUrl": null
},
"results": [
{
"isMainOffice": true,
"address1": "63 Sheridan Terrace",
"address2": null,
"city": "Jamaica",
"state": "New York",
"zipCode": "11447"
}
]
},
"customQuestions": {
"pagination": {
"cursorState": null,
"limit": 50,
"totalResults": 3,
"nextUrl": null,
"previousUrl": null
},
"results": [
{
"question": "How do you feel about your fincancial health?",
"section": "Financial",
"textResponse": "Good",
"numberResponse": null,
"booleanResponse": null
},
{
"question": "How would you rate your fincancial health on a scale of 1 to 10, 10 being the best?",
"section": "Financial",
"textResponse": null,
"numberResponse": 7,
"booleanResponse": null
},
{
"question": "Have you submitted your most recent financials?",
"section": "Financial",
"textResponse": null,
"numberResponse": null,
"booleanResponse": true
}
]
}
},
...
]
}
Step 2: Identifying Clients between your CRM & TradeTapp
We include BuildingConnected’s & TradeTapp’s representation of a unique company ID (id field) in the response of GET qualifications. This is not equivalent to other representations of company IDs found elsewhere in ACC APIs. We recommend using the BuildingConnected & TradeTapp company ID (Builders network company ID) for this workflow.
Each invite is hosted by a specific client company (typically the subcontractor). Companies may have many offices but TradeTapp does not currently support unique office identifiers in BuildingConnected Qualification. You should assume that the company ID is the only identifier for many offices and if you need a specific offices data, you may wish to reference the federalTaxId
or companyName
.
You may have a unique ID from your CRM for subcontractors and vendors which you wish to leverage while identifying companies to sync. This will only work if you are providing TradeTapp with those unique IDs through TradeTapp’s backlog import mechanism.
If you are leveraging unique IDs through TradeTapp’s backlog import mechanism, you can use the uniqueId
field in the qualification response in place of the BuildingConnected (client.company.id
) and TradeTapp (qualification.id
) ID.

For more information on how to sync your vendors backlog you can access a support article here. If you wish to get more information on utilizing the unique ID through the vendor backlog import you can reference the support guide here.
It is important to note that if you are updating your CRM with TradeTapp data for subcontractor or vendor demographics, tax ID’s, contacts etc., the data is only as ‘up to date’ as the last update from a subcontractor or vendor. These dates can be referenced by “submittedAt” and “updatedAt” from GET qualifications/{companyId}.
The filter[uniqueId]
query parameter of GET qualifications limits the response to the qualification with that specific unique ID.