dbt, for everything inside your warehouse. Because models point at each other with ref(), dbt knows the dependencies without you writing them down. dbt docs generate followed by dbt docs serve gives you a clickable graph from source to mart. dbt ls --select stg_ga4__events+ lists everything downstream of that model on the command line, which is what you want before you break something.
BigQuery, for what happens outside dbt. Query history in INFORMATION_SCHEMA.JOBS shows which tables were read by which queries, including the ones your BI tool sends. The history only goes back a limited period, so treat it as an investigation tool rather than an archive.
SELECT
user_email,
COUNT(*) AS jobs,
MAX(creation_time) AS last_seen
FROM `region-eu`.INFORMATION_SCHEMA.JOBS,
UNNEST(referenced_tables) AS t
WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND t.dataset_id = 'marts_marketing'
AND t.table_id = 'mart_channel_performance'
GROUP BY user_email
ORDER BY jobs DESC
Google Cloud can also record lineage for BigQuery through Dataplex, which captures the relationships between tables for you.
The last step to the site or app: your measurement plan. No tool knows the link between the button on your checkout page and the event that follows from it. That lives in your tagging documentation, or it lives nowhere.