I’ll add something that took me way too long to figure out on my own.
For me it wasn’t just oils or detergent, it was total dissolved solids slowly creeping up. The water still tested “fine” for sanitizer and pH, but after a few weeks of regular use the water just felt heavier, almost sticky, and the second the jets kicked on it would whip up foam. Small volume + high heat + bather load adds up fast in a spa.
I have a 380 gallon tub and when we had three people in it a couple nights in a row, the organic load jumped way more than I expected. Even if sanitizer handles bacteria, it doesn’t magically remove everything that gets left behind. That leftover stuff builds up and acts like a surfactant once you add aeration.
What made the biggest difference for me was tightening up my water change schedule based on actual usage, not the calendar. There’s a rough formula using gallons divided by average daily bathers that gives you a realistic drain interval. When I followed that instead of stretching it, the foam stopped appearing after just one or two sessions.
Also worth checking alkalinity stability. When my TA was a bit high, pH drifted upward and I had to keep adjusting it, which seemed to make the water feel more reactive. Once I lowered TA slightly and the pH stopped bouncing, the foam didn’t explode as easily when the air was on.
If the water is more than a couple months old and foam shows up fast even after cleaning the filter, it’s usually just tired water. How old is this fill and how many regular users are in the tub?