MLS MatchDay Alerts


Let’s talk about mobile apps and notifications. The MLS MatchDay app is available for iPhone and iPad, Android, and now Windows 8. One part of our mobile strategy is to get fans engaged with notification alerts. We utilize Push IO for our mobile app notification service. They provide the service that manages alert subscriptions, delivers alerts to multiple platforms, and helps prevent us from sending duplicates to devices.

I won’t get into all of the specifics on the device side here since the documentation and SDK support should be easy for you to figure out.

Setup Subscriber Categories

First thing you need to do is decide what “Categories” (This is a Push IO term) your customers are going to subscribe to. We offer several different kinds including stats-based, news-based, and video-based. We started off with stats since it made sense. We created a bunch of “Categories” that fans can enable or disable. In our case, each category name has elements like teams, types of stats, types of content, and games.

Example Categories:

News_Seattle = News that includes Seattle Sounders

Game_20130302_SEA_POR_Score = Score updates to Seattle vs Portland on March 2nd, 2013

Club_Seattle_Video = Seattle Sounders Video Alerts

We utilize hundreds of these categories since we have 300+ MLS games in a season and 6 types of alerts per game.


Like most sports, we rely on data feeds to run much of our statistics. Our live real-time statistics data comes from Opta. We utilize iNotify to monitor filesystem changes and execute actions (copy, process, curl, etc.) once we get updated data. The standard statistic based alerts are executed with this process and key information is stored by Push IO to prevent duplicates.

Score Alert Example:

[Minute]’ [TeamAbbr] GOAL

Goal Scored by [PlayerName]

curl ''
	-d 'payload={"message":"[Minute]' [TeamAbbr] GOAL\n
	Goal scored by [PlayerName]"}&tag_query=Game_20130302_SEA_POR_Score'

MLS MatchDay for iOS

Breaking Alerts

There are going to be times when you want to inform your customers about something important. Earlier this year one of the MLS game was postponed due to weather. While you could alert all of your customers about this schedule change, we targeted just customers from the clubs involved and customized the message to them.

In the following example, we are notifying fans who subscribed to the “Colorado Rapids breaking news” category Club_Colorado_BreakingNews with the following message.

ALERT: Rapids-Union match postponed until Sunday at 3pm ET due to winter storm conditions

curl ''
	-d 'payload={"message":"ALERT: Rapids-Union match postponed until Sunday at 3pm ET due to winter storm conditions"}

We could also send an alert to fans from the opposing team Club_Philadelphia_BreakingNews

However, we don’t want fans who subscribe to both of these alerts to get duplicate alerts! Who ever wants duplicate alerts?

Instead we utilize the OR statement in the tag_query.

curl ''
	-d 'payload={"message":"ALERT: Rapids-Union match postponed until Sunday at 3pm ET due to winter storm conditions"}
	&tag_query=Club_Colorado_BreakingNews or Club_Philadelphia_BreakingNews'

MLS MatchDay for iOS


While the sheer quantity of alerts is interesting, we are very interested in the engagement. We look at engagement as the final piece of the workflow, since it tells us how our fans are reacting the alerts.

  1. Fan opt-in for alerts (Audience Size)
  2. Fan receives alert (Distribution)
  3. Fan opens app (Open Rate)
  4. Fan views article/video (Engagement)

Each of these is an important step in the mobile alert engagement funnel and with Push IO we can watch these metrics in real-time with their dashboard.


That’s a basic overview of how we send millions of notification alerts to MLS fans. By leveraging Push IO and some simple shell scripting, we are able to bring relevant and timely alerts to our mobile apps. Every year we continue to expand the customization options. This year we added the ability to hide scores on alerts and get alerts for pre-game lineups. Tweet your ideas and suggestions for the next version to @chrisbettin.

Author: Chris Bettin (@chrisbettin)

New MLS Mobile App for 2015

January 12, 2015

Open beta for new

December 04, 2014 Hans Gutknecht

Standings Visualizations

October 30, 2014 Tom Youds