Our links break in Outlook because HubSpot rewrites every one through hubspotlinks.com
With open and click tracking on (the default), HubSpot rewrites every link and CTA button through its shared hubspotlinks.com redirector and injects a tracking pixel. Corporate Outlook filters, secure email gateways, and ad blockers repeatedly flag that shared domain, so buttons get stripped, links break, or the message is pushed to spam.
The fix
Route tracked links through a subdomain of your own domain instead of the shared redirector. First connect that subdomain under Settings > Content > Domains & URLs and assign it the Email (web version) content type. Then go to Settings > Marketing > Email > Tracking tab, click Edit next to Click tracking domain, and select your connected domain. This is available on all product tiers. If you cannot connect a custom domain, turn off Track clicks in HTML emails under the same Tracking tab so links point straight at your real URLs.
Apple Mail opens fooled HubSpot into suppressing people who were actually reading us
Apple Mail Privacy Protection pre-loads tracking pixels through Apple proxies, and HubSpot's bot filtering strips those proxy opens from reports. Apple Mail readers who never click then accumulate as unengaged, so graymail suppression eventually stops mailing genuinely engaged people.
The fix
Do not let filtered opens be the only signal before graymail suppression. With bot filtering on (the default), HubSpot strips MPP proxy opens from the Sends since last engagement property, so an Apple Mail reader who never clicks crosses the graymail threshold (about 11 sends if never engaged, 16 if engaged once) and gets skipped by Don't send to unengaged contacts. Keep bot filtering on for clean reporting, but make clicks, site visits, and form fills your engagement signal instead of opens. Build a click-or-recent-activity active list and mail from that, and periodically audit the Not sent bucket for contacts whose only inactivity is hidden Apple opens.
Half my sequence contacts got 'not a marketing contact' and never received the email
In HubSpot, only records flagged as Marketing Contacts can receive marketing email, and this billing flag is separate from subscription opt-in. Senders import a list, hit send, and find contacts silently excluded with a non-marketing contact notice, so campaigns reach far fewer people than expected.
The fix
This is a contact-status rule, not a spam issue. Before sending, set the intended recipients to Marketing Contact status by bulk-editing them from a list or using the Set marketing contact status workflow action. Setting a contact AS marketing takes effect immediately, so you can resend right away, but it also makes them billable immediately and can auto-upgrade your subscription mid-cycle if you cross your paid tier. Find silently-skipped records under Recipients > Not sent on the original email, build a list from them, flip their status, then clone and resend. Note that new contacts from imports, integrations, and chatflows default to non-marketing, so audit their status before every send.
HubSpot Sequences hit 600 emails fine, then the next 400 all went straight to Gmail spam
Senders run cold outreach through HubSpot Sequences, which send from their own connected Gmail or Outlook mailbox, not from a HubSpot ESP with a warmed IP. A brand new mailbox blasting 1,000 messages in two weeks burns its sender reputation, and Sequences carry no List-Unsubscribe header, so recipients hit "mark as spam" instead of unsubscribing.
The fix
Treat Sequences as one-to-one mail, not a bulk channel. Keep new-mailbox volume low and ramp gradually over several weeks rather than sending hundreds a day, and only send to contacts who have some prior engagement. Buying a HubSpot dedicated IP does nothing here because Sequences do not send through HubSpot's marketing infrastructure, they send through your own inbox. For real cold outreach use a separate sending domain so a burned reputation never takes down your primary domain, and confirm SPF, DKIM, and DMARC are set on the sending domain.