Skip to content

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.

Setting up webhooks in Floorfy is simple. Follow these steps to get started:

  1. Enter a Webhook URL:

  2. Verify the Webhook URL:

    • After entering your URL, use the Send Test Webhook button 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

Your webhook endpoint must return a JSON response with a valid HTTP status code.

  • If the response code is not in the 2xx range, 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.

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 seconds after the last failure
    • Retry 2: 60 seconds after the previous retry
    • Retry 3: 3600 seconds after the previous retry

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.

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.

Field NameData TypeDescription
idStringExternal identifier of the property.
tourStringURL of the virtual tour.
idFloorfyIntegerFloorfy ID of the property.
youtube_urlStringURL of the video in YouTube.
video_urlStringURL of the video on Floorfy.
imagesList of StringsList of URLs with the flat images of the property.
imgs_watermarkList of StringsList of URLs with the flat watermark images of the property.
room_typeList of StringsString list that indicates the room type of each of the images in the previous lists.
bounded_floorplanStringURL of the PDF of the bounded floorplan.
scaled_floorplanStringURL of the scaled floorplan PDF.
floorplan_imagesList of StringsList of URLs with the floorplan JPG images of the property.
time_typeStringbefore if it is the initial visit, and after if it is the final visit.
typeStringIndicates if the tour is displayed in 3D or 360.
agency_emailStringIndicates the email of the agency that owns the property.
furnishedBooleanIndicates if the property is furnished.
{
"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
}
}

Inform when a property is sent to virtualize for the first time.

FieldTypeDescription
idFloorfyIntegerFloorfy identifier of the property.
idExtStringProperty’s client identifier.
urlStringURL of virtual tour.
{
"event": "property_created",
"data": {
"idFloorfy": "138",
"idExt": "220-12302",
"url": "https://floorfy.com/tour/138"
}
}

Inform when property state is updated.

FieldTypeDescription
idFloorfyIntegerFloorfy identifier of the property.
idExtStringProperty’s client identifier.
stateStringState of the property, can be active, archived or deleted.
tourStringURL of virtual tour.
{
"event": "property_state_updated",
"data": {
"idFloorfy": "138",
"idExt": "220-12302",
"state": "active",
"tour": "https://floorfy.com/tour/{idFloorfy}"
}
}

Inform about the state of the LIVE when it starts and when it finishes.

FieldTypeDescription
idFloorfyIntegerFloorfy identifier of the property.
idExtStringProperty’s client identifier.
idLiveStringLIVE identifier.
typeStringLIVE type, it can be openhouse or videocall.
statusBooleantrue when started, false when finished.
{
"event": "live_info",
"data": {
"idFloorfy": "138",
"idExt": "220-12302",
"idLive": "1450",
"type": "openhouse",
"status": true
}
}

Inform about the state of the Furnishment when it is added and when it is removed.

FieldTypeDescription
idFloorfyIntegerFloorfy identifier of the property.
idExtStringProperty’s client identifier.
statusStringStatus:
furnished if the tour is furnished
deleted if the furnishment is deleted
{
"event": "property_furnished",
"data": {
"idFloorfy": "138",
"idExt": "220-12302",
"status": "furnished"
}
}

Inform about an error occurred during the generation of the property content.

FieldTypeDescription
idFloorfyIntegerFloorfy identifier of the property.
idExtStringProperty’s client identifier.
descriptionStringError Description.
typeStringError 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.
{
"event": "publish_error",
"data": {
"idFloorfy": "138",
"idExt": "220-12302",
"description": "There are not enough photos to make the floorplan",
"type": "floorplan"
}
}

Inform about the 3D model of the property.

FieldTypeDescription
idFloorfyIntegerFloorfy identifier of the property.
idExtStringProperty’s client identifier.
3d_modelStringJSON link of 3D model.
{
"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"
}
}

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.

FieldTypeDescription
idFloorfyIntegerFloorfy identifier of the property.
idExtStringProperty’s client identifier.
roomAreasArrayArray with property areas and room names.
{
"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" }
]
]
}
}