Back to documentation

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 fieldDescriptionHubSpot (Deal / Company / Contact)Notes
publicatieIdUnique publication IDsynchub_publicatie_idUnique linkage; used for ID link.
aanbestedingNaamTender titledealname
opdrachtBeschrijvingShort descriptionsynchub_beschrijving
publicatieDatumPublication datesynchub_publicatiedatum
sluitingsDatumSubmission deadlineclosedate, synchub_sluitingsdatum
typePublicatieAAO, AAW, REC, AGO, GUN, VBE, MAC, VAK, VOR, INTsynchub_publicatietype
opdrachtgeverNaamContracting authority nameCompany: name
procedureOPE, BEP, ONH, etc.synchub_procedure
typeOpdrachtL=Supplies, D=Services, W=Workssynchub_type_opdracht
europeesEuropean procurementsynchub_europees
link.hrefURL to the announcementsynchub_tenderned_url
isVroegtijdigeBeeindigingEarly termination (VBE)synchub_is_ingetrokkenVBE → synchub_is_ingetrokken = true
tsenderNaam / tsenderLinkExternal 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 / elementDescriptionHubSpot (Deal / Company / Contact)
ProcurementProject.NameProject namedealname
ProcurementProject.DescriptionFull descriptiondescription
MainCommodityClassification, AdditionalCommodityClassificationCPV codes (main + additional)synchub_cpv_code
TenderingProcess.ProcedureCodeProcedure codesynchub_procedure
ProcurementProject.ProcurementTypeCodeContract type (Supplies/Services/Works)synchub_type_opdracht
RequestedTenderTotal.EstimatedOverallContractAmountEstimated contract valueamount, synchub_geschatte_waarde
TenderSubmissionDeadlinePeriod.EndDateSubmission deadlineclosedate, synchub_sluitingsdatum
ContractingParty.Party / EformsExtension.Organizations.CompanyContracting authority: name, KvK, website, addressCompany: name, synchub_kvk, domain, address
Company.Contact (in extensions)Contact person: name, email, phoneContact: firstname, lastname, email, phone, company
ProcurementProjectLotLots (count; details in note)synchub_percelen_aantal, note
BuyerTypeCode (in extensions)Type of contracting authoritysynchub_type_aanbestedende_dienst
ChangedNoticeIdentifier, ReasonDescriptionRectification: reason, original noticesynchub_rectificatie
SettledContract.Tenderer, AwardDateAward: awarded to, datesynchub_gegund_aan, synchub_gunningsdatum
CancellationDate, CancellationReasonCodeWithdrawal: date, reasonsynchub_is_ingetrokken, synchub_intrekkingsdatum, synchub_intrekkingsreden
RegulatoryDomainEuropean (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.

ObjectFieldsPurpose
Dealdealname, description, amount, closedate, dealstage, pipeline + alle synchub_*One Deal per original tender. Update publications (REC, AAW, INT) update the original Deal.
Companyname, synchub_kvk, domain, address (street, city, postalCode, country)One Company per contracting authority; deduplication on synchub_kvk.
Contactfirstname, 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.

CodeDescriptionProcessing
AAOContract notice — the original publicationNew Deal with all details (contact persons, contracting authority, deadline, value).
AAWModification notice — modification to an existing tenderUpdates the original Deal. References the original publication ID via XML.
RECRectification — correction to a previous publicationUpdates the original Deal with corrected information.
AGOContract award notice — notification that the contract has been awardedSeparate Deal with award information (winner, award date). Does not reference the original AAO.
GUNAward — formal award decisionUpdates the original Deal if a reference exists, otherwise a separate Deal.
VBEEarly termination — the tender has been terminated earlySeparate Deal. Indicates the tender has been terminated.
MACMarket consultation — exploratory phase before a tenderNew Deal. Indicates an exploratory phase is underway.
VAKPrior information notice — first notification of a planned tenderNew Deal. Early indicator of an upcoming tender.
VORPrior information notice — variant prior noticeNew Deal. Alternative form of prior information notice.
INTWithdrawal — tender has been withdrawnUpdates 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.

OptionDescription
Future onlyOnly tenders where the closing date has not yet passed (recommended)
All tendersAlso 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 SourceHubSpot PropertyTypePossible values / format
Tender titledealnameTextFree text
Estimated valueamountNumberAmount in EUR
Closing dateclosedateDateYYYY-MM-DD
pipelinePipelineSyncHub TenderNed
Publication typedealstageDeal stageOnly set at creation

Custom properties (SyncHub - TenderNed)

TenderNed SourceHubSpot PropertyTypePossible values / format
Publication IDsynchub_publicatie_idText (unique)e.g. TN-2025-12345
URL on TenderNedsynchub_tenderned_urlTextLink to announcement
Tender descriptionsynchub_beschrijvingTextareaFree text
CPV codessynchub_cpv_codeTexte.g. 72000000, 45000000
Publication datesynchub_publicatiedatumDateYYYY-MM-DD
Closing datesynchub_sluitingsdatumDate+timeISO 8601
Publication typesynchub_publicatietypeMulti-selectAAO, AAW, REC, AGO, GUN, VBE, MAC, VAK, VOR, INT
Contract typesynchub_type_opdrachtSelectWorks, Supplies, Services
Derived from CPV codessynchub_aard_opdrachtSelectConstruction, Civil, Installation, Demolition, Maintenance, Advisory, ICT, Facilities, Other
Procedure typesynchub_procedureSelectOpen, Restricted, Dialogue, Innovation, Negotiation, Negotiation without notice
Contracting authority typesynchub_type_aanbestedende_dienstSelectCentral government, Local authority, Public law body, Special sector, European, Other
Is rectifiedsynchub_rectificatieCheckboxYes / No
Awarded tosynchub_gegund_aanTextFree text
Award datesynchub_gunningsdatumDateYYYY-MM-DD
Is withdrawnsynchub_is_ingetrokkenCheckboxYes / No
Withdrawal datesynchub_intrekkingsdatumDateYYYY-MM-DD
Withdrawal reasonsynchub_intrekkingsredenTextareaFree text
Estimated contract valuesynchub_geschatte_waardeNumberAmount in EUR
European tendersynchub_europeesCheckboxYes / No
Digital submissionsynchub_digitaalCheckboxYes / No
External platformsynchub_tsender_naamTexte.g. Mercell, Negometrix
External platform linksynchub_tsender_linkTextURL
Number of lotssynchub_percelen_aantalNumber0, 1, 2, ...
Expected start datesynchub_aanvang_opdrachtDateYYYY-MM-DD
Expected end datesynchub_voltooiing_opdrachtDateYYYY-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.