Your entire DMARC pass hangs on two DKIM CNAME records
On shared IPs, HubSpot always sets the Return-Path to a subdomain of hubspotemail.net, so SPF passes for HubSpot's domain and can never align with yours. DMARC compliance therefore rests entirely on the two DKIM CNAME records created when you connect your sending domain under Settings > Content > Domains & URLs > Email Sending. If those CNAMEs are missing, deleted, or pointing at the wrong target, every campaign fails DMARC outright. Confirm the DKIM d= domain on a live send, not just in HubSpot's UI.