ParcelFact is a property data platform built for US land investors who need fast, accurate parcel records during deal evaluation. I built the plugin that powers the platform's data layer: a custom WordPress REST API that proxies Core*** property lookups, manages user credit balances, handles owner contact via Twilio SMS, and stores aerial imagery in AWS S3 - all behind a clean parcel-facts/v1 API namespace. The frontend calls the plugin. The plugin talks to the third-party APIs. Credentials never leave the server.
Property searches run through two distinct code paths. An APN search is definitive - the plugin sends the FIPS county code and APN to Core*** and returns the parcel record. An address search requires geocoding and may return multiple candidate parcels, so the frontend receives an array and prompts the user to confirm which property they want. Before either search reaches Core***, the plugin checks a local cache table: if a previous user has already looked up the same parcel, the cached result comes back without consuming a credit or making an external API call. Popular parcels in active land markets get queried repeatedly - the cache keeps those lookups free.
FIPS county coverage is handled explicitly rather than returning a generic error. Core*** does not cover every US county. When a lookup returns empty, the plugin falls back to Core***'s place API, extracts the county name from the geocode response, checks it against a FIPS unsupported-county table, and returns a named error: "Henderson County, TX is not yet covered." Users get actionable information. They know the platform doesn't cover that county, not that their search failed.
The Twilio SMS integration lets investors contact property owners directly from within the platform. The contact_owner endpoint accepts a parcel ID, retrieves owner contact information from the Data*** API, and dispatches a templated text message through Twilio. For land investors running off-market acquisition campaigns, direct owner outreach is a core workflow step - the integration removes the context switch to a separate SMS tool.
Stripe handles the metered credit system. Users purchase credit bundles, credits are stored in user meta and decremented on each successful lookup, and Stripe webhooks update credit allocations when subscriptions are upgraded, cancelled, or renewed. Restrict Content Pro manages the subscription tiers that determine each user's credit allocation and data access level. AWS S3 stores aerial imagery fetched from Google Maps Static API per parcel, with signed URL generation for secure retrieval.
Seven external services, one coherent plugin. The architecture gives PropTech teams and real estate data businesses a clean pattern for proxying commercial property APIs behind a WordPress REST layer with metered billing, result caching, and graceful coverage-gap handling.