Property Inquiry
Also known as: Generate Lead, Listing Inquiry, Lead Submission, Contact Agent Request, Property Enquiry
Real-estate specialisation of the GA4 generate_lead event, fired once when a prospective buyer or renter successfully submits an inquiry on a listing, whether that is a request for information, a viewing request, a callback request or an offer enquiry. It is the primary lead-capture conversion for portals and brokerage sites, and it links listing discovery to the agent pipeline through the property, the listing market and the inquiry intent.
Event Serialization
alwaysBusiness Use Case
1️⃣ Performance Marketing managers review inquiries by lead_source and campaign every week. When cost per inquiry for a paid channel rises more than 20% above its 4-week average, they move budget to the channels delivering viewing requests at lower cost. 2️⃣ Listing Operations reviews each listing's views against its inquiries every day. When a listing reaches the market's median views but gets no inquiries within 7 days, they send a request to the listing agent to refresh the photos, description or price. 3️⃣ Sales leadership at the brokerage checks the daily inquiry volume for each listing_location. When a market's viewing requests go above the capacity of the agents assigned to it, they reassign leads through round-robin routing or add agents to that territory. 4️⃣ Product managers run a funnel review whenever a listing detail page release ships. If inquiries per listing detail page view for that page template drop by more than 10% against the previous release, they roll the change back and start an A/B test on form field count and CTA copy.
Business Criticality
High
Journey / Navigation Area
Discovery
Owning Function
Marketing
Scope
Event
Calculation Notes
1️⃣ Fire only on a server-confirmed submission (HTTP 2xx or a returned inquiry_id), never on button click or on a client-side validation failure, so that spam-blocked, CAPTCHA-failed and rejected submissions are excluded. 2️⃣ Deduplicate on inquiry_id; where that is missing, collapse repeat hits with the same user (user_pseudo_id in GA4, ECID in AEP) + property_id + inquiry_type + form_id that arrive within 30 minutes of the previous matching hit, which removes double-clicks, page refreshes and thank-you page reloads. 3️⃣ Multiple inquiries on different properties within one session are counted separately. Session-level reporting uses the standard 30-minute inactivity timeout, and the date is the event timestamp in the property's reporting time zone. 4️⃣ Exclude internal and test traffic: in GA4, hits with traffic_type = internal or debug_mode set; in AEP, hits from the brokerage office IP prefixes; in both, hits on hostnames matching the staging / stage / qa / uat / test pattern. Backend test-lead flags (is_test in the lead-routing system) are applied in the CRM-reconciled view, not in these queries. 5️⃣ Leads arriving by phone, email or walk-in are out of scope for this event. Click-to-call and click-to-email taps are tracked separately and must not be sent as generate_lead, otherwise channel lead counts double. 6️⃣ value is the configured expected lead value for the inquiry_type and listing_type (for example, a sale viewing request is worth more than a rental information request), never the asking price. Omit value and currency together when no value model exists. 7️⃣ No contact details (name, email, phone, message text) may be sent in parameters. The CRM join to agent outcomes uses inquiry_id only, which keeps the event non-PII.
Platform Events
| Platform | Event |
|---|---|
| Google Analytics 4 | generate_lead |
| Adobe | lead.submit |
Data Mappings
W3 Data Layer
{
"digitalData": {
"page": {
"pageInfo": {
"pageID": "listing-detail-MLS-78451236",
"pageName": "real-estate:listing-detail",
"sysEnv": "desktop"
},
"category": {
"primaryCategory": "Real Estate",
"subCategory1": "Listing Detail",
"pageType": "listing_detail"
}
},
"event": [
{
"eventInfo": {
"eventName": "generate_lead",
"eventAction": "submit_form",
"type": "interaction",
"timeStamp": "2026-09-16T14:32:05.000Z"
},
"category": {
"primaryCategory": "Conversion",
"subCategory1": "Lead"
},
"attributes": {
"inquiryId": "INQ-20260916-000123",
"propertyId": "MLS-78451236",
"propertyType": "apartment",
"listingType": "sale",
"listingLocation": "austin_downtown",
"inquiryType": "schedule_viewing",
"formId": "listing_sidebar",
"leadSource": "listing_page",
"value": 150,
"currency": "USD"
}
}
]
}
}GA4 Data Layer
{
"event": "generate_lead",
"inquiry_id": "INQ-20260916-000123",
"property_id": "MLS-78451236",
"property_type": "apartment",
"listing_type": "sale",
"listing_location": "austin_downtown",
"inquiry_type": "schedule_viewing",
"form_id": "listing_sidebar",
"lead_source": "listing_page",
"value": 150,
"currency": "USD"
}Adobe Client Data Layer
{
"event": "lead.submit",
"eventInfo": {
"eventName": "lead.submit",
"eventAction": "submit_form",
"unifiedEvent": "generate_lead"
},
"lead": {
"inquiryId": "INQ-20260916-000123",
"inquiryType": "schedule_viewing",
"formId": "listing_sidebar",
"leadSource": "listing_page",
"value": 150,
"currency": "USD"
},
"property": {
"propertyId": "MLS-78451236",
"propertyType": "apartment",
"listingType": "sale",
"listingLocation": "austin_downtown"
}
}XDM Mapping
{
"eventType": "leadOperation.newLead",
"timestamp": "2026-09-16T14:32:05.000Z",
"web": {
"webPageDetails": {
"name": "real-estate:listing-detail"
},
"webInteraction": {
"name": "lead.submit",
"type": "other"
}
},
"_tenant": {
"inquiry": {
"inquiryId": "INQ-20260916-000123",
"inquiryType": "schedule_viewing",
"formId": "listing_sidebar",
"leadSource": "listing_page",
"leadValue": 150,
"currencyCode": "USD"
},
"property": {
"propertyId": "MLS-78451236",
"propertyType": "apartment",
"listingType": "sale",
"listingLocation": "austin_downtown"
}
},
"_experience": {
"analytics": {
"event1to100": {
"event1": {
"value": 1
}
},
"customDimensions": {
"eVars": {
"eVar10": "MLS-78451236",
"eVar11": "schedule_viewing",
"eVar12": "sale",
"eVar13": "austin_downtown",
"eVar14": "listing_sidebar",
"eVar15": "listing_page"
}
}
}
}
}Parameters
{
"value": "number - Expected lead value from the lead-value model for this inquiry_type and listing_type; never the asking price",
"form_id": "string - Identifier of the inquiry form or placement, e.g. listing_sidebar, gallery_modal, agent_profile",
"currency": "string - ISO 4217 currency code of value, e.g. USD; required whenever value is sent",
"inquiry_id": "string - Opaque inquiry reference returned by the lead backend; used for deduplication and the CRM outcome join, never derived from contact details",
"lead_source": "string - Surface that produced the lead: listing_page, search_results, saved_search_alert, agent_page",
"property_id": "string - Listing or property identifier (MLS number or internal listing ID)",
"inquiry_type": "string - Intent of the submission: request_info, schedule_viewing, request_callback, make_offer",
"listing_type": "string - Transaction type of the listing: sale, rent, new_development",
"property_type": "string - Property classification, e.g. apartment, detached_house, townhouse, land, commercial",
"listing_location": "string - Market of the listing at city, neighbourhood or postcode-district level, e.g. austin_downtown"
}Source Data
Digital Analytics (GA4)
Dependencies
Prerequisite: List the dependencies required for this Event
Report Attributes
Property Type Listing Type (Sale / Rent) Listing Location Inquiry Type Lead Source Inquiry Form Device Category Session Default Channel Group Campaign
Segment Eligibility
true
Governance
Dimensions
Related Dimensions
Derived Dimensions
Derived Entities
Derived Metrics
Governance & Metadata
GitHub
catalog/events/property-inquiry.yml