Race Report: Ironman 70.3 Arizona
After a year of waiting, and six months of training, including two triathlons and two half marathons, I finally raced my A race for this year, Ironman 70.3 Arizona. I came expecting a difficult triathlon in the scorching Arizona heat and ended up experiencing a much different race, but I’m very satisfied with the results nonetheless; I raced about as good a race as I could have hoped for given the circumstances. Read on for my final race report of the year.
Pre-race prep
I drove down to Tempe a few days before the race, with an overnight stay in Kanab, Utah. This was one of the most memorable drives I’ve ever done in my life, especially after getting off of I-15 in southern Utah. That drive going from the beautifully complex geology of the Colorado Plateau, through the stark desert of northern Arizona, climbing to Flagstaff among the ponderosa pines of Coconino National Forest, and back down to the desert through saguaro-covered hills as far as the eye can see was absolutely breathtaking, and made me wish I had set aside more time for landscape photography. Next time, for sure.
I checked in for the race early on Friday, soon after the Athlete’s Village in Tempe Beach Park opened, and while I was in line I got an “important race advisory” from Ironman in my email:
The swim for the IRONMAN 70.3 Arizona takes place in Tempe Town Lake. Tempe Town Lake is an artificial lake that collects rainwater from the surrounding area and is managed by the City of Tempe. IRONMAN receives a special exemption in order to swim in the lake for the event from the City of Tempe. When there is more than 0.2″ of rain, the City of Tempe will close the lake to swimming until it has time to test the water in order to ensure it is safe. This process of testing water samples takes a minimum of 24 hours. Based on this, if Tempe Town Lake receives more than 0.2″ of rain on Saturday night, the City of Tempe can not permit the swim to take place on Sunday to ensure athlete health and safety.
If the swim portion of the event cannot take place, athletes will be notified via email, IRONMAN Tracker App notification as well as a message posted on the IRONMAN 70.3 Arizona event Facebook page. This announcement will go out on race morning when the final decision is made.
If there is no swim, the race will start with a bike time trial at the bike mount line. The race will start at 6:50am. 1 athlete will start every 5 seconds. This intentional slow rate is designed to spread athletes out on the bike course. Athletes will be started based on bib number going from low to high. This process will take approximately 2 hours. We know this is a long time. Again, this is intentional to give everyone as much room as they can on the bike course to race their own event.
Based on this, we anticipate the approximate following start times for each bib: #11-6:50am; #500-7:30am; #1000-8:10am. If we are using the bike time trial start method, not all athletes need to be in transition at 6:30am. Athletes can arrive closer to their start time.
All athletes will have 4 hours and 20 minutes from the time they start in order to complete the bike portion of the event, and 7 hours and 20 minutes to complete the bike, T2 and run course. To ensure an orderly start, athletes will be asked to stage at their bike racks. Staff will bring one row of athletes at a time to the bike mount line. Again, please wait at your rack until your row is called to the start.
All IRONMAN 70.3 World Championship slots and awards will still be awarded if the race consists of a bike/run format. Please plan on attending one of the athlete briefings in order to get the latest information.
We look forward to hosting a great race on Sunday regardless of the exact format.
Sure enough, Saturday afternoon saw some pretty significant downpours through the entire region, and later in the evening Ironman sent out another email confirming that the swim would be canceled and the race would start with a bike time trial. I appreciate that they didn’t wait until race morning to make a decision.
While I’m disappointed that I didn’t get to race a full triathlon, I can’t say that I’m upset about not swimming in Tempe Town Lake. I scoped out the swim course on Saturday after dropping off my bike in transition, and I was surprised by how dirty the water was. There was trash in the water along the banks, with a few dead fish floating in the water here and there, and the areas for the swim start and finish were particularly filthy. A couple walking by joked “I bet you’re glad the swim might be canceled!” Reader, I was. That said, I’m glad I made that last minute decision to race in Boulder in August; if this had been my only 70.3 of the year, I’m sure I’d feel differently about skipping the swim.
Based on my bib number (253), I estimated I would start at about 7:10 AM, about twenty minutes after the start of the race, so on race day I woke up a little later than I normally would have, knowing I only needed to get there a few minutes before the bike start. I had a bagel with jam and some coffee for breakfast, prepared my bottles of Maurten, and grabbed an extra towel and a second pair of socks in case I needed them, since it had continued to rain heavily for most of the night.

I arrived at transition at about 6:30 AM, which thankfully wasn’t as muddy as I expected despite the rain. I wiped my bike dry, made sure everything still worked, and set up my running gear on top of the waterproof bag they gave everyone. I then had a Maurten Caf gel and did some stretching while I waited to start.
Just before 6:50 AM, the organizers started calling up each rack in order, and set us up at the start line in three rows, just like in a rolling swim start, with the same countdown beeps, and one rider setting forth every five seconds. I started my race at 7:08 AM.
The bike
While it was a bummer to skip the swim, I have to admit that starting with a bike time trial worked to my benefit. I’m a very slow swimmer, so I’m usually one of the last people out on the bike course, but thanks to my relatively low bib number, this time I’d be one of the first, with only a couple hundred people in front of me, at least for the first lap.
With that in mind, I wanted to make the most of that advantage, so I adjusted my race plan to go harder than I intended on the first lap, before the course got crowded. I had originally aimed for about 80% intensity, for which Best Bike Split gave me an estimated finish time of 2:43:00, safely in the green area of the pacing chart.

I bumped that to 84% intensity, which moved my estimated TSS into the yellow, but I knew once more people were out on the bike course I would not be able to reach that anyway. In Boulder, my final intensity was 70% and I had left a lot on the table, so I definitely wanted to avoid that; if I ended this bike leg closer to 80%, that would have been a win in my book.
With my plan set up in my bike computer, I hit the bike course hard on the first lap, despite the still-wet pavement. I think that was the right call; after catching up and passing some riders on the first few miles, there were long sections of the road where I had no one around me, so I was able to hit my power targets and navigate the turns with ease. By the second and third laps, it was much harder to hold power while riding in heavy traffic, especially around the U-turns and some of the narrower sections of the course, which became bottlenecks.
The course itself was somewhat technical, with twenty-something sharp turns and five U-turns in each of the three laps, and the pavement still wet well into the second lap. Despite my sub-par bike handling skills, I think I did a decent job picking my lines without losing a lot of speed or having to surge massively coming out of the turns. For the most part, it was smooth sailing, except for the southbound section of North College Avenue, which had some of the gnarliest, bumpiest pavement I’ve ridden on. I chose not to wear gloves this time around, and by the third lap I started getting blisters in my hands just from this one segment of the course.

I came to Arizona fully expecting blazing hot temperatures, but while the rain may have wrecked the swim, it left behind perfect racing weather. The temperature at the start of my bike leg was 63°F (17°C), and by the end it had risen to just 73°F (23°C). It didn’t get much warmer during the run, with significant cloud cover for most of the day. I saw some ominous storm clouds during the second and third laps on the bike, but thankfully no further rain materialized.
For nutrition, I brought two bottles with about 1,200 ml of Maurten 320 drink mix in total. I relied on Garmin’s “smart drink alerts,” which turned out to be not so smart, so I didn’t finish the bottles, and had about 300 ml left over at the end. Thankfully, I didn’t feel like I needed the extra fuel because I started the bike leg with my glycogen reserves intact, but next time I’ll time my nutrition differently.
Ultimately, I finished the bike leg in 2:40:53, almost exactly what Best Bike Split estimated, and my final intensity was 79%, with a TSS of 170. I’m not sure if the way I went about planning my race strategy was the best one, but I can’t argue with the results! While I’m sure there are some things I could have done better with the benefit of hindsight, I regret nothing, and I feel confident I did the absolute best I could at the time.
T2
In Boulder, my transitions took forever, and I spent 6:26 in T2, so I wanted to do it faster this time around. I jumped off my bike, ran through transition, swapped shoes, grabbed a gel, threw on my hat and race belt, and ran out in 3:30.
A couple things worked in my favor this time: the run from the dismount line to my rack was much shorter than in Boulder, and on grass, which made it easier to run in bike shoes; and the sky remained cloudy, so I didn’t bother reapplying sunscreen.
The run
For the run, I set a dumb, arbitrary goal of 1:45:00. My fastest time in a standalone half marathon is 1:46:38, so I knew setting that as a goal after a 56-mile bike leg wasn’t realistic, but I wanted to make sure I left absolutely nothing on the table—although I hoped the cooler-than-expected temperature and much lower elevation would give me an edge. I plugged this completely pulled-out-of-my-ass time and a GPX file of the course into Garmin’s PacePro tool and it gave me a target pace of 4:59 min/km, so with that pacing plan in place, I left T2 and got to work.

The run course consisted of two pancake-flat laps around Tempe Town Lake on paved pathways, except for the first mile or so, which were on a gravel path full of puddles and mud due to the rain. I started harder than I intended, probably just due to race adrenaline, but eventually settled on my target pace, which felt sustainable—at first. I relied entirely on Maurten gels for nutrition; I lost track of exactly how many I had, but basically took one with a cup of water at every other aid station, and a caffeinated one at the second to last aid station for a final boost. I had no cramping or GI issues at any point, which was great.
I felt pretty strong on the first lap, but started to struggle to hold my pace shortly after starting the second one, and by the end I felt like I was fighting for my life. The last few miles were some of the hardest I’ve ever run, and I had to dig deep to make it to the finish line without stopping, ending with a time of 1:50:38, and a final pace of 5:06 min/km. I missed my goal time and pace, but I definitely achieved the goal of not leaving anything on the table. I was absolutely spent, I had nothing left to give.
After getting my finisher medal and hat, I hobbled over to the food tent, grabbed a couple of slices of pizza and a couple of beers, and sat down for a long while, until transition opened and I felt I had recovered enough to pack my gear and head out.

Final result
My final time was 4:35:00, and I finished 32nd in my age group (out of 133) and 171st overall (out of 1,157). I am more than satisfied with this result, there’s very little I would have done differently, and I think none of it would have changed the outcome significantly. For the sake of comparison, if I had repeated my Boulder times for the swim and T1, my final time would have been about 45 minutes faster than in Boulder. Not bad!
Equipment list
- Tri suit: Roka Gen II Elite
- Sunglasses: Roka Matador Air
- Bike: Specialized Aethos, no aero bars
- Bike shoes: Giro Regime
- Bike helmet: S-Works Evade 3
- Bike computer: Garmin Edge 1040 Solar
- Watch: Garmin Forerunner 955 Solar
- Heart rate monitor: Garmin HRM-Pro Plus
- Running shoes: Hoka Carbon X 3
- Nutrition: Maurten gels, Maurten Drink Mix 320
Wrap-up
I came with a plan, adjusted it for the changed circumstances, executed it to the best of my abilities, and gave the race everything I got, leaving nothing on the table, so I accomplished what I set out to do. While I’m disappointed I didn’t get to do a full triathlon after all the work I put into training for this race, I nonetheless consider this a success, and the best way to close my season I could ask for.
Next up, I have Ironman 70.3 St. George in May, followed by my first full-distance triathlon at Ironman Coeur d’Alene in June, so after taking the next few days off to rest, it’ll be time to get back to work.