HelpDatabase Reference › Ancestry_MatchProfile

Ancestry_MatchProfile Table

The Ancestry_MatchProfile table holds the personal profile details for each matched person on A* — their name, the name of whoever manages their test, their gender, and their profile photo. There is one row per matched person, keyed on matchGuid alone.

Why this table exists: On 2026-04-30, A* changed the match-list response and removed the per-match profile fields (matchProfile, adminProfile, photoUrl, and gender) from it. Those values now arrive from a separate per-match endpoint, /discoveryui-matches/cluster/api/profileData/{kit}, and the client stores them here. Because a person’s name and photo describe them — not the kit that happens to be viewing them — the row is keyed on matchGuid alone rather than on the testGuid + matchGuid pair used elsewhere. See the FAQ on A* match names for the user-facing side of this change.

The new columns replace fields that previously lived on Ancestry_matchGroups:

  • matchName replaces matchGroups.matchTestDisplayName
  • managedName replaces matchGroups.matchTestAdminDisplayName
  • photoUrl replaces matchGroups.userPhoto
Backward compatibility: Report and export queries do not assume this table is populated. They COALESCE the new profile columns with the legacy matchGroups columns — for example coalesce(mp.matchName, mg.matchTestDisplayName) for the name, and coalesce(mp.photoUrl, mg.userPhoto) for the photo — so databases gathered before the split, and matches whose profile data has not yet been fetched, still resolve a usable value.

Column Reference

ColumnTypeSourceDescription
Idint (PK)AutoAuto-incrementing primary key
matchGuidstringProfile Data endpointThe matched person’s GUID. Unique — one row per matched person. Uppercased on write.
matchUcdmidstringProfile Data endpointThe matched person’s user ID (UCDM id)
matchNamestringProfile Data endpointMatch’s display name. Replaces matchGroups.matchTestDisplayName.
managedUcdmidstringProfile Data endpointUser ID of the account that manages the match’s test
managedNamestringProfile Data endpointDisplay name of the account that manages the match’s test. Replaces matchGroups.matchTestAdminDisplayName.
displayGenderstringProfile Data endpointMatch’s gender as reported by A*
photoUrlstringProfile Data endpointURL to the match’s profile photo. Replaces matchGroups.userPhoto.
created_datestringAppWhen the row was first created. Set on first insert and preserved on later refreshes.

How It’s Populated

During an A* gather, the match-list pages no longer carry profile details. Instead the browser also calls the profile-data endpoint, /discoveryui-matches/cluster/api/profileData/{kit}, which returns a JSON object keyed by matchGuid — one entry per match on the page. The client’s response handler walks each entry and upserts a row here, copying matchUcdmid, matchName, managedUcdmid, managedName, displayGender, and photoUrl straight from the payload. Match GUIDs are uppercased before storage so they join cleanly against Ancestry_matchGroups.

Data Preservation Rules

Writes go through an upsert that is keyed on matchGuid:

  • If a row already exists for the match, its existing Id is reused and the record is replaced in place — the table never accumulates duplicate rows for the same person.
  • created_date — the original value is preserved on every refresh; only a brand-new row gets a fresh timestamp.
  • Rows with a blank or missing matchGuid are skipped.

Related Tables

  • Ancestry_matchGroups — the primary match table. Joined on matchGuid; report queries COALESCE this table’s profile columns over the legacy matchGroups columns.
  • Ancestry_matchDetail — supplemental per-match detail (shared-segment count, member-since year, admin id) used as a further fallback in report queries.
  • Ancestry_ICW — In Common With data; profile names and photos are resolved through this table when displaying shared matches.