BuyNJHome / Case study
Two MLS feeds.
One property platform.
BuyNJHome brings New Jersey property listings into a Drupal website through CJMLS and GSMLS integrations, connecting structured listing data with search, city browsing, and agent enquiries.
The challenge
Different feeds. A consistent experience.
Property data arrives in different formats, with changing prices, statuses, descriptions, and photos. A useful property website needs to turn those records into consistent pages that visitors can search and understand.
The technical challenge was to integrate two MLS sources without mixing their records, map their fields into Drupal, and handle listing and image updates through a repeatable import workflow.
The integration
Two routes into Drupal
Separate source adapters feed Drupal queues, where listing records and managed images become content for the website.
CJMLS
The Bridge REST listings API is read through Drupal’s HTTP client, using paginated requests to collect changed records.
GSMLS
PHRETS connects to the RETS feed and queries its residential, rental, multifamily, land, commercial, and business resource classes.
Drupal queues & content
Queue workers map source data to property fields and managed images. Provider and listing IDs identify the correct record; failed work remains available for retry.
Search. Explore. Enquire.
Drupal Views and custom Twig templates present searchable listings, city collections, photo galleries, property details, and an agent contact form.
The visitor experience
From a broad search to a specific home
Structured property content supports several ways to explore the same inventory.
Search with useful filters
Visitors can narrow listings by location, property type, budget, bedrooms, bathrooms, and home style through a custom Views search interface.
Explore by community
City pages organize listings around New Jersey communities, with links between city collections and individual properties.
Understand the property
Property pages bring price, status, key facts, photos, descriptions, taxes, and fees into a responsive layout.
Contact the agent
A property enquiry Webform and direct phone links give visitors a next step from the listing page, including a mobile contact shortcut.
Behind the pages
Built around changing inventory
Incremental imports
Modification timestamps help avoid unnecessary reimports. Separate queues and provider-aware lookups keep CJMLS and GSMLS processing distinct, even when source identifiers overlap.
Managed listing photos
Images use Drupal’s managed files, validated downloads, and source-specific directories. Cleanup checks current and historical references before removing files; missing RETS photos do not have to block a listing.
Inventory-aware SEO
Custom indexing rules distinguish available inventory from completed listings, empty city collections, and filtered searches. Canonicals, metadata, structured data, and sitemap rules support clearer discovery.
The implementation connects two MLS sources to a shared Drupal content model, with reusable listing views, managed galleries, city browsing, and property enquiries. It shows how custom integration code and Drupal’s content tools can work together in a real estate application.
We can help assess your Drupal platform, source APIs, content model, and visitor journeys. Start with the systems you need to connect and the experience you want to create.