TenderNed: API to HubSpot
Overview of which data we fetch from the TenderNed Announcements API (TNS) and XML API, and how it is written to HubSpot (Deals, Companies, Contacts).
Announcements API (TNS)
Public, unauthenticated API: GET /papi/tenderned-rs-tns/v2/publicaties. Used for discovery and initial cache population.
| API field | Description | HubSpot (Deal / Company / Contact) | Notes |
|---|---|---|---|
| publicatieId | Unique publication ID | synchub_publicatie_id | Unique linkage; used for ID link. |
| aanbestedingNaam | Tender title | dealname | — |
| opdrachtBeschrijving | Short description | synchub_beschrijving | — |
| publicatieDatum | Publication date | synchub_publicatiedatum | — |
| sluitingsDatum | Submission deadline | closedate, synchub_sluitingsdatum | — |
| typePublicatie | AAO, AAW, REC, AGO, GUN, VBE, MAC, VAK, VOR, INT | synchub_publicatietype | — |
| opdrachtgeverNaam | Contracting authority name | Company: name | — |
| procedure | OPE, BEP, ONH, etc. | synchub_procedure | — |
| typeOpdracht | L=Supplies, D=Services, W=Works | synchub_type_opdracht | — |
| europees | European procurement | synchub_europees | — |
| link.href | URL to the announcement | synchub_tenderned_url | — |
| isVroegtijdigeBeeindiging | Early termination (VBE) | synchub_is_ingetrokken | VBE → synchub_is_ingetrokken = true |
| tsenderNaam / tsenderLink | External platform (e.g. Mercell, Negometrix) | synchub_tsender_naam, synchub_tsender_link | — |
XML API (UBL/E-Forms)
Authenticated API: GET /papi/tenderned-rs-tns/v2/publicaties/{id}/public-xml. Contains detailed data (contracting authority, contact, CPV, lots, award, withdrawal).
| XML path / element | Description | HubSpot (Deal / Company / Contact) |
|---|---|---|
| ProcurementProject.Name | Project name | dealname |
| ProcurementProject.Description | Full description | description |
| MainCommodityClassification, AdditionalCommodityClassification | CPV codes (main + additional) | synchub_cpv_code |
| TenderingProcess.ProcedureCode | Procedure code | synchub_procedure |
| ProcurementProject.ProcurementTypeCode | Contract type (Supplies/Services/Works) | synchub_type_opdracht |
| RequestedTenderTotal.EstimatedOverallContractAmount | Estimated contract value | amount, synchub_geschatte_waarde |
| TenderSubmissionDeadlinePeriod.EndDate | Submission deadline | closedate, synchub_sluitingsdatum |
| ContractingParty.Party / EformsExtension.Organizations.Company | Contracting authority: name, KvK, website, address | Company: name, synchub_kvk, domain, address |
| Company.Contact (in extensions) | Contact person: name, email, phone | Contact: firstname, lastname, email, phone, company |
| ProcurementProjectLot | Lots (count; details in note) | synchub_percelen_aantal, note |
| BuyerTypeCode (in extensions) | Type of contracting authority | synchub_type_aanbestedende_dienst |
| ChangedNoticeIdentifier, ReasonDescription | Rectification: reason, original notice | synchub_rectificatie |
| SettledContract.Tenderer, AwardDate | Award: awarded to, date | synchub_gegund_aan, synchub_gunningsdatum |
| CancellationDate, CancellationReasonCode | Withdrawal: date, reason | synchub_is_ingetrokken, synchub_intrekkingsdatum, synchub_intrekkingsreden |
| RegulatoryDomain | European (RegulatoryDomain 2014) | synchub_europees |
HubSpot objects
Per tender we create one Deal, one Company (contracting authority) and optionally one or more Contacts, and associate them.
| Object | Fields | Purpose |
|---|---|---|
| Deal | dealname, description, amount, closedate, dealstage, pipeline + alle synchub_* | One Deal per original tender. Update publications (REC, AAW, INT) update the original Deal. |
| Company | name, synchub_kvk, domain, address (street, city, postalCode, country) | One Company per contracting authority; deduplication on synchub_kvk. |
| Contact | firstname, lastname, email, phone, company (opdrachtgever) | Contact persons at the authority; linked to Deal and Company. |
Filter options
Use the HubSpot Settings UI to precisely control which tenders are synchronized. Combine multiple filters for targeted results.
CPV Code search
The CPV Code Picker makes it easy to find and select relevant procurement categories.
- Search by keyword (e.g., 'software', 'IT', 'construction') or CPV code
- Filter by division (45=Construction, 72=IT, 79=Business services, etc.)
- Add codes manually for specific needs
- Use shorter codes (e.g., '72') for broader matching
Publication type
Filter by TenderNed publication type. These are the raw publication types from the TenderNed API. By default, all types are synchronized.
| Code | Description | Processing |
|---|---|---|
| AAO | Contract notice — the original publication | New Deal with all details (contact persons, contracting authority, deadline, value). |
| AAW | Modification notice — modification to an existing tender | Updates the original Deal. References the original publication ID via XML. |
| REC | Rectification — correction to a previous publication | Updates the original Deal with corrected information. |
| AGO | Contract award notice — notification that the contract has been awarded | Separate Deal with award information (winner, award date). Does not reference the original AAO. |
| GUN | Award — formal award decision | Updates the original Deal if a reference exists, otherwise a separate Deal. |
| VBE | Early termination — the tender has been terminated early | Separate Deal. Indicates the tender has been terminated. |
| MAC | Market consultation — exploratory phase before a tender | New Deal. Indicates an exploratory phase is underway. |
| VAK | Prior information notice — first notification of a planned tender | New Deal. Early indicator of an upcoming tender. |
| VOR | Prior information notice — variant prior notice | New Deal. Alternative form of prior information notice. |
| INT | Withdrawal — tender has been withdrawn | Updates the original Deal. Marks the tender as withdrawn. |
Update publications (REC, AAW, INT) reference the original publication ID via TenderNed XML. SyncHub finds the original Deal and updates it — no duplicate Deals are created. If the original is not yet in the database, it is automatically fetched from TenderNed.
Categories
- Original publications (new Deal): AAO, AGO, MAC, VAK, VOR, VBE
- Update publications (updates existing Deal): REC, AAW, INT
Closing date filter
Determine whether only tenders with a future closing date are synchronized.
| Option | Description |
|---|---|
| Future only | Only tenders where the closing date has not yet passed (recommended) |
| All tenders | Also synchronize tenders with past closing dates |
Note: existing deals in HubSpot are always updated, even if filters change. This ensures that changes (like rectifications or withdrawals) are correctly reflected.
Publication date filter
Limit the import to tenders published on or after a specific date. This is useful if you only want to import recent tenders.
Select a date in the date field. Only tenders published on or after this date on TenderNed will be imported. Leave the field empty to not apply a publication date filter.
Example: if you select 2024-01-01, only tenders from 2024 and later will be imported.
This filter only applies to new imports. Previously synchronized deals are always updated, regardless of the publication date.
Updates & notes
TenderNed publication updates (REC, AAW, INT) translate to targeted changes on the existing HubSpot Deal. The Deal stage is never changed automatically.
- Diff-based notes: only changed fields are shown in a note on the Deal.
- Always includes a link to the TenderNed detail page of the update publication.
- Rectifications (REC) show reason + impact, not the full description.
- Automatic original lookup: if an update references an original not yet in the database (e.g., from before 2020), it is automatically fetched from TenderNed.
- No duplicate Deals: update publications are always linked to the existing original Deal.
- Deal stage preserved: the Deal stage is never changed automatically during updates — you retain full control.
Complete property mapping
Below is the exact mapping of TenderNed information to HubSpot properties. All TenderNed-specific properties are in the "SyncHub - TenderNed" group. Only dealname, amount, closedate, pipeline, and dealstage are standard HubSpot properties.
Standard HubSpot properties
| TenderNed Source | HubSpot Property | Type | Possible values / format |
|---|---|---|---|
| Tender title | dealname | Text | Free text |
| Estimated value | amount | Number | Amount in EUR |
| Closing date | closedate | Date | YYYY-MM-DD |
| — | pipeline | Pipeline | SyncHub TenderNed |
| Publication type | dealstage | Deal stage | Only set at creation |
Custom properties (SyncHub - TenderNed)
| TenderNed Source | HubSpot Property | Type | Possible values / format |
|---|---|---|---|
| Publication ID | synchub_publicatie_id | Text (unique) | e.g. TN-2025-12345 |
| URL on TenderNed | synchub_tenderned_url | Text | Link to announcement |
| Tender description | synchub_beschrijving | Textarea | Free text |
| CPV codes | synchub_cpv_code | Text | e.g. 72000000, 45000000 |
| Publication date | synchub_publicatiedatum | Date | YYYY-MM-DD |
| Closing date | synchub_sluitingsdatum | Date+time | ISO 8601 |
| Publication type | synchub_publicatietype | Multi-select | AAO, AAW, REC, AGO, GUN, VBE, MAC, VAK, VOR, INT |
| Contract type | synchub_type_opdracht | Select | Works, Supplies, Services |
| Derived from CPV codes | synchub_aard_opdracht | Select | Construction, Civil, Installation, Demolition, Maintenance, Advisory, ICT, Facilities, Other |
| Procedure type | synchub_procedure | Select | Open, Restricted, Dialogue, Innovation, Negotiation, Negotiation without notice |
| Contracting authority type | synchub_type_aanbestedende_dienst | Select | Central government, Local authority, Public law body, Special sector, European, Other |
| Is rectified | synchub_rectificatie | Checkbox | Yes / No |
| Awarded to | synchub_gegund_aan | Text | Free text |
| Award date | synchub_gunningsdatum | Date | YYYY-MM-DD |
| Is withdrawn | synchub_is_ingetrokken | Checkbox | Yes / No |
| Withdrawal date | synchub_intrekkingsdatum | Date | YYYY-MM-DD |
| Withdrawal reason | synchub_intrekkingsreden | Textarea | Free text |
| Estimated contract value | synchub_geschatte_waarde | Number | Amount in EUR |
| European tender | synchub_europees | Checkbox | Yes / No |
| Digital submission | synchub_digitaal | Checkbox | Yes / No |
| External platform | synchub_tsender_naam | Text | e.g. Mercell, Negometrix |
| External platform link | synchub_tsender_link | Text | URL |
| Number of lots | synchub_percelen_aantal | Number | 0, 1, 2, ... |
| Expected start date | synchub_aanvang_opdracht | Date | YYYY-MM-DD |
| Expected end date | synchub_voltooiing_opdracht | Date | YYYY-MM-DD |
Enumerations are automatically mapped: TenderNed codes (e.g. OPE, BEP, W, D) are translated to readable labels in HubSpot.
Dates are converted from TenderNed format to YYYY-MM-DD (date) or ISO 8601 (date+time).
Publication Type is a multi-select: when an update occurs (e.g. REC on AAO), both types are shown (AAO;REC), so you can see the history of a tender.
The closing date is set in both the standard closedate and synchub_sluitingsdatum. This ensures the pipeline view in HubSpot works correctly.
All custom properties are created in the 'SyncHub - TenderNed' group. Missing properties are automatically created during the first synchronization.
Notes
Structured notes are created and associated with the Deal, Company, and Contact(s) during each synchronization.
When creating a Deal
A detailed note is created during the first synchronization of a tender with all available information:
- Full description of the assignment
- Overview of lots (number, title, description, CPV codes per lot)
- Contracting authority details (name, address, chamber of commerce, website)
- Contact persons (name, email, phone)
- External platform (name + link, e.g. Mercell)
On updates (REC, AAW, INT, GUN)
An update note is created for update publications with a prominent alert block at the top and changed fields below (diff-based):
- Prominent alert block: yellow banner with update type and date — immediately visible in the HubSpot timeline (e.g. "Rectification received for this tender")
- Update type (e.g. Rectification, Amendment notice)
- Date of the update publication
- Reason for change (if available)
- Changed fields with old → new value
- Example: "Closing date: 15-03-2025 → 22-03-2025"
Update bundling
Multiple updates on the same day are bundled into a single note, separated by a horizontal line. This prevents a cluttered timeline.
- New Deal → detailed note with description, lots, authority, contacts
- Update publication → diff note with only changed fields (old → new)
- Multiple updates on the same day → bundled into 1 note
- Notes are associated with Deal, Company, and Contact(s)
Processing flow
SyncHub processes tenders through a smart pipeline. 1) Discovery (daily): new tenders are fetched and added to the central database. 2) JSON enrichment (continuous): all tenders receive CPV codes via the fast public API. 3) Smart XML enrichment (continuous): only tenders matching active customer filters are fully enriched via the XML API — saving ~96% of API calls. 4) Tenant sync: matching tenders are written to HubSpot as Deal + Company + Contact(s). Fallback: when filters change, missing XML details are fetched on-demand.