Standards

    PawPlacer pattern

    Embeds an organization's live PawPlacer pet listings via their embed script — the PawPlacer equivalent of the Petfinder scroller.

    Example

    organizationId is the only required prop — PawPlacer's own script renders that organization's real listings into the mounted <div>. It's always PawPlacer's own live widget, or nothing — there's no local fallback-data mode. The illustrative sibling URLs below demonstrate the "Or view all pets on..." cross-link line shared by every adoptable-pets embed.

    PawPlacer Listings

    Or view all pets on Adopt-a-Pet, GetBuddy, PawPlacer or Petfinder.

    Filtered to one species

    Pass species to filter the embed (mirrors PawPlacer's own { species: 'dog' } options argument).

    PawPlacer Listings

    Or view all pets on PawPlacer.

    Standard

    - On the client, lazily injects PawPlacer's embed/component script (once per page, shared across multiple instances) and calls their global embedPawPlacerComponent('pets', organizationId, targetId, options). The mount target uses a generated unique DOM id (useId()-based) so multiple instances never collide.

    - `listingsUrl` defaults to https://www.pawplacer.com/shelters/{organizationId} — PawPlacer's equivalent of a Petfinder org profile page or an Adopt-a-Pet shelter page. Override only if the org's real listings page differs from that pattern.

    - Cross-links to petfinderUrl / adoptAPetUrl / getbuddyUrl render as "Or view all pets on X, Y, or Z." — the same sentence structure already used by PetfinderScrollerEmbed, AdoptAPetEmbed, and GetBuddyEmbed, which all accept a pawPlacerUrl in return, so every adoptable-pets embed can cross-link to every other one.

    - Wired into AdoptablePetsSection as mode "pawplacer" (and as one of the feeds shown in "hybrid" mode), matching how getbuddy is wired.

    - Component: `template/src/components/patterns/PawPlacerEmbed.tsx`

    - Not yet wired into any real site — built as fleet-wide tooling ahead of a confirmed org account. The organization ID used above is illustrative, not a real account.