Integrations & API
Your website, your portals, your tools. One live source.
Forms, feeds, webhooks and a read-only API all work from the same live project data, so every channel shows the same units.



One live source
Everything you connect reads the same project.
Enquiries arrive from your website, microsite, agent portal and booking widget. Feeds, webhooks, calendars, deposits and AI assistants work from the same live data. Choose an event to see where it goes.
Example integrations hub: website forms and portals on one side, feeds, webhooks and calendars on the other, all fed by one bildflow project.
Sample dataUnit A102 is reserved: your webhooks get unit.status_changed, and portals reading your feed see it on their next read.
Two ways to connect
No code needed. Or bring your own.
Most teams copy a snippet or paste a URL. Developers get a read-only API, an OpenAPI document and signed webhooks.
No code
Copy a snippet or paste a URL. No developer needed.
- Enquiry form and booking widget for your website, with your logo and brand colours.
- WordPress plugin with your live inventory and the [bildflow_availability] shortcode.From Growth
- Availability map you can frame into any page while the microsite is published.From Growth
- Portal feeds in Kyero v3 XML or CSV, read by the portal from a secret URL.From Growth
- Webhooks into Zapier, Make or n8n: paste the URL they give you.From Growth
- Google Calendar sync for viewings, set up by each person.
- Card deposits straight into your own Stripe account, or a bank transfer.From Growth
For developers
A read-only REST API, an OpenAPI 3.1 document and signed webhooks, on the same live data as the app.
- Read-only REST API for projects, units and the availability map, with bf_ keys.From Growth
- OpenAPI 3.1 document at /api/public/openapi.json, no key needed.
- Webhooks signed with HMAC-SHA256, retried 6 times over about 33 hours, with a delivery log and Resend.From Growth
curl "https://bildflow.io/api/public/units?project=harbour-views" \
-H "Authorization: Bearer bf_your_key"const res = await fetch('https://bildflow.io/api/public/units?project=harbour-views', {
headers: { Authorization: 'Bearer bf_your_key' },
})
const { units } = await res.json()bildflow-event-type: unit.status_changed
bildflow-event-id: evt_1f0a2b3c-4d5e-4f6a-9b7c-8d9e0f1a2b3c
bildflow-signature: t=…,v1=…
{
"id": "evt_1f0a2b3c-4d5e-4f6a-9b7c-8d9e0f1a2b3c",
"type": "unit.status_changed",
"created_at": "2026-10-07T09:30:00.000Z",
"api_version": "2026-10-07",
"workspace": {
"id": "5d0c1b2a-3e4f-4a5b-8c6d-7e8f9a0b1c2d"
},
"data": {
"id": "6f1c2a34-5b6d-4e7f-8a9b-0c1d2e3f4a5b",
"unit_number": "A102",
"project": {
"id": "7a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"name": "Harbour Views",
"slug": "harbour-views"
},
"old_status": "available",
"new_status": "reserved",
"price": 280000,
"changed_at": "2026-10-07T09:30:00.000Z"
}
}A sample event, made by the same code that builds the real ones.
const crypto = require('node:crypto')
// header: the bildflow-signature request header, rawBody: the body exactly as it arrived
function verify(secret, header, rawBody) {
const parts = new Map(String(header).split(',').map((part) => part.trim().split('=')))
const t = parts.get('t') ?? ''
const v1 = parts.get('v1') ?? ''
if (/^\d{1,15}$/.test(t) === false || /^[0-9a-f]{64}$/.test(v1) === false) return false
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false
const expected = crypto.createHmac('sha256', secret).update(`${t}.${rawBody}`).digest()
return crypto.timingSafeEqual(expected, Buffer.from(v1, 'hex'))
}Node. Use the body exactly as it arrived, and reject a timestamp more than 5 minutes old.
Catalogue
Everything bildflow connects to.
Each item shows the plan it starts on and links to its step-by-step guide.
Your website
Forms, maps and pages that show live units and send enquiries straight in.
Enquiry form
Paste one snippet and every enquiry becomes a lead, tagged with where it came from.
Read the guide: Enquiry formBooking widget
Visitors book a viewing in your free slots, on your own website.
Read the guide: Booking widgetWordPress plugin
From GrowthYour live inventory on your WordPress site, and the [bildflow_availability] shortcode for the map.
Read the guide: WordPress pluginAvailability map embed
From GrowthBuilding views with clickable units and floors, framed into your site while the microsite is published.
Read the guide: Availability map embedProject microsite
From GrowthA public project page in four languages, with an enquiry form and a booking link.
Read the guide: Project microsite
Property portals
Feeds that portals read from a secret URL, refreshed when your units change.
Kyero v3 XML feed
From GrowthKyero, and portals that read Kyero feeds, pull your available units from a secret URL. Sold units drop off.
Read the guide: Kyero v3 XML feedCSV feed
From GrowthFor portals and agencies that import a spreadsheet, read from a secret URL in the same way.
Read the guide: CSV feed
Automation tools
Tools that accept webhooks. There is no listed app: you paste their URL in as an endpoint.
Zapier, via webhooks
From GrowthStart a Zap with Webhooks by Zapier (Catch Hook) and paste its URL in as a bildflow endpoint.
Read the guide: Zapier, via webhooksMake, via webhooks
From GrowthStart a scenario with a Custom webhook and paste its URL in as an endpoint.
Read the guide: Make, via webhooksn8n, via webhooks
From GrowthAdd a Webhook node set to POST and paste its production URL in as an endpoint.
Read the guide: n8n, via webhooks
Calendar and payments
Viewings in your own calendar, deposits in your own Stripe account.
Google Calendar
Each person can hide their busy times from booking slots and add new viewings to their calendar.
Read the guide: Google CalendarStripe card deposits
From GrowthBuyers pay the reservation deposit by card into your own Stripe account. bildflow takes no fee.
Read the guide: Stripe card deposits
AI assistants
Ask Claude or ChatGPT about your projects. Every action is recorded in your audit trail.
Claude
From ProConnect Claude to read your workspace and create tasks, lead notes or leads. Leads and buyers stay off until an owner or admin switches them on. A lead it creates is routed and announced like any other.
Read the guide: ClaudeChatGPT
From ProConnect ChatGPT to read your workspace and create tasks, lead notes or leads. Leads and buyers stay off until an owner or admin switches them on. A lead it creates is routed and announced like any other.
Read the guide: ChatGPT
Developers
Read your inventory and receive events in your own code.
Read API
From GrowthProjects, units and the availability map as JSON, with a bf_ key. Read-only.
Read the guide: Read APIOpenAPI 3.1 document
Every endpoint and webhook event, with examples. Public, no key needed.
Read the guide: OpenAPI 3.1 documentSigned webhooks
From Growthlead.created, unit.status_changed, reservation.signed, payment.recorded and booking.created, signed with HMAC-SHA256.
Read the guide: Signed webhooks
What it doesn’t do (yet)
So you can plan around it.
- The API is read-only. New leads arrive through the enquiry form, booking widget, microsite and agent portal, and your team (or an AI assistant) adds them in the app. They do not arrive through the API.
- There is no listed Zapier app. Zapier, Make and n8n connect through webhooks.
- Feeds come in two formats, Kyero v3 XML and CSV, and portals read them on their own schedule.
Questions about integrations
Can we add or change data through the API?
No. The API is read-only: projects, units and the availability map. New leads arrive through the enquiry form, booking widget, microsite and agent portal, and your team (or an AI assistant) adds them in the app.
Is there a Zapier app?
Not a listed one. In Zapier, start a Zap with Webhooks by Zapier and Catch Hook, then paste its URL in as a bildflow endpoint. Make and n8n work the same way.
How do property portals get our units?
They pull them. You create a feed in Kyero v3 XML or CSV and give the portal its secret URL. The portal reads it on its own schedule, so a change shows on its next read.
What if our server is down when an event is sent?
bildflow tries again 6 times over about 33 hours. The delivery log shows every attempt, and Resend sends a failed delivery again.
Which plan do we need?
The enquiry form, booking widget and Google Calendar come with every plan. The API and WordPress plugin start on Growth, portal feeds on Growth and webhooks on Growth. Claude and ChatGPT start on Pro.
Do buyers’ and leads’ details go through the API?
No. Buyers, leads, documents and internal fields are never part of the API, and custom fields appear only when you mark them public. Webhook events carry just the personal data each event needs, such as a new lead’s contact details.
Connect your first project.
Start today with the enquiry form and booking widget. Add feeds, webhooks and the API when your plan includes them.