Website embed
Embed available units on your marketing site with a copy-paste iframe or the React SDK.
Show live available units (and optional apply) on your own website while EchoPM stays the source of truth for listings, screening, and leases.
Marketing: Bring your own website · npm: @echopm/react
Choose a path#
| Path | Best for | Setup |
|---|---|---|
| Iframe | WordPress, Squarespace, Webflow, static HTML | Copy snippet from Manager — no npm |
React SDK (@echopm/react) | Next.js / React marketing sites | Install package + publishable key |
Both use the same publishable embed key (Property → Listing → Website embed). These are safe to put in HTML — unlike REST/MCP secrets. Restrict them with allowed domains in production.
Older embed keys that start with ecpm_embed_pk_ still work; create a new key when you rotate.
1. Create a publishable key#
- Sign in to Manager
- Open the property → Settings → Listing
- Under Website embed, create a key
- Set allowed domains (e.g.
myproperty.com,*.myproperty.com) - Copy the key once — it is only shown at creation
The property must be searchable and have available units for embeds to show inventory.
2a. Iframe (fastest)#
Paste the snippet from Manager, or use:
<iframe
src="https://www.echopm.app/embed/units?propertyId=PROPERTY_ID&key=YOUR_EMBED_KEY"
title="Available units"
style="width:100%;min-height:560px;border:0;border-radius:12px;"
loading="lazy"
></iframe>
Optional: apply=0 hides apply controls.
Preview / playground (after you have a key):
https://www.echopm.app/embed/demo?propertyId=…&key=…
2b. React SDK#
By default, UnitList / PropertyPage* iframe the same production listing UI as the EchoPM property page (Apply/Schedule run inside the iframe with EchoPM sign-in). Use mode="client" only when you need a custom layout against the embed API.
Install
npm install @echopm/react
# or
pnpm add @echopm/react
Peer dependencies: react and react-dom (18+). Import styles when using mode="client" or building blocks:
import "@echopm/react/styles.css";
Minimal example
import { EchoPMProvider, UnitList } from "@echopm/react";
export function AvailableUnits() {
return (
<EchoPMProvider publishableKey={process.env.NEXT_PUBLIC_ECHOPM_EMBED_KEY!}>
<UnitList propertyId="YOUR_PROPERTY_ID" showApply />
</EchoPMProvider>
);
}
apiBaseUrl defaults to https://www.echopm.app. Only set it for local/staging EchoPM.
Useful exports
| Export | Purpose |
|---|---|
EchoPMProvider | Key, API origin, analytics |
UnitList | Production OpenUnits via iframe (default) |
PropertyPageSimple / PropertyPageFull | Production listing layouts via iframe |
PropertyCard / PropertyList | Search-result cards and lists |
SearchWidget | Org-scoped property search |
UnitCard / LeadForm / CTAs | Building blocks (mode="client" — import styles) |
PoweredBy | Attribution |
See React SDK for hosted pages, search cards, mode="client", and theme.
Security notes#
-
Use publishable embed keys in browsers — never REST/MCP machine secrets
-
Always set allowed domains for production keys
-
Apply still signs in on EchoPM; applicants return to your embed URL after auth
Next#
- React SDK —
@echopm/react0.4+ - Bring your own website — product page
- Beta scope — REST/MCP vs embed
- Manager property Website embed panel for live snippets
