Got it working. I wasn't using the inline tags because I wanted to leave the text field alone.
Had to make ApplyMaterials() public.
Also made a copy of the material on Start() -> targetText.textMaterial = new Material(targetText.textMaterial);
and just called
targetText.textMaterial.SetColor("_OutlineColor", stateData.textOutlineColor);
targetText.ApplyMaterials()
Are the inline tags more efficient?