Skip to content

Address Entry

The AddressEntry component provides a complete address input experience with real-time address suggestions, manual entry fallback, and validation.

AddressEntry component AddressEntry with suggestions

Basic usage

import {
OpendoorProvider,
AddressEntry,
} from '@opendoor/partner-sdk-client-react';
import { OpendoorClient } from '@opendoor/partner-sdk-client-js-core';
const client = new OpendoorClient({ baseURL: '/api/opendoor/v1' });
function App() {
return (
<OpendoorProvider client={client}>
<AddressEntry
onAddressSelect={(address) => {
console.log(address.street1, address.city, address.state);
}}
/>
</OpendoorProvider>
);
}

Props

PropTypeDefaultDescription
onAddressSelect(address: Address) => void | Promise<void>RequiredCalled when user selects an address
appearanceOpendoorAppearanceDefault themeVisual customization
enableAddressSuggestionsbooleantrueEnable address suggestions
debounceMsnumber300Debounce delay for address suggestions
disabledbooleanfalseDisable all interaction
placeholderTextstring"Enter your home address"Input placeholder
buttonTextstring"Get cash offer"Submit button text
showButtonbooleantrueShow integrated submit button
buttonIconReactNodeArrow iconCustom button icon
inputIconReactNodeNoneIcon inside the input
manualEntryTextstring"Enter address manually instead"Manual entry link text
showAttributionbooleanfalseShow “Powered by Opendoor” below input

Callbacks & Events

CallbackTypeWhen it fires
onAddressSelect(address: Address) => void | Promise<void>User selects an address
onReady() => voidComponent mounted
onChange(address: Partial<Address>) => voidAny field changes
onAddressSuggestionsStart(query: string) => voidAddress suggestions API call starts
onAddressSuggestionsComplete(suggestions: Address[]) => voidAddress suggestions results received
onValidationError(error: string) => voidManual submit validation fails
onError(error: Error) => voidAny error occurs

How address suggestions work

  1. User types at least 3 characters
  2. After the debounce delay, the component calls client.getAddressSuggestions(query)
  3. This request goes to your backend → server SDK → Opendoor’s address service
  4. Suggestions appear in a dropdown
  5. User clicks a suggestion → onAddressSelect fires with the full Address

If no suggestions match, the component shows a “Enter address manually” link that reveals a form with street, city, state, and ZIP fields.

After address selection

When onAddressSelect fires, check if the address needs a unit number before creating the offer:

const handleAddressSelect = async (address: Address) => {
// Check if the building has multiple units
const { requiresUnitNumber } = await client.checkAddressUnit(address);
if (requiresUnitNumber) {
// Show AddressUnitConfirmation to collect unit/apt/floor
setNeedsUnit(true);
} else {
// Proceed to create offer
const offer = await client.createOffer({ address });
}
};

See the AddressUnitConfirmation guide for the full flow.

Attribution

Show a “Powered by Opendoor” badge below the component with the showAttribution prop:

<AddressEntry showAttribution={true} onAddressSelect={handleAddressSelect} />

The attribution text and logo color come from the colorTextTertiary theme variable.