Pet Formation Tracker

Is US household pet formation improving or worsening?
Net Pet Formation Index (provisional)
computing…
As of
ShelterFlow z (50% weight)
Adoptions + RTO + transfers − surrenders − euthanasia − died
BreederFlow z (30%)
pending
AKC monthly registrations (ingester not yet wired)
CommerceFlow z (20%)
pending
Chewy + Trupanion quarterly (ingester not yet wired)

Unified shelter flow — all sources combined

ShelterFlow net (inflow − outflow) overlaid across all live sources. Use granularity to choose the cadence (best signal lives in different sources at different cadences).
Loading cadence-specific source list…

Source × cadence coverage

Which sources contribute data at which cadence, and how fresh.

National adoption trend (Y/Y)

Best estimate of US national adoption volume by month, scaled to national via SAC coverage weights. ShelterFlow component breakdown over time.

Methodology & confounders

How NPFI is constructed and what to watch for.

NPFI = 0.50·z(ShelterFlow) + 0.30·z(BreederFlow) + 0.20·z(CommerceFlow). Each component z-scored against its 36-month rolling history.

ShelterFlow = (adoption + return-to-owner + transfer-out) − (owner_surrender + euthanasia + died_in_care). Stray intake is excluded from outflows — 34% of strays are returned to owner, so counting them would double-count re-formed relationships.

Cadence honesty: a national daily census does not exist. The dashboard shows daily ground-truth from ~5 city open-data feeds (≈0.5% of US flow) as a leading indicator; the proper national cadence is monthly (SAC dashboard). 24Pet ShelterWatch weekly (~35% of US shelter pop) is being integrated to give us a fast national cadence.

Confounders: shelter data captures ~15-30% of total pet flow (breeders + private sales are invisible); stray intake is dirty; large seasonal patterns (kitten season, post-holiday returns); reporting lag varies; capacity censoring during shelter overcrowding.

National annual intakes & outcomes live

From shelteranimalscount.org · ForecastVis/SummaryBars Tableau workbook · 2016-2025 reported as of 2026-04
Source: Shelter Animals Count national dashboard. Tableau bootstrap parsed via the verified 2-step recipe — see explore-the-data/data-dashboards.

State drill-down pending

YoYMainMap workbook holds 51-state × 5-metric × 5-year data. Column-to-label mapping is the next step.
State-level extraction queued — Tableau presModel→dataDictionary alias mapping needs one more pass. Raw data is fetched (4.3 MB chunk per pull).

State-level cumulative intake live

From the BFAS Tableau workbook PLDRevamp_v1_7. Sum of per-shelter intakes within the 12-month BFAS reporting window per state.

State drill-down live

Click a state row for top-20 shelter intake ranks. BFAS reports per-shelter; names and intakes are sorted independently by Tableau so we show ranks (not name-to-intake joins) until aliasIndices parsing is added.

Shelter directory live

All 3,888 shelters BFAS tracks (Tableau ShelterDashboard). Search by name.

24Pet ShelterWatch + PetPoint Monthly pending

From 24pet.com/resources/data · weekly + monthly national aggregates · ~1,191 shelters covering ~35% of US shelter pop
Agent F is mapping the 24Pet ShelterWatch data products right now. Once the URL pattern + PDF parser is verified, this tab will populate with the weekly national intake / adoption / save-rate trend with Y/Y deltas — the closest thing to a national weekly cadence pet-flow signal that exists.

Weekly vet-visit + revenue YoY live

From veterinaryanalytics.com · ~6,500 US companion-animal clinics · Vetsource/AVMA co-branded weekly tracker. Visit YoY% is the cleanest free existing-pet-stock activity proxy. New-patient YoY is paywalled.
Revenue and visits diverging — revenue is up modestly while visits are down — means clinics are charging more per visit (vet inflation) while existing pets are coming in less often. Could signal cost-of-living pressure on pet healthcare.

Detail metrics — last 12 weeks

Heartworm, flea/tick, services, products preventive-care YoY% breakdown.

Weekly data table

All weeks captured, all metrics. Reverse chronological.

Live national adoptable inventory live

From psl.petfinder.com/graphql (unauthenticated backend). Daily snapshot of adoptable pets across ~14,000 partner organizations. Bypasses Imperva bot detection via curl_cffi Chrome TLS impersonation.

Inventory composition

What's available right now nationally. Compare to BFAS's 26.7M cumulative shelter intake — Petfinder shows the ~410K currently waiting for adoption.

Daily snapshot history

Trend of available counts over time (will fill in as daily runs accumulate).

Net household-pet inflow over time live

ShelterFlow = (adoption + rto + transfer_out) − (owner_surrender + euthanasia + died_in_care). Composite from 5 municipal feeds.
Stray intake is excluded from outflows — 34% of strays are returned to owner; counting them would double-count re-formed relationships. Partial periods are muted-color.

Component breakdown — latest month

Source coverage & freshness