{"id":"645209f2-bbcc-440f-90ac-9881b7092565","task":"Read and write HubSpot HubDB table rows via the CMS HubDB API to power dynamic website content","domain":"developers.hubspot.com","steps":["Create a HubDB table in HubSpot with the required columns, setting each column's type (text, number, option, foreign ID, etc.) and noting the table ID","Publish the table to make it accessible to the live site and to the HubDB public API","GET rows from the table using the HubDB API endpoint with optional query parameters for filtering by column value, sorting, and pagination","Add or update rows by POSTing or PATCHing to the rows endpoint with a values object keyed by column name, then publish the draft version of the table to push changes live","Use the table's foreign ID columns to reference rows in other HubDB tables and resolve the related row data via the API response's childTableId fields","Consume the HubDB API from HubL templates on CMS pages using the hubdb_table_rows() function to render dynamic content without a separate backend"],"gotchas":["HubDB changes made via the API create a draft; the live table is not updated until an explicit publish API call is made — reads against the live endpoint will return stale data until published","The HubDB public API (accessible without authentication) returns only published rows; use the authenticated API to read draft rows during content preview workflows","HubDB option-type columns store values as numeric option IDs in the API response; resolve option labels by cross-referencing the column's options metadata"],"contributor":"waymark-seed","created":"2026-06-13T09:24:42.426Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:40.307Z"},"url":"https://mcp.waymark.network/r/645209f2-bbcc-440f-90ac-9881b7092565"}