The economics of Christmas trees

In America, Christmas trees are a multibillion-dollar business. But who’s making the money?


December 5, 2020

On a frosty day in November, Beth Ann Bossio walks through the brilliant green rows of Douglas firs at Quarter Pine Farm in Smithfield, Pennsylvania, and marks hundreds of trees with price tags.

As the family farm’s head of sales, Bossio has followed the journey of these trees for nearly a decade, from seedlings to 7-foot-tall evergreens.

Now, at long last, they’re ready to be sold as Christmas trees.

Quarter Pine is one of thousands of Christmas tree farms in America. Collectively, these farms sell 25m-30m real Christmas trees to independent lots, big-box retailers, and garden centers every year.

At an average retail price of $75 a pop, these trees make up a $2B+-per-year business.

But what are the economics behind that price tag? Who gets the lion’s share of the profit? And how have Christmas tree producers fared with the growing popularity of artificial trees?

To find out, The Hustle spoke with Christmas tree farm owners, ecologists, and representatives from both the real and artificial tree markets.

From farm to market

Today, 98% of all real Christmas trees on the market come from tree farms.

According to the USDA, there are 15k of these farms in the US, ranging in size from 2 acres to 9k acres. Though the market is largely stratified, the 434 largest farms control ~75% of the total supply.

At any given time, there are 350m Christmas trees growing on these farms in various stages of development — and in a typical year, ~25m will be harvested for sale.

Enjoying this article?

Get the Hustle’s 5-minute weekday roundup that keeps you hip to happenings in tech, business, and internet… things.

Roughly 2 out of every 3 of them come from just 4 states: Oregon, North Carolina, Michigan, and Pennsylvania.

In Oregon, Christmas trees outnumber people 12 to 1 (Zachary Crockett / The Hustle)

There are at least 15 different varieties of Christmas trees — ranging from the ever-popular Fraser fir to the Eastern red cedar — but most of them follow the same general production cycle.

A Christmas tree begins its life as a seedling, which is typically purchased from a timber firm like Wayerhauser for $0.50 to $1.

When the tree is around 2 years old, it graduates from the nursery to the “big leagues” and gets its own 6’x6’ plot of land out in the field. Most Christmas tree farmers aim to plant ~1.2k trees per acre of land.

What makes a Christmas tree an unusual crop is its extremely long production cycle: one tree takes 8-10 years to mature to 6 feet.

During that time, it’s a financial black hole.

“A lot of blood, sweat, and tears goes into growing a Christmas tree,” said Bert Cregg, a horticulture professor at Michigan State University. “You’ve got the cost of land, road construction, tractors, herbicide, fertilizers — and then all the labor it takes to plant and shear the tree.”

Bossio, of Quarter Pine Farm, calls Christmas trees a game of “patience and unpredictability.”

“It takes so long to make a profit in this business and anything can happen in that time,” she said. “This year, we had a late frost that damaged a good chunk of our Douglas firs; I know farms that had no rain and lost 100% of their trees.”

A man shears a tree at Friendly Acres Farm, a family-owned Christmas tree farm in Cochecton, NY (The Farmhouse Project)

But even if all goes well, Christmas tree farmers still have to forecast what the market is going to look like 10 years out: Planting too many trees could flood the market; planting too few could cause a shortage.

History has shown that the industry is a case study in supply and demand:

  • In the 1990s, farmers planted too many Christmas trees. The glut resulted in rock-bottom prices throughout the early 2000s and put many farms out of business.
  • During the recession in 2008, ailing farmers planted too few trees. As a result, prices have been much higher since 2016.

When trees are finally ready to be sold, they’re graded with colored tags based on height and quality. Then, they’re off to market.

From market to consumer

Christmas tree farms have 2 major sales channels:

  1. U-Cut: They allow the public to cut down their own trees.
  2. Wholesale: The farms cut, ship, and sell their trees in bulk to lots, retailers, and distributors.

About of Christmas tree sales are via U-Cut, while wholesale makes up the majority of the market.

Via the National Christmas Tree Association; Nielsen/Harris Poll on behalf of NCTA January 28-30, 2020 among 1962 adults ages 18 and older (Zachary Crockett)

U-Cut operations tend to be more popular with smaller farms like Quarter Pine, where families come for the experience. In recent years, the broader agritourism market has tripled in size and become a billion-dollar industry.

In general, U-Cut also a more profitable option for a farm: it can sell a 6’-7’ tree at market rate ($60-$80) and pocket a larger cut of the profit.

Wholesale — a game of volume — is largely dominated by the titans of Christmas tree farming, like Holiday Tree Farms.

Established in Corvallis, Oregon, in 1955, Holiday Tree Farms is one of the world’s largest producers of real Christmas trees. Each season, the farm harvests more than 1m trees in less than 30 days.

Owner Mark Arkills enlists 7 helicopters which run in a continuous cycle from sunup to sundown, loading 1k trees/hour each into tractor-trailers destined for big-box retailers.

From cut to delivery, it only takes Arkills 3-4 days to get a tree to a West Coast location of The Home Depot.

Workers preparing trees for shipment at Oregon’s Holiday Tree Farms (Justin Sullivan/Getty Images)

What do farmers make from deals like this?

The Hustle surveyed 8 wholesale Christmas tree farms in PA, NC, WI, OR, and MI, and found that the average 6’-7’ tree wholesales for $35 cut, baled, and loaded.

But after factoring in expenses over the 8- to 10-year growing cycle, profit margins are considerably lower: Farmers typically make out with a ~25% to 30% profit margin — or $8 to $10 per tree.

Even so, a deal with a large retailer like The Home Depot — which might order 250k+ trees — could net an outlet like Holiday Tree Farm 7-figures.

Once a retailer has the trees, it will typically mark them up by 100% or more to cover freight, storage, labor, and operating costs.

According to the National Christmas Tree Association (NCTA), an organization that represents tree farmers, the average retail price of a tree in 2019 was $75.

“The farmers, for what they put in, make less than the retailer on a Christmas tree,” Doug Hundley, an NCTA spokesperson, told The Hustle.

Christmas trees saw a jump in price in 2016 due to a smaller production 8 years earlier during the financial crisis (Zachary Crockett / The Hustle)

Regardless of profits, the Christmas tree farming ecosystem is experiencing the rumblings of a small exodus.

James Farmer, an Indiana State University professor who has studied Christmas tree farmers, says that an aging farmer population, coupled with climate change and shifting consumer preferences, has threatened to crimp the industry.

But the biggest threat to tree farmers may be the steady, incessant rise of their arch-nemesis: the artificial tree.

A tale of 2 Christmas trees

Modern artificial trees got their start in the 1930s when the UK-based Addis Brush Co. — a maker of toilet scrubbing brushes — saw an opportunity to market convenience during a time when real trees were hard to get ahold of.

Today, 81% of the 96m Christmas trees Americans display each year are artificial. Only 19% are real.

While roughly the same number of real (26m) and fake (25m) trees were sold last year, the cumulative purchasing of fake trees has encroached on real trees’ market share.

“If it weren’t for the fake trees, we’d be selling twice as many real trees,” said Hundley. “But we’re selling the same number of trees as we were 15 years ago.”

Zachary Crockett / The Hustle

The supply chain of fake trees is quite different from that of real trees.

According to the US Department of Commerce, 85% of fake trees are manufactured in China — particularly in the city of Yiwu.

Often called “Santa’s Real Workshop,” Yiwu is home to 600+ factories that churn out the vast majority of the world’s Christmas decorations, including millions of polyvinyl chloride trees from the industry’s top manufacturers.

As Vice reports, employees at these factories work in 12-hour shifts, feeding PVC strands into machines and fashioning synthetic branches onto steel poles. For their labor, they earn the equivalent of ~$600/month.

While a real tree takes 8-10 years to get to market, a fake tree can be produced in a few minutes. At full steam, a factory can pump out 1.5k trees in a 2-day cycle.

On the retail market, the average artificial tree goes for $107 — about $30 more than a real tree. Wholesale, they can be had for as little as $15.

Many Christmas tree farmers say they can’t compete with these higher margins and lighting-fast production cycles. And for some, the increasingly split market is an omen of larger geopolitical trends.

“It’s an issue of supporting American growers or overseas manufacturers,” said Bossio.

Scenes from an artificial Christmas tree factory in Yiwu, China, in 2016 (Photo: JOHANNES EISELE/AFP via Getty Images)

Today’s artificial tree market is worth an estimated $1.2B.

One of the industry’s biggest players, Balsam Hill — which sells high-end fake trees that run up to $3k — posted ~$150m in revenue in 2018, far more than the largest Christmas tree farms. 

The company’s CEO, Thomas Harman, is also the founder and president of the American Christmas Tree Association (ACTA), a trade group that many tree farmers consider to be an adversary.

Jami Warner, ACTA’s executive director, said that the organization represents “all types of trees,” whether artificial or real.

But in a call, she also cited ACTA-sponsored studies that found fake trees were more cost-effective and environmentally friendly than real trees.

“A high-quality artificial tree can last up to 10 years,” she said. “And when you consider that, the cost of replacing a real Christmas tree every year is about 3x the cost of purchasing a single fake tree.”

Hundley, the NCTA spokesperson, doesn’t buy it.

A one-time Christmas tree farmer himself, he believes the value of a perfectly sheared fir supersedes convenience and price.

“What do you think my wife would say if I came home on Valentine’s Day with plastic roses?” he said. “You just can’t beat the real thing.”

Psst

How'd Bezos build a billion dollar empire?

In 1994, Jeff Bezos discovered a shocking stat: Internet usage grew 2,300% per year.

Data shows where markets are headed.

And that’s why we built Trends — to show you up-and-coming market opportunities about to explode. Interested?

We’re shooting our shot…

Start your mornings with The Daily.

Get the freshly baked 5-minute newsletter every day except Saturdays.

It’s filled with the most interesting stories on business, tech, and the internet.

And written for innovators of every industry. Sign up for the news that slaps.

If you don’t like it, unsubscribe any time. Privacy policy.

[email-submission-form redirect-to-home="true" button-text="Join Free" include-trends-opt-in="true" id="main-signup-form" fail-url="" success-url="https://thehustle.co/signup" default-source="thehustleco" default-campaign="home"]
<script type="text/javascript"> var onloadCallback = function() { grecaptcha.render('verify-your-humanity', { 'sitekey' : '6LdddrcZAAAAALyttpvOqiwQGwq5BNhgDz4tMQGE' }); }; function getCookieValue(a) { var b = document.cookie.match('(^|[^;]+)\\s*' + a + '\\s*=\\s*([^;]+)'); return b ? atob(decodeURIComponent(b.pop())) : ''; } function setHiddenFieldValue(wrappingDiv, searchParams, className, utmName, cookieName, defaultValue) { var el = wrappingDiv.getElementsByClassName(className)[0]; var existingVal = el.getAttribute('value'); var newVal = searchParams.get(utmName) || getCookieValue(cookieName); if ((existingVal == null || existingVal == '' || existingVal == defaultValue) && (newVal != null && newVal != '')) { el.setAttribute('value', newVal); } } function setHiddenFieldValueFromUtm( wrappingDiv, searchParams, className, utmName, defaultValue ) { var el = wrappingDiv.getElementsByClassName(className)[0]; if (el != null) { var existingVal = el.getAttribute("value"); var newVal = searchParams.get(utmName); if (newVal != null && newVal != "") { el.setAttribute("value", newVal); } } } function initForm() { var wrappingDivs = document.getElementsByClassName('email-submission'); wrappingDivs.forEach(wrappingDiv => { var sp = new URLSearchParams(window.location.search); setHiddenFieldValue(wrappingDiv, sp, 'funnel-source', 'utm_source', 'funnel_source', 'thehustleco'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-campaign', 'utm_campaign', 'funnel_campaign', 'home'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-medium', 'utm_medium', 'funnel_medium', ''); setHiddenFieldValue(wrappingDiv, sp, 'funnel-referral', 'ref', 'funnel_referral', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-a', 'a', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-c', 'c', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-o', 'o', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-oc', 'oc', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-e', 'e', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-f', 'f', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-r', 'r', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-t', 't', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s1', 's1', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s2', 's2', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s3', 's3', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s4', 's4', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s5', 's5', ''); var error_message = getCookieValue('funnel_error_message'); if (error_message && error_message.trim() != '') { var error = wrappingDiv.getElementsByClassName('funnel-error')[0]; var prev_email = getCookieValue('funnel_email'); error_message = prev_email + " is not valid. Please try again"; error.innerHTML = error_message; error.style = ''; } }); if (false) { initCaptchaFormV2(); } } function initCaptchaFormV2() { var v3RecaptchaResponseEl = document.getElementById('recaptcha-response-v3'); v3RecaptchaResponseEl.parentNode.removeChild(v3RecaptchaResponseEl); var wrappingDiv = document.getElementById('main-signup-form'); var subForm = wrappingDiv.getElementsByClassName('email-submission')[0]; var captchaVersion = document.createElement('input'); captchaVersion.class = 'g-recaptcha hidden-input'; captchaVersion.type = 'hidden'; captchaVersion.name = 'g-recaptcha-response-v2'; captchaVersion.value = 'true'; subForm.appendChild(captchaVersion); var captchaEl = document.createElement('div'); captchaEl.id = 'verify-your-humanity'; subForm.appendChild(captchaEl); var captchaApiScriptEl = document.createElement('script'); captchaApiScriptEl.src = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit'; captchaApiScriptEl.async = true; captchaApiScriptEl.defer = true; document.head.appendChild(captchaApiScriptEl); } function appendCheckboxes() { var optInDivs = document.querySelectorAll('.trends-opt-in'); optInDivs.forEach(el => { if (el.getElementsByClassName('trends-opt-in-checkbox').length < 1) { var checkbox = document.createElement('input'); checkbox.setAttribute('class', 'trends-opt-in-checkbox'); checkbox.setAttribute('type', 'checkbox'); checkbox.setAttribute('name', 'trends_opt_in'); var label = document.createElement('label'); label.setAttribute('class', 'trends-opt-in-text'); label.textContent = "Yes, I'd like to receive updates on market opportunities before they explode from Trends by The Hustle"; el.appendChild(checkbox); el.appendChild(label); checkbox.click(); } }) } window.addEventListener('DOMContentLoaded', (event) => { var funnel_email_cookie = getCookieValue('funnel_email'); if ( (true) && (funnel_email_cookie != null && funnel_email_cookie != '') ) { window.location.replace('/home'); } initForm(); if (true) { appendCheckboxes(); } }); </script> <div class="email-signup" id=main-signup-form> <div class="funnel-error" style="display:none;"></div> <form class="email-submission" action="https://cms.thehustle.co/api/v1/contacts/wordpress_create" method="post"> <div class="email-form-wrap"> <input class="funnel-source hidden-input" type="hidden" name="source" value="thehustleco"> <input class="funnel-campaign hidden-input" type="hidden" name="campaign" value="home"> <input class="funnel-medium hidden-input" type="hidden" name="medium"> <input class="funnel-referral hidden-input" type="hidden" name="referral_code"> <input class="funnel-fail-url hidden-input" type="hidden" name="fail_url" value=""> <input class="funnel-a hidden-input" type="hidden" name="a" value=""> <input class="funnel-c hidden-input" type="hidden" name="c" value=""> <input class="funnel-o hidden-input" type="hidden" name="o" value=""> <input class="funnel-oc hidden-input" type="hidden" name="oc" value=""> <input class="funnel-e hidden-input" type="hidden" name="e" value=""> <input class="funnel-f hidden-input" type="hidden" name="f" value=""> <input class="funnel-r hidden-input" type="hidden" name="r" value=""> <input class="funnel-t hidden-input" type="hidden" name="t" value=""> <input class="funnel-s1 hidden-input" type="hidden" name="s1" value=""> <input class="funnel-s2 hidden-input" type="hidden" name="s2" value=""> <input class="funnel-s3 hidden-input" type="hidden" name="s3" value=""> <input class="funnel-s4 hidden-input" type="hidden" name="s4" value=""> <input class="funnel-s5 hidden-input" type="hidden" name="s5" value=""> <input class="funnel-success-url hidden-input" type="hidden" name="success_url" value="https://thehustle.co/signup"> <input id="recaptcha-response-v3" class="g-recaptcha hidden-input" type="hidden" name="g-recaptcha-response" value=""> <input class="signup-email" type="email" name="email" placeholder="Your email address" required> <input class="email-submit" type="submit" value="Join Free"> </div> <div class="trends-opt-in"></div> <div submit-success> <template type="amp-mustache"> <p class="c-message c-message--success">Thank you for subscribing.</p> </template> </div> <div submit-error> <template type="amp-mustache"> <p class="c-message c-message--failed">Your submission failed. Please try again!</p> </template> </div> </form> </div>