Hi Mitchell,
The short answer is that you are using a slightly different convention for spherical coordinate than what is in Wolfram Language.
CoordinateTransform[{"Spherical" -> "Cartesian", 3}, {\[Rho], \[Theta], \[Phi]}]
shows that theta and phi role are switch in your equations and CoordinateTransform.
Slightly longer answer, unfortunately, in the example you have provided, you cannot simply switch theta and phi
CoordinateTransformData["Spherical" -> "Cartesian", "Mapping", {12, 0, Pi/4}]
because spherical has a range assumption
In[55]:= CoordinateChartData["Spherical", "CoordinateRangeAssumptions"]
Out[55]= #1[[1]] > 0 && 0 < #1[[2]] < \[Pi] && -\[Pi] < #1[[3]] <= \[Pi] &
but this will give the desired output:
CoordinateTransformData["Spherical" -> "Cartesian", "Mapping", {12, \[Theta], Pi/4}] /. \[Theta] -> 0
Hope this helped.