- Rows live in
wp_velocityforge_interactions, separate fromwp_velocityforge_page_profiles, because a page profile answers “how fast is this URL” and an attribution answers “which element is slow” — the same element appears on a hundred URLs. - The number on a card is a 75th percentile per element over 28 days, and it is only shown once an element has at least three measurements. A p75 of two measurements is the larger of two under a borrowed name.
- The plugin behind the selector is resolved in three steps, most-informed first: a short prefix table, the site’s own enqueued handles read from the asset inventory, and the
velocityforge/interaction_ownerfilter. Where it does not know it says “theme”, or nothing — never a confident wrong name. - The LCP row links the file only when the host matches your own site. A resource URL arrives through an unauthenticated beacon, so a stranger’s link is named but not made clickable.
- CLS is measured but not written to this table: a layout shift is not a duration, so every phase column would be NULL under a heading that says where the time went.
- Retention: exactly the window the page profiles get, pruned by the same daily GC in the same run — one number, on purpose, not two. The two tables describe the same visits, so a site that kept thirty days of measurements and ninety days of the selectors those measurements pointed at would be keeping ninety days of measurements under another name.
uninstall.phpdrops the table with the rest, on the same opt-in.