Skip to Content
API v1IntegrationsEntrataEntrata Integration

Entrata Integration

Overview

Entrata is a property management system used for US properties. The integration handles:

  • Tour (viewing) scheduling and lead creation
  • Available tour time slot retrieval
  • Property data synchronization

Files

FilePurpose
api/propertyFeed/utils/entrata/leads.phpTour time slots and lead submission
api/propertyFeed/utils/entrata/validation.phpInput validation
api/propertyFeed/utils/entrata/constants.phpConfiguration constants
api/external/entrata/index.phpEntrata webhook/callback handler
api/getEntrataTourTimes.phpEndpoint to fetch tour times

Authentication

Entrata uses OAuth2 with client credentials:

ENTRATA_CLIENT_ID # e.g., "873cf1d6fadf091f38d4.myhousr" ENTRATA_CLIENT_SECRET # Stored in AWS Secrets Manager

Different client IDs are used for sandbox vs production.

Tour Time Slots

Fetching Available Times

The leads.php file provides a function to retrieve available tour slots for a property:

function getTourTimeSlots($subdomain, $accessToken, $propertyId, $requestedMonth, $tourType = null)

Parameters:

  • $subdomain - Client-specific Entrata subdomain
  • $accessToken - OAuth bearer token
  • $propertyId - Entrata property ID
  • $requestedMonth - Format "MM-YYYY"
  • $tourType - AGENT_GUIDED, SELF_GUIDED, or VIRTUAL_GUIDED (defaults to AGENT_GUIDED)

Returns an associative array with dates as keys and arrays of start times as values, or TOURS_NOT_SUPPORTED for properties without tour scheduling (error 314).

Timezone Handling

Entrata returns times in the property’s local timezone. The integration converts all times to America/Chicago:

function convertToChicagoTime($timeString)

Supports MDT/MST, CDT/CST, EDT/EST, PDT/PST timezone abbreviations.

Lead Submission

When a US user requests a viewing for an Entrata-managed property:

  1. requestViewing.php checks if the house is an Entrata property
  2. Calls sendLeadToEntrataFromViewing() to submit the lead
  3. If successful, the viewing request is created locally with external_id (Entrata lead ID) and external_type = "ENTRATA"
  4. The viewing status is set to ACCEPTED (since Entrata handles the confirmation)

Nginx Routing

Entrata webhooks have special routing in deploy/deploy.conf:

location /api/external/entrata/ { try_files $uri $uri/ /api/external/entrata/index.php$is_args$args; }

This routes all Entrata callbacks to index.php which acts as a controller.

Property Feed

Entrata properties are also synced via the property feed system. The api/propertyFeed/entrata/ directory (referenced within propertyFeed/utils/entrata/) handles property data synchronization.

Demo Environment

In the demo environment (APP_ENV === 'demo'), Entrata lead submission is bypassed:

if ($_ENV['APP_ENV'] === 'demo') { $entrataLeadResult = true; }
Last updated on