Webhooks
Floorfy uses Webhooks to send real-time notifications to your system whenever specific events occur on your account. This enables your systems to react immediately to changes or updates, such as new content creation or data modifications.
How to set up webhooks
Section titled “How to set up webhooks”Setting up webhooks in Floorfy is simple. Follow these steps to get started:
-
Enter a Webhook URL:
- Navigate to your Profile in the Floorfy dashboard.
- Go to Integrations > Webhooks.
- Enter your URL where Floorfy will send the event notifications, e.g., https://webcliente.com/wbh/floorfycontent.
-
Verify the Webhook URL:
- After entering your URL, use the
Send Test Webhookbutton to ensure that it is functioning correctly. - This test will send a sample event to your URL, allowing you to verify that your server is receiving and processing the events as expected
- After entering your URL, use the
Response requirements
Section titled “Response requirements”Your webhook endpoint must return a JSON response with a valid HTTP status code.
- If the response code is not in the
2xxrange, the delivery will be marked as failed. - You may include data in the response body, which we will temporarily store to help with delivery tracking and debugging.
Retry System
Section titled “Retry System”Webhook delivery includes an automatic retry mechanism for failed attempts.
- Total attempts: 1 initial + up to 3 retries (max 4 attempts per webhook).
- Retry schedule:
- Retry 1:
10 secondsafter the last failure - Retry 2:
60 secondsafter the previous retry - Retry 3:
3600 secondsafter the previous retry
- Retry 1:
Example:
If the initial webhook is sent at 10:00 and all attempts fail:
- Retry 1 →
10:00:10 - Retry 2 →
10:01:10 - Retry 3 →
11:01:10
No further attempts will be made after the third retry.
Property published
Section titled “Property published”Event: property_published
Section titled “Event: property_published”Description:
Section titled “Description:”Once the content of a property has been generated, we send all the content and information generated from it. The content delivered will depend on the service negotiated. In case of there being no content the object arrives as NULL.
Content:
Section titled “Content:”| Field Name | Data Type | Description |
|---|---|---|
| id | String | External identifier of the property. |
| tour | String | URL of the virtual tour. |
| idFloorfy | Integer | Floorfy ID of the property. |
| youtube_url | String | URL of the video in YouTube. |
| video_url | String | URL of the video on Floorfy. |
| images | List of Strings | List of URLs with the flat images of the property. |
| imgs_watermark | List of Strings | List of URLs with the flat watermark images of the property. |
| room_type | List of Strings | String list that indicates the room type of each of the images in the previous lists. |
| bounded_floorplan | String | URL of the PDF of the bounded floorplan. |
| scaled_floorplan | String | URL of the scaled floorplan PDF. |
| floorplan_images | List of Strings | List of URLs with the floorplan JPG images of the property. |
| time_type | String | before if it is the initial visit, and after if it is the final visit. |
| type | String | Indicates if the tour is displayed in 3D or 360. |
| agency_email | String | Indicates the email of the agency that owns the property. |
| furnished | Boolean | Indicates if the property is furnished. |
POST Example:
Section titled “POST Example:”{ "event": "property_published", "data": { "id": "220-12302", "tour": "https://floorfy.com/tour/{idFloorfy}", "idFloorfy": 114, "youtube_url": "https://www.youtube.com/watch?v=ZLTM0wV0rtk", "video_url": "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.mp4", "images": [ "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg", "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg", "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg" ], "imgs_watermark": [ "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg", "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg", "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg" ], "room_type": [ "Kitchen", "Living room", "Bathroom" ], "bounded_floorplan": "https://floorfymdpd.s3.eu-west-1.amazonaws.com/path/name_acotado.pdf", "scaled_floorplan": "https://floorfymdpd.s3.eu-west-1.amazonaws.com/path/name.pdf", "floorplan_images": { "dimensioned": [ "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg", "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg" ], "scaled": [ "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg", "https://floorfymdpd.s3-eu-west-1.amazonaws.com/path/name.jpg" ] }, "time_type": "after", "type": "3D", "furnished": false }}Property created
Section titled “Property created”Event: property_created
Section titled “Event: property_created”Description:
Section titled “Description:”Inform when a property is sent to virtualize for the first time.
Content
Section titled “Content”| Field | Type | Description |
|---|---|---|
| idFloorfy | Integer | Floorfy identifier of the property. |
| idExt | String | Property’s client identifier. |
| url | String | URL of virtual tour. |
POST Example:
Section titled “POST Example:”{ "event": "property_created", "data": { "idFloorfy": "138", "idExt": "220-12302", "url": "https://floorfy.com/tour/138" }}Property state updated
Section titled “Property state updated”Event: property_state_updated
Section titled “Event: property_state_updated”Description:
Section titled “Description:”Inform when property state is updated.
Content
Section titled “Content”| Field | Type | Description |
|---|---|---|
| idFloorfy | Integer | Floorfy identifier of the property. |
| idExt | String | Property’s client identifier. |
| state | String | State of the property, can be active, archived or deleted. |
| tour | String | URL of virtual tour. |
POST Example
Section titled “POST Example”{"event": "property_state_updated", "data": { "idFloorfy": "138", "idExt": "220-12302", "state": "active", "tour": "https://floorfy.com/tour/{idFloorfy}" }}LIVE Status
Section titled “LIVE Status”Event: live_info
Section titled “Event: live_info”Description:
Section titled “Description:”Inform about the state of the LIVE when it starts and when it finishes.
Content:
Section titled “Content:”| Field | Type | Description |
|---|---|---|
| idFloorfy | Integer | Floorfy identifier of the property. |
| idExt | String | Property’s client identifier. |
| idLive | String | LIVE identifier. |
| type | String | LIVE type, it can be openhouse or videocall. |
| status | Boolean | true when started, false when finished. |
POST Example
Section titled “POST Example”{ "event": "live_info", "data": { "idFloorfy": "138", "idExt": "220-12302", "idLive": "1450", "type": "openhouse", "status": true }}Furnish Status
Section titled “Furnish Status”Event: property_furnished
Section titled “Event: property_furnished”Description:
Section titled “Description:”Inform about the state of the Furnishment when it is added and when it is removed.
Content:
Section titled “Content:”| Field | Type | Description |
|---|---|---|
| idFloorfy | Integer | Floorfy identifier of the property. |
| idExt | String | Property’s client identifier. |
| status | String | Status: furnished if the tour is furnished deleted if the furnishment is deleted |
POST Example
Section titled “POST Example”{ "event": "property_furnished", "data": { "idFloorfy": "138", "idExt": "220-12302", "status": "furnished" }}Publish error
Section titled “Publish error”Event: publish_error
Section titled “Event: publish_error”Description:
Section titled “Description:”Inform about an error occurred during the generation of the property content.
Content:
Section titled “Content:”| Field | Type | Description |
|---|---|---|
| idFloorfy | Integer | Floorfy identifier of the property. |
| idExt | String | Property’s client identifier. |
| description | String | Error Description. |
| type | String | Error type: mount for an error during mount process. photo for an error during image extraction process. video for an error during video generation process. floorplan for an error during floorplan generation process. other for another type of error. |
POST Example
Section titled “POST Example”{ "event": "publish_error", "data": { "idFloorfy": "138", "idExt": "220-12302", "description": "There are not enough photos to make the floorplan", "type": "floorplan" }}Model 3D info
Section titled “Model 3D info”Event: 3dmodel_info
Section titled “Event: 3dmodel_info”Description:
Section titled “Description:”Inform about the 3D model of the property.
Content:
Section titled “Content:”| Field | Type | Description |
|---|---|---|
| idFloorfy | Integer | Floorfy identifier of the property. |
| idExt | String | Property’s client identifier. |
| 3d_model | String | JSON link of 3D model. |
POST Example
Section titled “POST Example”{ "event": "3dmodel_info", "data": { "idFloorfy": "138", "idExt": "220-12302", "3d_model": "https://domain.com/img/properties/2/1738/3dmodels/1738_b2951702-e835-40f0-85d9-749ce277d011.json" }}Room area info created
Section titled “Room area info created”Event: property_room_area
Section titled “Event: property_room_area”Description:
Section titled “Description:”Once the room area information of a floorplan has been generated, we send all the calculated areas and their corresponding room names. The content delivered will depend on the floorplan’s configuration.
Content:
Section titled “Content:”| Field | Type | Description |
|---|---|---|
| idFloorfy | Integer | Floorfy identifier of the property. |
| idExt | String | Property’s client identifier. |
| roomAreas | Array | Array with property areas and room names. |
POST Example
Section titled “POST Example”{ "event": "property_room_area", "data": { "idFloorfy": 1701, "idExt": null, "roomAreas": [ [ { "area": "4.65 m²", "name": "Hallway" }, { "area": "10.08 m²", "name": "Bedroom" }, { "area": "4.82 m²", "name": "Bathroom" }, { "area": "4.22 m²", "name": "Hallway" }, { "area": "3.32 m²", "name": "Bathroom" }, { "area": "4.02 m²", "name": "Hallway" }, { "area": "1.52 m²", "name": "Bedroom" }, { "area": "3.80 m²", "name": "Bedroom" }, { "area": "6.38 m²", "name": "Bedroom" }, { "area": "8.34 m²", "name": "Bedroom" }, { "area": "12.23 m²", "name": "Garden" } ], [ { "area": "0.98 m²", "name": "Balcony" }, { "area": "7.06 m²", "name": "Kitchen" }, { "area": "0.87 m²", "name": "Hallway" }, { "area": "36.24 m²", "name": "Living Room" }, { "area": "12.90 m²", "name": "Balcony" } ], [ { "area": "1.92 m²", "name": "Stairs" }, { "area": "1.98 m²", "name": "Bathroom" } ], [ { "area": "19.45 m²", "name": "Balcony" } ] ] }}