I’ve received a couple requests offline asking if I would join Saul and Bear in sharing my decision on Snowflake. It turns out I exited as well but did it before earnings. Here’s the current draft for my August writeup. I could see a final edit or two but think the gist is set.
SNOW – Scheduled to report August 25, Snowflake was just wandering along minding its own business until all heck broke loose on August 20. The stock plummeted that day from roughly $280 to under $250 after a Cleveland Research report indicated a contracting slowdown due to longer sales cycles and increased competition (https://www.crn.com/why-snowflake-s-stock-is-falling). Analyst Piper Sandler responded the selloff was “overdone,” and the stock bounced right back into the $280 range over the next few days (https://www.streetinsider.com/Analyst+Comments/Snowflake+(SN…).
As all this was playing out, I had immediate flashbacks to a similar scenario with ZScaler in August 2019. At that time, an outfit named OTR Global issued a report warning of the potential for subpar 4Q19 sales based on its channel checks (https://www.otrglobal.com/sites/default/files/public/samples…). At the time ZS’s stock was doing great, so I shrugged off the report and even added a few shares before earnings. Well, it turns out OTR was right, ZS announced a revamp of its sales process, and the stock was punished accordingly. Afterwards, I made a mental note to myself that if nothing else I would be more wary next time reports like these were issued.
Granted, I might simply be subjecting myself to confirmation bias (https://en.wikipedia.org/wiki/Confirmation_bias), but compounding the issue was my own concern about what I felt was a larger than normal seasonal decline in SNOW’s customer adds during Q1. As I wrote at the time:
“The one possible glitch I see is customer growth. The highlight was a record 27 new customers spending >$1M a year, bringing the total to 104 (+117% YoY). However, growth in total customers and Fortune 500 companies both finished at record lows. While there’s seasonality to this count, the 393 customers added in Q1 was just 67% growth versus 73% last quarter and 128% a year ago. It was also the first time ever sequential customer growth dropped below double digits at 9.5%. And fluke or not, adding only one Fortune 500 customer after 17 (year ago comp), 10, 13, and 19 the prior four quarters is disappointing no matter how I look at it. Being honest, management’s explanation of a “very, very long sales cycle” and staff wanting to close as many Q4 deals as possible to beat year-end commissions didn’t do much to put me at ease. I mean, those same long sales cycles and Christmas bonuses were in play last year too, amirite?
My reason for being so wary here is the relationship between SNOW’s customer growth and future revenue. Management has consistently stated it takes 6 to 9 months for new customers to fully reach contracted usage rates [update: management is now stating 9-12 months as per the Q2 call]. That lag means we will likely see a flood of new revenue during Q2 and into Q3 from the record number of customers just added in Q4. I feel Q2 guidance reflects that, so no problem there. My concern is just how large a role the lowish Q1 figures might have played in the soft FY raise. These Q1 customers will be the main cohort for new revenue in Q3 and Q4. Was the Q1 customer add maybe lower than expected? And will this group contribute enough during the second half to let Snowflake maintain the revenue growth we’ve come to expect (and likely need to maintain its current valuation)? That’s still TBD in my opinion.
If I’m going to own a stock priced for perfection, I can’t gloss over the potential pitfalls. I consider customer growth something to watch here. Virtually every software company pursues a “land & expand” revenue strategy combining new business with upsells into its existing base. The strategy works best when both halves contribute steadily to that mix. Between last year’s Q4 and Q1, SNOW saw a 28% seasonal drop in new customers (458 to 328) with 17 Fortune 500 adds. This year’s drop was a larger 33% (585 to 393) with just one Fortune 500 add. If nothing else, Snowflake seems to be entering this year with less wiggle room for underperformance in the “land” part of the equation during the second half. That could hypothetically put pressure on upsells to make up the difference. Frankly, I’d rather not test that thesis and will be paying close attention to these numbers in Q2.”
Given all this info, I saw three likely scenarios for SNOW’s report:
Hold Serve. Snowflake posts the expected impressive Q2 results with the customer adds and guides large enough to suggest things generally remain on track. In this case, the stock would probably hover short term within a few percent of wherever it closed into earnings.
Disappoint. Snowflake posts its usual strong numbers for Q2, but customer adds are again a little soft and/or the FY guide doesn’t move enough to satisfy the market. In this case, the stock would probably sell off quite considerably given how much outperformance has already been priced in.
Surprise. Snowflake posts a blowout quarter with customer numbers and a guide suggesting a great business is primed for even additional takeoff. While we root for this scenario for all our holdings, I ranked this the least likely outcome based on the info at hand.
Entering this earnings season, I ranked the potential outcomes for companies like DDOG and UPST surprise, hold serve, disappoint. That’s why I felt content carrying outsized positions into their reports. Luckily, I was rewarded. In Snowflake’s case, I couldn’t shake the feeling holding serve was the best I could realistically hope for. And being honest with myself, I thought disappointment more likely than surprise. Therefore, I exited our entire position during the run back into the $280’s (I’d put my average exit around $278). The market was clearly shrugging off the Cleveland Research report, and something about that made me uneasy. Since SNOW was already one of our smallest positions, I decided I was more comfortable turning it into cash at what I felt a reasonable price and adjusting accordingly once I had better information. If I missed out on a few dollars to the upside, so be it.
I’d say Snowflake did hold serve, at least as I was viewing it. The $255M (+103% YoY) in product revenue and $272M (+104% YoY) in total meant SNOW maintained its triple-digit growth. Operating expenses were a record-low 78% of revenue. The company posted all-time highs for both total (69.7%) and product gross margin (73.6%), though management noted some one-time positive effects for product gross margin this quarter. The increased execution led to a record-low -8% operating margin, meaning loss margins have narrowed from -44% to -30% to -24% to now -8% over the last four quarters. That’s a pretty good run. Adjusted free cash flow was positive for the third quarter in a row and is anticipated to remain positive going forward. Topping it all off, net revenue retention ticked up to 169% implying current customers will continue spending strongly. I would certainly say that qualifies as “the expected impressive Q2 results” in the headline numbers.
Turning to customer adds, I’d label the results better than Q1 but far from overwhelming. Snowflake gained 458 this quarter for 4,990 total, accelerating slightly to 10.1% QoQ. While that trails last year’s 14.6% due to larger numbers, it does beat 2Q21’s 397 net new clients. It was nice to see Fortune 500 customers rebound to 18 this quarter after just one in Q1. However, it’s worth noting SNOW adjusted from the 2020 Fortune 500 list to the 2021 version between quarters, meaning all past numbers were restated (making Q1’s adds now look like four even though we know it was one at the time). Either way, it does appear to be a Fortune 500 upswing. Management emphasized it has been targeting larger customers and has 462 Global 2000 clients as well, so a solid base with room to grow. Finally, a dozen more customers spent at least $1M with Snowflake in the last year brining that count to 116. Count me as neutral in this area.
The top line performance let management raise the full year guide another $35M to $1.070B, which would be 93% growth on the year. Again, a decent raise but fully expected given the relative strength of the stock. Overall, I’d give SNOW the benefit of the doubt on “customer adds and guides large enough to suggest things generally remain on track.”
However, a new area of discussion popped up with Remaining Performance Obligation (RPO). Management has consistently cited this metric along with product revenue as key measures of the overall business. While RPO was a stout $1.5B and up 122% YoY, it also marked the lowest sequential increase ever (MF’s terrible formatting wins once again):
RPO % YoY % QoQ Q1 Q2 Q3 Q4 YR Q1 Q2 Q3 Q4 YR Q1 Q2 Q3 Q4 YR 2018 2018 2017 2019 $82.80 $128.00 2019 2018 54.6% 2020 $137.90 $221.10 $273.00 $426.30 2020 229.7% 233.0% 2019 7.7% 60.3% 23.5% 56.2% 2021 $467.80 $688.20 $927.90 $1,333.00 2021 239.2% 211.3% 239.9% 212.7% 2020 9.7% 47.1% 34.8% 43.7% 2022 $1,432.00 $1,529.00 2022 206.1% 122.2% -100.0% -100.0% 2021 7.4% 6.8%
The Q1 decline makes some sense looking at past seasonality. However, it’s hard to call Q2 anything other than a significant slowdown compared to past years. The CFO addressed this issue by stating RPO has some lumpiness to it and should be considered in context with revenue:
We are still maturing the sales organization to sell multi-year contracts, and the timing of the largest multi-year deals will be lumpy. As a reminder, in Q2 last year, we sold our largest multi-year contract ever, a three-year $100 million deal. While the multi-year component of new booking sets up a difficult comparison, we saw a net — we saw new annualized contract value accelerate compared to the year ago period. This is why RPO and revenue must be evaluated together in a consumption-based business model. Of the $1.5 billion in RPO, we expect approximately 56% to be recognized as revenue in the next 12 months, representing approximately an $87 million increase quarter-over-quarter. We remain focused on penetrating the largest enterprises globally, as we believe these organizations provide the largest opportunity for account expansion.
Analyst Jamin Ball provided more detail here, though it’s fair to point out the source he used to help explain the dynamic modeled a much higher $1.8B RPO for this quarter:
While RPO was less than ideal, Snowflake did have some other factors in its favor. International continues to grow faster than the overall rate, SNOW’s data sharing marketplace is expanding rapidly, and the company released a host of new tools making it even easier for customers to customize use cases on its platform. There’s an inevitability surrounding the increased use of data, and Snowflake is clearly well-positioned to take advantage of that trend.
Yet as impressive as the above sounds, it’s indicative of the crazy-high expectations for Snowflake that there’s even a doubt about a quarter like this. Kudos to management for continuing to execute. As the numbers hit the wire, the stock did indeed fall into “hover a few percent” mode. Immediately after hours the stock went from its ~$284 close to $295+ (+4%) to under $275 (-3%) and back to $300+ (+6%) before opening the next day at $299 (+5%). So, even the market initially seemed a little unsure exactly what to do. [With the stock now sitting at ~$297 in the middle of a couple up days for the indices post-earnings], the market seems to have placed SNOW somewhere toward the positive end of holding serve as well.
Ultimately though, it’s not this quarter but future quarters that count. And while locking in on one specific metric might seem extreme, RPO does represent 50% of the measures specifically identified by management in gauging the health of the business. With a customer onboarding lag of 9 to 12 months, RPO is the best measure we have of how well the spring is loading for future quarters. While I’ve since seen plenty of great breakdowns and explanations for interpreting RPO since these numbers came out, none seem to conclude this quarter’s result was actually a good one for SNOW. That matters, particularly for the highest-valued stock in our portfolio.
Stepping back, I found myself doing too many mental gymnastics trying to piece together SNOW’s revenue/customers/RPO dynamic in a way that made sense. All I know is this exercise wasn’t required in prior quarters…and maybe that’s answer enough. Since it was already a small position, I decided to keep the cash and spend my energy elsewhere while waiting for our remaining companies to report. Even though I had several opportunities to buy back in within a few percent of our exit price, I find I’m more comfortable sitting this one out for now.