For decades, television creators had a pretty good way of finding out if their show was a hit: They could look at the Nielsen ratings, an imperfect, universal system for measuring viewership. Now that question is a lot more difficult to answer because, according to showrunners and producers, the platforms streaming their work share almost no data with them. Third-party measurement companies are springing up to fill the void, but without input from the platforms, they can’t tell the whole story. This means the people who made a show may have little idea how big its audience is and even less of an idea about whether the streamer is happy — right up until the moment the show is renewed or canceled.
Over the past few months, the biggest story in TV has been the sharp downturn of Netflix, with its plummeting stock price, significant layoffs, and whispers of shrinking subscriber numbers. It’s unclear if the company is a bellwether for other platforms and, in this climate, a lack of transparency only makes things tougher for creators. Some do get more info than others — this business runs on relationships, after all. But even if you see a little data, what does any of it mean? How many views is considered enough? Does it matter what kind of viewers you get? What is the goal here?
In a series of anonymous interviews, showrunners opened up about how it feels when your show’s fate is a black box. (The platforms themselves declined to comment on their data-sharing practices.) To some people, it’s liberating: They think tracking viewership isn’t a showrunner’s job anyway, and there was never a time when Hollywood decisions felt anything but arbitrary. But to others, the data void adds an extra dose of anxiety — it’s a lot harder to negotiate without numbers to back it up.
1.
Creator of a Canceled Netflix Animated Kids’ Show
Their mind-set was “It’s not about the number of people watching it. The thing we really need is for people to subscribe to the service, so ideally the thing that you make would bring in somebody who wouldn’t have otherwise paid for Netflix.” I thought, Well, that’s cool! There’s not very much stuff that’s like the stuff that I make.
After the show came out, they showed me a bar graph that had maybe eight or ten bars on it sloping downward toward our show. Most of the bars were grayed out except for ours, which was in red. They were like, “Do you have questions?” I said, “Yes. What are the other bars?” The answer was other shows they felt they could compare mine to on the service.
But mine was an animated supernatural kids’ show, and when it was coming out, maybe only one or two or no other original animated things had come out. So I was dying a little bit on the inside. The specific example one executive used was, like, “But look at something like Waffles + Mochi— that’s sort of an indie-feeling thing.” I was like, “Wait a second. You can’t compare my show to a Michelle Obama show.” My main exec said something that was upsetting to me too: “You’re selling yourself short. What if you could make another show that’s just as meaningful but it appeals to billions of people?” I’m not selling myself fucking short. I made the thing I wanted to make, and I made the thing that I told you I was making.
2.
Creator of a Canceled FX Series Streaming on Hulu
What I was being told was “It’s doing good but not great. We want to wait a little longer before we make a decision.” And then all of a sudden, it was “The numbers are really bad. We’re canceling it.” This was before the whole season was even released. I think what they were basing it on was how many people watched the first three episodes, which were released together, and then the drop-off after that. I was given the opportunity to see graphs but not graphs with numbers on them. I have no idea whether it was, like, “You had 400,000 viewers” or “You had 3 million viewers, and we wanted 5 million.”
I could see how the cast was desperate for the show to come back, and I think FX knew before they told me. But to be honest, knowing more wouldn’t have changed the way I did things. From a psychological perspective, I just would’ve liked to have a little bit more of a sense that I was in trouble.
3.
Showrunner of a Current CBS Procedural Streaming on Paramount+
We still rely quite a bit on the traditional Nielsen ratings to get a sense of where we stand in the world, but we have absolutely no idea how we do on Paramount+. Every once in a while, you might get a vague statement like “You’re doing okay there.” But they won’t give us any data. They won’t even share it with our executives. My opinion of that is if they gave the actual data, it would look not awesome. When they want to make an announcement like “Hey, this Paramount+ show is breaking all records,” they don’t have to explain what those records are.
You’re constantly thinking about how your show is doing because it means continuing to work. It means, in the most altruistic sense, that all these other people get to continue to work. That’s really what you think about as a creator: I want this to do well for everyone. I want this to do well for me.
I think that’s the other reason they keep that information to themselves. Any WGA member would probably ask, “How do you monetize success in streaming? For those of us who are supposed to be paid residuals or a piece of the back end, how do you monetize it?” I know someone who has both written on a very famous, successful Netflix show and acted on a CBS procedural. They said they made more in residuals by being a guest star on that procedural.
Illustration: María Jesús Contreras
4.
Showrunner of a Concluded Apple TV+ Series
Over the course of my time at Apple+, I was told two things: One is that shows did better when they were released weekly; the other was completion rates. But then it’s like, What does that metric mean to you? You never knew what their goals even were. Are their macro goals to sell iPhones?
You will never be approached with any information. If you choose to expend your social capital in such an ask, you will be politely handled, but you will not be given anything that has any kind of context to it. I’m not going to be the one who demands a Zoom meeting for them to share information that they literally would lose their jobs over if they ever shared. So I went off and developed this whole relationship with one of the people who work for an analytics company that estimates ratings. I paid money for a personal subscription, and I know I’m not the only person doing that. Our audience was pretty big. I found out the show had rabid fan bases in other countries, too.
One of my biggest fears about this world of secrecy is that it literally comes down to “You ask for what you feel you are worth.” And then who wins? White men. It just re-creates the system.
5.
Showrunner or Producer of Multiple Netflix Series
This whole idea that we as artists actually have agency over the numerical decisions of network studios and streamers is comical to me. We’re literally going out and seeking the patronage of these people — and look, I’m not saying we shouldn’t try to advocate for ourselves. But I find it hilarious that people think, Oh, if only I had more information, I could convince X, Y, or Z to promote my show more. Are the Borgias going to take Michelangelo’s word for how they should allocate their money? It’s ridiculous.
Looking at ratings is a hobby. There is absolutely nothing you can do to make your show more popular based on the ratings of a single week. Your network exec might call and say, “The show needs to be sexier,” but by the time you’ve made that course correction, you will be months away from the original issue. And when you’re working for Netflix or Hulu or Apple or any one of the streamers, you will have delivered your show before it airs. It has always been a black hole. The idea that it is a blacker hole now than it was in 1992 or 1977 is risible. The fact that they gave me the budget to make a show — that buys them the right to interpret that data however they want. We don’t have a right to this information. Money doesn’t give a fuck.
6.
Creator of a Current Prime Video Series
I rely on the internet: How many people online are talking about it and tagging us, doing searches of the character names, seeing what they’re saying. But other than that? I have no idea what the streamer is actually looking at. It was not a ton of fanfare when we got renewed. We were obviously thrilled — but we weren’t really told anything about why.
What I like most about the streaming model is making a show without audience interference. I’ve been on shows where it’s airing as you’re making it, and they have adjusted as a result: “Oh, the viewers don’t like this character — let’s soften him.” The audience starts to have fingerprints on the show itself, which in some ways can be good, I suppose, but it’s not as pure. I do miss execs who were tastemakers and just decided, “I like it. Who cares?” We talk about this all the time, but Seinfeld took three years to get people excited about it. The good stuff takes a minute, and nobody has a minute anymore.
7.
Showrunner of a Current Netflix Reality Series
People have short memories. The stories people tell about how The Office didn’t do well in the beginning but they gave it a chance — or Seinfeld or Cheers or whatever. The reason those stories are so heralded is because that happened so infrequently.
In the old system, people would complain when the ratings weren’t as good as networks might want them to be in week two or three: “It really gets good in episode five, and they’re not letting it happen!” There was certainly no real transparency with what the networks were charging for advertising time: Was your show worth more than someone else’s show? I remember being in a meeting with the head of a network once who was like, “My advertising is sacrosanct! You don’t get to participate in any of that.” You’re working with a different set of data and a different set of tools now, but I don’t think you’re any worse off.
I’ve had a shitload of shows canceled. Did I like it? No. Did I get it? Yes. When a show is canceled, it’s like somebody who gets broken up with. You’re in a relationship, and your partner tells you they don’t want to be with you anymore. And this conversation is, like, “But why don’t you want to be with me? Why? Why? What did I say?” They’re done with you. The relationship’s over; that’s it. And I know that sucks, but you know what? I’ve got to pick myself up and find a new relationship.
8.
Showrunner of a Canceled Netflix Half-hour Series
We had a lot of creative freedom, which we were grateful for. But it was very clear after our first season that international and new subscribers were the goal. I don’t know that they’re in the business of making more than three or four seasons anyway, because as shows continue, bonuses and payouts for creators become larger. If it’s not getting that much better for them, they’re not interested. They want to cut you off before you can make a down payment on a house.
When we actually got to a meeting about viewership, they showed us that bar graph: “Here’s the budget of your show, and here’s your value to Netflix. Here’s all these other shows, and here’s where yours is performing.” We’re like, “What’s that show above us?” And they’re like, “We can’t tell you.” So we say, “Well, what’s that show below us?” And they say, “We can’t tell you that, either.” And I’m like, “Well, it matters to me if it’s The Ranch.” It’s like reading something where everything is redacted except stuff that makes you feel bad about your show. So you’re like, “This FBI file kind of sucks.”
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(3),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(136),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"3":3,"12":12,"124":124,"136":136}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(408),Fingerprint2=require(407),DS=require(406),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(408),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"408":408,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]