Is StubHub's Website Deceiving users?

Sept. 11, 2017, 2:40 p.m.

Update: An Ebay employee reached out to me on twitter and claimed to have lodged an internal complaint (Ebay is StubHub's parent company). They followed up in a public tweet: "StubHub is continually testing features to improve the customer experience. We have heard your feedback and have turned off the sold testing". They also reached out in DM on twitter and said it was part of an AB feature test (which I saw in the code), and they turned it off. While I am pleased at the prompt response, I am still skeptical. An AB test could make it more manipulative and not less if it was used to only show the "feature" (as they call it) on events where it was less likely to be discovered. The Ebay employee could not tell me how they determined which users to show this nefarious "feature" to.

Update 2: The code still seems to be there, they just have turned off the AB for the events I have checked.

 

My College, the University of Louisville, has one of their biggest ever home football games coming up this Saturday at home against #3 ranked Clemson. So I decided to check out tickets on StubHub (way too late for anything reasonable as it turns out). It is obviously going to be a tough ticket to get, but the amount of traffic and tickets selling on stub hub struck me as weird (spoiler alert, it is). So I put on my nerd hat, opened chrome dev tools and got to investigating.

www.stubhub.com

First, when you open the page, you are presented with a list of tickets to purchase. Then, like clockwork, two of the options suddenly get marked as "sold". This creates a sense of urgency, almost like any ticket could be bought at any time. You know the site must be busy since these tickets are going from "available" to "sold".

 

Well... wait a minute. Isn't it weird that the two that sold don't match the price ordering of the rest of the list? Also isn't it weird that the tickets get marked sold very soon after you open the page, and it's always the tickets right at the top? And isn't it weird that tickets don't continue to sell at the same rate while you keep the page open? Yes, it's weird.

Digging through their javascript code, I found a nice snippet that seems to answer all of these questions. For the nerds, the code is below and for the non-nerds, I'll summarize here. When you load a page they get a list of tickets that have already sold, then they make sure to only show you two that you haven't seen before, and to insert them in random places in the top of the list so that you are sure to see them, then they mark them as sold to create a false sense of urgency.

In fact, you can test this out by opening dev tools (press f12 in chrome), navigate to the "Application" tab and delete the value beside the typo'd key "ugrency-message-{IDOFYOUREVENT}". In most cases this value will be one or two ids (the ids of the tickets that were already sold before you loaded the page). Then refresh the page and see that most likely the same two tickets will appear in a different order and then be marked as "sold". There should be an "ugrency-message" for each event that you have visited (they may have this set so not all events do it, I really haven't checked much outside the one game I was interested in).

 

The moral of the story is that StubHub is misrepresenting ticket availability to manipulate consumers, so be aware of the false sense of urgency they want to create when you are buying tickets. I hope this post helps you be a better consumer, and I hope it makes its way to someone at StubHub so that they can stop this and any other deceptive practices they may currently be engaging in.

CODE from stubhub's client side code:

 

        appendJustSoldListingsTo: function(listings) {
            var urgencyMessageListings = gc.urgencyMessageData ? gc.urgencyMessageData.listings : [],
                eventId = this.eventId,
                listingsLen = listings.length,
                zoneId = listings[0].zoneId,
                sessionListings;

            if (!globals.hideUrgencyMessage && SH.mbox.justSoldEvent && urgencyMessageListings && urgencyMessageListings.length) {
                sessionListings = sessionStorage.getItem('ugrency-message-' + eventId);

                // filter out sold out listings which already showed last time
                if (sessionListings) {
                    sessionListings = sessionListings.split(',');

                    urgencyMessageListings = urgencyMessageListings.filter(function(soldOutListing) {
                        var listingId = soldOutListing.seats[0].listingId;
                        return !_.contains(sessionListings, String(listingId));
                    });
                }

                // make sure only two sold out listings
                if (urgencyMessageListings.length > 2) {
                    urgencyMessageListings.length = 2;
                }

                if (urgencyMessageListings.length) {
                    // update cache
                    sessionListings = [];
                    urgencyMessageListings.forEach(function(listing, index, umListings) {
                        umListings[index].isSoldOutListing = true;
                        umListings[index].zoneId = zoneId;
                        sessionListings.push(listing.seats[0].listingId);
                    });

                    // append listing
                    if (listingsLen >= 5) {
                        // insert sold out listing into random position from 2~5
                        listings.splice(parseInt(Math.random() * 4) + 1, 0, urgencyMessageListings[0]);

                        if (urgencyMessageListings.length === 2) {
                            listings.splice(parseInt(Math.random() * 5) + 1, 0, urgencyMessageListings[1]);
                        }
                    } else if (listingsLen > 0) {
                        // insert sold out listing into at the second listing
                        listings.splice(1, 0, urgencyMessageListings[0]);
                    }
                }
                sessionStorage.setItem('ugrency-message-' + eventId, sessionListings.join(','));
            }

            return listings;
        },

  • Where has ethics gone to in the corporate world? I also came across them displaying say only 4 tickets for what it seems like a sold out event but in reality it was never sold out and the prices were cheaper on the day of the actual event. I recall seeing something along the lines of the event being almost sold out. Maybe Stubhub only had 4 tickets during that time so I could be wrong. It is a community from ticket holder to ticket holder.
    Patrick Fedigan - Sept. 11, 2017, 7:14 p.m.
  • This is also done, to a far far far worse extent, on Viagogo - loading bars, "heavy traffic" warnings, "high demand" warnings, "recently sold" warnings. It's so bad that'd I'd consider it manipulative.
    F - Sept. 11, 2017, 9:40 p.m.
  • Similar experience while selling my ticket they were trying to manipulate my listing price by bumping up the ticket price and decreasing their fee. Person who is in charge of the product and the team should be sacked. Stubhub learn to be honest!!!!
    John - Sept. 11, 2017, 11:49 p.m.
  • Check out Viagogo - they've perfected this.
    John - Sept. 13, 2017, 3:14 a.m.
  • Suspect ticketmaster also?
    Bill - Sept. 13, 2017, 2:40 p.m.
  • I have seen this type of behavior before on hotel, airline and rental car site, Then I use a new IP then see the data different, I figured it was a clever way to get me to buy, However in the ticket business...... NOT !! no matter what good business will bring more good business, Being a legal act or not doesn't matter, it is definitely a no no, Stubhub why didn't you go the other way and tell the buyers that you have the most cleanest reputable site and know how to prevent this exact thing, NOW YOUR TOO LATE you have a responsibility to the industry, but you wouldn't understand if you didn't start before the web. I still don't get it. If some consumer protection group came after you for this then a class action suit followed by a crash in sales and then here comes the media indictment or maybe bad the press will be a positive but I don't think so. Should I call the Today show? Go ahead & put a lot of jobs on the line.... time to sell ebay stock short.....this could even crash ebay......... so surprised it hasn't got out yet. Thank you very much Jordan well done!!
    Ticket Tim - Oct. 3, 2017, 5:48 p.m.