Tag: Nestopa

  • Case Study 13: Building and Maintaining Custom Real Estate XML Feeds for a Multi-Website Property Business

    Client Overview

    The client operates multiple real estate websites and needed custom XML feeds to distribute property listings to different property networks and platforms.

    The initial requirement was relatively simple: create an XML feed compatible with the Houzez WordPress real estate plugin.

    What started as a single-feed project developed into a long-term technical collaboration involving multiple websites, property-feed formats, custom filtering rules, additional XML fields, feed troubleshooting, and performance improvements as the number of listings grew.

    The project began in May 2023 and continued through subsequent feed development and maintenance requests.

    The Challenge

    The client needed to connect WordPress-based real estate websites with external property networks using specific XML formats.

    The main challenges included:

    • Generating XML feeds from WordPress real estate data
    • Working with the Houzez and RealHomes property systems
    • Mapping WordPress property fields to external XML structures
    • Supporting different property types and values
    • Creating feeds for multiple property portals
    • Filtering properties based on backend options
    • Excluding sold or unwanted properties
    • Supporting additional XML fields as requirements evolved
    • Correctly handling property prices
    • Including property images and videos
    • Supporting different feed URLs using the same underlying data
    • Troubleshooting XML parsing and accessibility issues
    • Scaling the feed as the number of properties increased

    The client also wanted the solution to be reusable across multiple websites rather than creating a completely different system for every website.

    Phase 1: Houzez XML Feed Development

    The relationship started when the client contacted me looking for an XML feed for the Houzez plugin.

    The first requirement was to develop a WordPress plugin capable of generating a Nestopa XML feed from the staging website.

    The client specifically asked whether the plugin could subsequently be used on multiple websites using Houzez.

    I confirmed that the plugin could be developed to work with the Houzez environment.

    The initial feed was developed and tested, including adjustments to property-type mapping.

    For example, the client changed property values such as:

    • Condo
    • House
    • Land
    • Office
    • Shop
    • Warehouse
    • Hotel
    • Building
    • Villa

    A custom mapping was then added so that the website’s Villa property type could be mapped to the required House value in the destination feed.

    This established the foundation for the later feed work.

    Phase 2: Multiple XML Feeds for HuaHinJapan.com

    After the first successful implementation, the client asked whether the same system could be adapted for HuaHinJapan.com.

    The project expanded to multiple property-network feeds.

    The feeds included:

    • Proppit
    • Nestopa
    • Listanza

    A separate URL was also created for the Proppit feed so the same feed could be accessed using another filename for a different integration requirement.

    The completed feed URLs included separate Proppit, Nestopa and Listanza endpoints.

    This demonstrated an important advantage of the approach: one WordPress property database could feed multiple external platforms through different XML formats and endpoints.

    Handling Feed Accessibility Problems

    The XML itself was functioning correctly, but the client’s technical team later reported that the Nestopa feed could not be accessed from their server because the feed appeared to be blocking bots.

    Rather than assuming the XML structure was incorrect, the issue was investigated separately as an accessibility/security problem.

    An alternative feed location was provided for testing, and the client was advised to check whether an anti-spam plugin was interfering with external access.

    This distinction between feed-generation problems and server-access problems was important when troubleshooting the integration.

    Phase 3: Filtering Property Listings

    The requirements became more sophisticated as the client’s property portfolio grew.

    For the Nestopa feed, the client requested that properties marked as Sold should be excluded.

    The feed was subsequently updated specifically for this requirement.

    Later, the client requested a Proppit feed for another website that would include properties only when a specific backend Proppit option was selected.

    A custom WordPress plugin was developed to apply that condition when generating the XML feed.

    This transformed the feed from a simple “export everything” system into a rules-based property syndication feed.

    Phase 4: Images, Prices and Property Metadata

    One of the recurring challenges with real estate XML feeds is ensuring that all important property information is transferred correctly.

    The client received feedback that some listings were being published without images because the XML did not contain the required pictures information.

    The feed was updated to include the required picture data.

    A specific property was also identified as missing the required price information, which was investigated and corrected.

    Later, a pricing issue occurred because the original rent-price field had been removed from the website.

    The feed was adapted to use the site’s “Sale or Rent Price (Only digits)” field instead, restoring the correct price information in the XML.

    Phase 5: Adding the “DeBoost” Logic

    The client later introduced a more advanced requirement for Proppit.

    They wanted properties to be promoted by default, while allowing administrators to disable promotion for individual listings.

    The requested XML behavior was:

    • Default property → <is_boosted>TRUE</is_boosted>
    • Property marked for removal/deboost → <is_boosted>FALSE</is_boosted>

    The feed was updated to derive the value from the website’s backend option.

    The implementation was based on the WordPress field:

    inspiry_remove_proppit_boost

    The client subsequently confirmed that the implementation was working correctly.

    This was an example of converting a WordPress backend workflow into XML business logic.

    Phase 6: Expanding the Feed With Additional Fields

    As the client’s XML requirements evolved, additional property information was added.

    One example was the Project Name field, which needed to appear in the Nestopa XML under the project tag.

    Another requirement was adding the property floor number.

    The client specified that the floor field should be optional and only appear when the value was available. The implementation connected the WordPress custom field inspiry_floor_level to the XML floor tag.

    The completed implementation was subsequently connected to both Proppit feed versions.

    Phase 7: Supporting Larger Property Inventories

    The number of properties eventually increased significantly.

    At one stage, the client requested a separate version of the Proppit feed containing approximately 550 properties, rather than applying the existing Proppit2 filtering rule.

    A second version of the feed was created:

    proppit_xml_feed_v2.xml

    This allowed the client to maintain different feed purposes without disrupting the original feed.

    As the property database continued to grow, pagination eventually became necessary.

    In August 2025, the client reported a critical issue with the HuaHinJapan Nestopa feed. The solution involved introducing pagination because the number of properties had increased.

    The proposed architecture was to combine the paginated results into a final static XML file periodically, allowing the receiving system to continue downloading a single feed.

    This provided a practical way to handle a growing property inventory while preserving the existing integration model.

    Phase 8: Video and Multimedia Support

    The project also evolved beyond basic property information.

    The client later requested support for YouTube videos in the Proppit XML.

    The feed was updated with a dedicated videos structure so that video URLs could be included separately from other virtual-tour information.

    The videos tag was subsequently added to both Proppit feed versions.

    This was particularly important for property syndication because multimedia information can be lost if it is not explicitly mapped into the destination XML format.

    Ongoing Troubleshooting and Maintenance

    The project continued to require occasional maintenance after the original development.

    Examples included:

    XML parsing issue

    In May 2024, the client’s development team reported an XML parser error indicating that the receiving system was not recognizing the beginning of the XML document.

    The feed was checked, and the existing Proppit feed was confirmed to be functioning from the website side.

    Feed availability issue

    In October 2024, the HuaHinJapan Nestopa feed generated an XML parsing error:

    xmlParseEntityRef: no name

    The client requested a correction, and the feed was subsequently restored so that it could be reprocessed by the receiving system.

    Property removal issue

    In January 2025, the client reported that a property whose Proppit option had been removed was still appearing in the XML feed.

    The feed was investigated and subsequently updated.

    These requests demonstrate that XML feed development is not always a one-time task. Changes to WordPress fields, property workflows, external requirements and third-party importers can require ongoing feed maintenance.

    The Technical Approach

    The overall solution evolved around several core principles:

    WordPress Property Data → Custom Mapping Logic → XML Generation → Dedicated Feed URL → External Property Platform

    The implementation included:

    • Custom WordPress plugins
    • Property-field mapping
    • Conditional property filtering
    • Property-status filtering
    • Custom XML tags
    • Image mapping
    • Price mapping
    • Video mapping
    • Backend checkbox integration
    • Multiple feed endpoints
    • Separate feed versions
    • XML troubleshooting
    • Pagination for larger inventories
    • Static feed generation for external consumption

    Rather than forcing every external platform to consume the same generic feed, individual XML structures could be adapted to the requirements of the receiving platform.

    Results

    The project grew from a single XML feed requirement into a long-running feed-development relationship covering multiple websites and property networks.

    Key outcomes documented in the project include:

    • Custom XML feed developed for a Houzez-based website
    • Reusable approach for multiple WordPress property websites
    • Proppit XML feeds
    • Nestopa XML feeds
    • Listanza XML feed
    • Multiple feed URLs for different integration requirements
    • Property-type mapping
    • Sold-property filtering
    • Proppit checkbox filtering
    • Approximately 550-property feed version
    • Image support
    • Price corrections
    • Project-name mapping
    • Floor-number mapping
    • is_boosted / DeBoost logic
    • YouTube video support
    • XML troubleshooting and maintenance
    • Pagination strategy for increasing property inventories

    Most importantly, the client repeatedly returned with new websites and new feed requirements. The conversation records show requests in 2023, 2024 and 2025, including a new Nestopa feed for Star Property and later work on the growing HuaHinJapan feed.

    Client Feedback

    The client repeatedly expressed satisfaction with the work.

    Examples include:

    “You are the best!”

    and later:

    “Ranjit, excellent work! Very happy again.”

    The client also described the XML work as “amazing” when referring to the Proppit implementation.
    These comments are particularly meaningful because they came after the initial project had evolved into ongoing technical support and increasingly complex feed requirements.

    Key Takeaways

    This project demonstrates that a real estate XML feed is more than simply converting WordPress posts into XML.

    A production property feed may need to handle:

    Data Mapping
    Different property platforms require different field names, structures and accepted values.

    Business Rules
    Only selected properties may need to be exported, while sold or deboosted properties may need different treatment.

    Multimedia
    Images, floor plans, virtual tours and YouTube videos may require dedicated XML structures.

    Data Accuracy
    Property prices and custom fields must remain synchronized with the WordPress backend.

    Scalability
    A feed that works with a small number of properties may require pagination or other optimization as the inventory grows.

    Third-Party Compatibility
    External platforms may introduce parser, accessibility or validation requirements that need investigation separately from the WordPress implementation.

    Conclusion

    What began as a small XML-feed project became a long-term technical collaboration involving multiple real estate websites, multiple property portals and numerous custom feed requirements.

    The project is a good example of how a well-designed WordPress XML feed can evolve alongside a real estate business—from a basic property export to a flexible syndication system capable of handling filtering, custom fields, multimedia, business rules and larger property inventories.

    Need a custom XML feed for your WordPress real estate website?

    I can develop custom XML, RSS or JSON feeds based on your WordPress fields, real estate plugin, API documentation and destination portal requirements.

  • Case Study 10: Building and Maintaining a Multi-Portal Real Estate Feed System for WordPress

    From One Custom XML Feed to a Multi-Portal Property Distribution System

    Real estate websites often need to distribute property listings to multiple portals, marketplaces, advertising platforms, and property aggregators. The challenge is that each platform can require a completely different XML, JSON, or CSV structure, while the source website may use a WordPress theme such as Houzez with custom fields, taxonomies, multilingual data, and different measurement formats.

    This case study describes a long-term project for a real estate website using WordPress, Houzez, WP All Import, and WP All Export.

    The project began with a relatively small requirement: fixing several fields in an existing WP All Export template for a property portal. Over time, the requirement expanded into a collection of custom feeds and ongoing feed maintenance.

    The initial client requirement included generating property feeds for external portals while continuing to use the existing WP All Export setup where possible. The client specifically needed help with image URLs, furniture/status values, and conversion of Thai land measurements such as square wah and rai into square metres.


    The Initial Challenge

    The client’s WordPress website contained property data in different formats.

    Some of the major challenges included:

    • Multiple property images needed to be output as individual URL elements.
    • Values such as “Furnished” needed to be cleaned before being sent to the destination portal.
    • Status values required transformation.
    • Land measurements could be stored as square wah, rai, or combined formats such as Rai-Ngan-Wah.
    • Property types needed to be mapped from WordPress parent/child categories into the destination portal’s terminology.
    • Virtual-tour information needed to be converted into the format required by the portal.
    • Different portals required different XML structures.

    The first approach was to see whether the existing WP All Export template could be modified rather than immediately replacing it with a custom plugin. A custom plugin was kept as the fallback option if the existing export system could not handle the requirements.

    This approach helped avoid unnecessary redevelopment and allowed the existing WordPress workflow to remain part of the solution.


    Phase 1: Proppit XML Feed

    The first major deliverable was a custom XML feed for Proppit.

    The feed was initially developed around the client’s existing property data and then refined based on real output and feedback.

    One important requirement was converting land measurements and removing decimal values from both land area and floor area. The feed was subsequently updated to round floorArea and plotArea.

    Complex Property Data Mapping

    The project involved more than simply copying WordPress fields into XML tags.

    For example, property types had to be interpreted according to the destination portal’s requirements. Later revisions included distinguishing between residential and commercial property types and mapping categories such as:

    • House
    • Condo
    • Townhouse
    • Shophouse
    • Office
    • Hotel
    • Factory
    • Retail space

    The client provided examples where a property could have multiple WordPress categories, requiring custom logic to determine which category should become the primary destination value.

    This illustrates an important aspect of custom feed development: source taxonomy and destination taxonomy rarely match one-to-one.


    Diagnosing WP All Export

    An interesting technical problem appeared when the WP All Export template worked in Preview mode but failed during the actual export.

    Testing showed that individual properties could be exported successfully and that reducing the number of XML tags allowed all 88 properties to process. The investigation indicated that the problem was likely related to the number of database queries and server resource limitations during the larger export.

    The recommendation was to investigate hosting limits such as maximum execution time and memory rather than incorrectly blaming the property data or custom functions.

    Meanwhile, the custom feed continued to provide a working alternative.

    This was an important distinction:

    A feed can be logically correct while the export mechanism used to generate it is still limited by server resources.


    Virtual Tour and Feed Formatting Fixes

    The Proppit feed later required the virtual-tour field to contain a direct link rather than embed code.

    The feed was updated accordingly.

    A further issue appeared where one property was receiving an incorrect virtual-tour base URL because different properties could use different virtual-tour providers.

    The feed logic was adjusted so that the property-specific virtual-tour URL could be handled correctly rather than applying one universal URL to every listing. The client confirmed that the corrected virtual-tour link was displaying properly.


    Expanding Into Multiple Feeds

    After the initial Proppit implementation, the project expanded significantly.

    The client requested additional feeds for other real estate platforms and advertising systems, including:

    • Thailand Housing Market
    • Baan Finder
    • Living Insider
    • Facebook Commerce Manager
    • Google-related feeds
    • Google Ads real estate CSV
    • Green-Acres
    • Nestopa
    • Propertyhub JSON
    • XML2U / Properstar-related distribution

    The client also maintained a Google Sheet to track the different feeds and requirements.

    This changed the nature of the work from a one-off XML customization into an ongoing multi-feed property distribution system.


    Google Feed and Local Inventory

    The Google feed required additional destination-specific fields and formatting.

    Updates included:

    • Resolving line-break formatting.
    • Removing an unwanted price prefix.
    • Adding store_code.
    • Adding quantity.
    • Creating a separate feed for local inventory because the destination required a different filename.

    The primary Google feed and Proppit feed were updated accordingly.

    A separate local inventory feed was subsequently created:

    google_local_inventory_xml_feed.xml

    The feed was also repaired after a PHP version change caused the XML feeds to stop working. The client had moved the hosting environment to PHP 8.2.4, and the feed plugins were upgraded to work with the newer environment.

    This demonstrated another recurring challenge with WordPress feed systems: hosting and PHP environment changes can affect custom feed code even when the property data itself has not changed.


    Facebook Commerce Manager Feed

    The project also expanded into a Facebook Commerce Manager XML feed.

    The feed required destination-specific handling for fields such as:

    • Property type
    • Pet policy
    • Area size
    • Neighborhood
    • Address information
    • Page ID
    • Security deposit
    • Utilities
    • Video

    The feed was revised several times based on Facebook’s validation feedback. Eventually, the video field was removed because the destination required a direct downloadable video URL rather than a normal video-hosting page URL.

    This is another example of why feed development is not simply an XML-generation exercise. The destination platform’s validation rules must be incorporated into the transformation logic.


    Baan Finder and Living Insider

    The next stage involved creating feeds for Baan Finder and Living Insider.

    Baan Finder required more complex property-type mapping.

    For example, a property categorized as commercial on the WordPress website could still need to be mapped to SHOPHOUSE, HOTEL, FACTORY, OFFICE, or another destination-specific type depending on information contained in the title or description.

    Living Insider introduced another layer of complexity around land measurements.

    Different fields were required depending on property type, including:

    • Square metres
    • Square wah
    • Rai
    • Ngan
    • Wah
    • Separate land-area components
    • Thai and English titles/descriptions
    • Condo-specific values
    • Multiple image URLs

    The client specifically identified cases where a value such as 174 square wah needed to be separated into the appropriate Rai/Ngan/Wah fields rather than simply placing the entire number into one field.


    Green-Acres Integration

    In 2025, another feed was added for Green-Acres.

    The feed was developed as a dedicated XML integration and subsequently updated with destination-specific fields including:

    • English title
    • Province
    • Sub-district/district
    • Property ID
    • Favorite status
    • Included fees
    • Agency rate type

    After submission, the destination platform reported a video URL problem. The video URL issue was diagnosed and corrected, after which the feed was reported as working.


    Long-Term Feed Maintenance

    One of the most interesting aspects of this project is that the work did not end after the initial feed development.

    As the website, destination platforms, hosting environment, and property data changed, new requirements continued to appear.

    Examples included:

    • New destination validation rules.
    • Changes to property classifications.
    • New PHP versions.
    • Different language requirements.
    • Changes to virtual-tour providers.
    • New property filtering requirements.
    • Feed performance concerns.
    • Listing limits imposed by external platforms.
    • Changes in external APIs.
    • New image-handling requirements.

    For example, in 2025 the client became concerned about the number of listings being refreshed on Properstar. A strategy was discussed to change only a limited number of property IDs per day instead of changing all IDs simultaneously. The proposed approach was approximately 15 listings per day for a 500-listing cycle.

    Later, Nestopa introduced a limit on the number of listings displayed under its free plan, leading to another requirement to prioritize particular property listings and control how frequently listing IDs changed.

    This shows how a feed system can evolve into a business-rule engine, rather than remaining a static XML generator.


    Feed Filtering and Automation

    As the number of feeds increased, the client wanted greater control over which properties were included.

    The proposed feed-management logic included filtering by:

    1. Property ID prefixes.
    2. Minimum sale price.
    3. Minimum rental price.
    4. Custom fields.
    5. Specific properties to include.
    6. Specific properties to exclude.
    7. Property status.
    8. Other feed-specific conditions.

    For example, a custom field such as fave_luxury = Yes could be used to select properties for a particular luxury-property feed.

    This approach provided much greater flexibility than hard-coding a completely different selection rule into every feed.


    Performance Became a Separate Challenge

    As the number of properties and feeds increased, feed-generation performance became an important concern.

    The client reported that some XML URLs could take several seconds to load and, in some cases, make the browser appear unresponsive.

    The website developer subsequently implemented Redis caching for the feed outputs. According to the project discussion, the site was generating approximately 15 XML/JSON feed outputs from more than 800 properties and many custom fields. The caching layer was intended to make repeated feed requests significantly faster and automatically refresh the cache after imports.

    The project therefore evolved beyond field mapping into considerations involving:

    • Database queries
    • Feed generation performance
    • Caching
    • Import/export workflows
    • Background processing
    • Feed refresh cycles

    Handling Large Feeds

    Another scalability issue emerged when Living Insider imposed a limit of 1,000 records per XML or CSV file.

    Instead of allowing the feed to grow indefinitely, the proposed solution was to introduce pagination so the listings could be divided into multiple parts.

    This is a useful example of designing around an external platform’s technical limitations rather than trying to force the destination to accept an oversized feed.


    Land Measurement Standardization

    The project eventually exposed a larger architectural issue: property data from different agencies did not use a consistent land-measurement format.

    Some providers supplied:

    • Square wah
    • Square metres
    • Rai
    • Rai + square wah
    • Rai + Ngan + square wah

    The client wanted to establish a consistent base measurement that could then be converted into other units.

    The requirement included creating import-side PHP logic so that incoming data could be normalized before it was used by the different feeds. The client specifically identified mixed-data providers such as Perfect Homes and Isara Real Estate as requiring special handling.

    This was an important shift from feed-level conversion to data normalization at the source/import level.

    Once data is normalized properly, multiple feeds can use the same underlying property values instead of implementing independent conversion logic repeatedly.


    Extending the System Beyond XML

    The project also expanded beyond traditional XML feeds.

    The client wanted to generate CSV data for a video-generation platform called CreateOMate, with the eventual goal of connecting the data to automation tools for social media publishing.

    The CSV needed to contain:

    • Individual photo URLs in separate columns.
    • A specific location structure.
    • Child property categories rather than parent/child category strings.
    • Conditional price formatting.
    • Potential HTML cleanup.

    The existing WP All Export template was modified using PHP functions to support these requirements.

    This demonstrated that the same WordPress property database could serve many different downstream purposes:

    Website → XML feeds → JSON feeds → CSV exports → advertising → social-media content


    What Made This Project Challenging?

    The biggest challenge was not creating XML syntax.

    The real difficulty was translating one complex real estate database into multiple destination-specific data models.

    The same property could require different:

    • Property types
    • Measurement units
    • Language values
    • Address structures
    • Image formats
    • Video formats
    • Status values
    • Price formats
    • Filtering rules
    • Required fields
    • Optional fields

    A field that worked correctly for one destination could be wrong for another.

    For example, HTML formatting could be useful in one feed but unacceptable in another. Similarly, a universal property-type rule could create incorrect classifications when a property had multiple categories.

    The project therefore required continuous validation against the actual destination requirements.


    Results

    The project evolved from a single custom XML-feed requirement into a long-term feed-development and maintenance relationship.

    The conversation records show work involving multiple destination feeds and formats, including Proppit, Google, Facebook, Thailand Housing Market, Baan Finder, Living Insider, Green-Acres, Nestopa, Propertyhub, and XML2U/Properstar-related integrations.

    The client repeatedly returned with additional feed requirements and described the collaboration positively. At one point, after multiple feed updates, the client stated that it was “great to have been able to make this contact” and asked to continue with additional feeds.

    The relationship subsequently continued into later years with additional feed modifications, filtering, performance, listing-refresh, and data-normalization requirements.


    Key Lessons From the Project

    1. Start With the Existing System

    The initial goal was not to replace WP All Export unnecessarily. The existing workflow was investigated first.

    This can reduce development time and preserve the client’s familiar workflow.

    2. Normalize Data Where Possible

    Repeated conversion logic across individual feeds can become difficult to maintain.

    Standardizing data during import can make downstream feeds significantly easier to manage.

    3. Every Portal Has Different Rules

    There is no universal “real estate XML feed.”

    Each destination may have different requirements for:

    • Categories
    • Measurements
    • Images
    • Descriptions
    • Languages
    • Videos
    • Pricing
    • IDs
    • Filtering

    4. Feed Development Requires Real-World Testing

    A feed can be valid XML and still be rejected by the destination.

    The project repeatedly required testing against actual portal feedback and adjusting the mapping accordingly.

    5. Scaling Changes the Architecture

    As the number of properties and feeds grows, performance becomes important.

    Caching, filtering, pagination, and controlled refresh cycles may become just as important as the XML mapping itself.

    6. Feed Maintenance Is Often More Valuable Than One-Time Development

    External platforms change their requirements.

    Websites change their data structure.

    Hosting environments change.

    New property sources are added.

    New portals are introduced.

    A feed that worked perfectly when created may require maintenance months or years later.


    Conclusion

    This project is a good example of how a seemingly small WordPress XML-feed request can evolve into a much broader data-integration system.

    What started as a request to fix several fields in a WP All Export template eventually involved custom XML, JSON, and CSV feeds; complex property-type mapping; Thai land-measurement conversion; multilingual data; virtual tours; image handling; filtering; pagination; caching; PHP compatibility; external-platform validation; and long-term maintenance.

    The central lesson is simple:

    A successful real estate feed is not just an XML document. It is a data-transformation layer between the property’s source database and the unique requirements of every destination platform.

    When that transformation layer is designed carefully, the same WordPress property database can support many different portals and marketing channels without requiring the property data to be manually recreated for every platform.