Documentation Index

Fetch the complete documentation index at: https://docs.xtremepush.com/llms.txt

Use this file to discover all available pages before exploring further.

Real-time sport updates

Prev Next

Keep fans up-to-date as matches unfold in real-time based on their registered interest

Real-time Sport Updates from Xtremepush allows you to send triggered campaigns based on real-time match updates.

Can't see this option?

The real-time Sport Update is a paid feature. If you wish you enable it, please contact your Account Manager to get information on pricing.

Sport Radar event IDs required

This feature relies on the Sport Radar feed which uses the Bet Radar sport_event IDs to identify from which match a user is interested in receiving updates.

There is currently no mapping available for sport_event IDs from other feed providers and so it is recommended you only use this feature if you are able to provide Sport Radar Bet Radar sport_event IDs from your own sports betting and gaming platform.

Connect and setup steps

The set-up of the Real-time Sport Updates feature is done in 4 steps.

1. Enable the feed

Enable the feed to allow incoming game events to be passed into the project. These events will be used to trigger campaigns.

Go to: Settings > Integrations > Marketplace and select the Real-time Sport Updates integration.

2. Select sport

After enabling the feed, there is an option to select the sport whose live events will be used for triggering the campaigns. The current integration supports soccer, NBA, MLB, NFL and NHL sports events.

3. Pre-select customer identity

After selecting the sport, there is an option to select the unique identifier to be used for individual users/devices. The selection here is the same as would be used when setting up a user list.

To offer the Real-time Sport Updates functionality to logged-in users, your User ID can be passed to Xtremepush when registering to follow a match (more on this below).

Identify your users by Device ID

So that you can also send updates to logged out users or to register interest by device it is suggested that you set up and pass the Xtremepush device ID.

Registering by device requires you to integrate the Xtremepush SDK in your app so the Xtremepush device ID can be tracked by, and stored in your app. Review dedicated guides on how to integrate the Xtremepush SDK in your website, Android and iOS app.

Once the setup is complete it is important to link which campaign will be triggered by which sporting event. For example, you may want a campaign which contains the current score to be sent when the game hits halftime.

For more information on building the campaigns, see the section below.

To make the selection, navigate to Settings > Integrations > Marketplace > Configured integrations > Real-time Sport Updates > Overview. Then select one of the available events and then choose which campaign to trigger when that event is fired.

2260

In this example, you can map the score change event to a specific campaign.

Register that a customer is following a match

For a customer to receive the triggered campaigns, you must register their unique ID to follow a particular sport event, or match, using the Follow API method.

After receiving the details of the user or device, Xtremepush will add them to a list which can be found under:
Data > Audiences > Sport feeds.

Sport feeds lists

Review these lists during set up to check IDs are being correctly received and stored.

Deregister a customer from following a match

To remove a customer from following a sport event, you should use the Unfollow API method.

Create API campaigns

Events received by the project will trigger any mapped campaigns which must be set up as API-triggered campaigns.

When creating the content in the messages, dynamic values can be pulled from the incoming feed and displayed, depending on the type of sporting event.

Example of placeholder token: {{ payload.event.home_score }}.

Campaign content examples

Below is some example content that can be used for each of the Events offered in the Overview > Mapping section.

Match started
{{ payload.event.home_team }} - {{ payload.event.away_team }}
Half time
{{ payload.event.home_team }} ({{ payload.event.home_score }}) - ({{ payload.event.away_score }}) {{ payload.event.away_team }}
Second half started
{{ payload.event.home_team }} - {{ payload.event.away_team }}
Match ended
{{ payload.event.home_team }} ({{ payload.event.home_score }}) - ({{ payload.event.away_score }}) {{ payload.event.away_team }}
Yellow card
{{ payload.event.player_name }} of {% if payload.event.competitor == "home" %} {{ payload.event.home_team }} {% else %} {{ payload.event.away_team }} {% endif %}
Red card
{{ payload.event.player_name }} of {% if payload.event.competitor == "home" %} {{ payload.event.home_team }} {% else %} {{ payload.event.away_team }} {% endif %} {{ payload.event.match_time }} (second yellow)
Red card
{{ payload.event.player_name }} of {% if payload.event.competitor == "home" %} {{ payload.event.home_team }} {% else %} {{ payload.event.away_team }} {% endif %} {{ payload.event.match_time }}
GOAL!
{% if payload.event.competitor == "home" %} {{ payload.event.home_team }} ({{ payload.event.home_score }}) - {{ payload.event.away_score }} {{ payload.event.away_team }} {% else %} {{ payload.event.home_team }} {{ payload.event.home_score }} - ({{ payload.event.away_score }}) {{ payload.event.away_team }} {% endif %} {{ payload.event.match_time }}
GOAL!
{% if payload.event.competitor == "home" %} {{ payload.event.home_team }} ({{ payload.event.home_score }}) - {{ payload.event.away_score }} {{ payload.event.away_team }} {% else %} {{ payload.event.home_team }} {{ payload.event.home_score }} - ({{ payload.event.away_score }}) {{ payload.event.away_team }} {% endif %} - {{ payload.event.player_name }} {{ payload.event.match_time }}

Add dynamic values to the campaign

Soccer dynamic values

For soccer matches the full list of available field are as follows:

Available dynamic values

Returned information

Translated

metadata.sport_event_id

The id for the match or sporting competition.

NA

payload.event.id

The id for each individual event received within the match or sporting competition.

NA

payload.event.match_clock

Elapsed time in minutes and seconds: e.g. 9:23, 45:51

NA

payload.event.match_time

Minute of the match: e.g. 10', 45+1

NA

payload.event.home_score

Current home score

NA

payload.event.away_score

Current away score

NA

payload.sport_event_status.aggregate_away_score

Aggregated away score for multi-leg games

payload.sport_event_status.aggregate_home_score

Aggregated home score for multi-leg games

payload.event.competitor

home or away

payload.event.home_team

Home team name

Yes

payload.event.away_team

Away team name

Yes

payload.event.player_name

Name of the players name that triggered the event

Yes

payload.event.description

One of the following possible values:
goal, penalty, red_card, call_stands, call_overturned, no_goal, no_penalty, no_red_card

payload.event.method

One of the following possible values:
penalty, own_goal, header, shot, free_kick

payload.event.type

One of the following possible values:
match_started, match_ended, period_start, score_change, yellow_card, yellow_red_card, red_card, break_start

payload.event.players

JSON object containing id, name and type.
type is one of possible values:
scorer, assist, substituted_in, substituted_out

Yes (player names only)

Translations

Where the row is marked as Translated = Yes, the placeholder will be replaced with the correct language based on the campaign language variant.

Be aware that not all teams/players will have a translation, and not all languages are available. In this case, the default language will be used.

NBA dynamic values

For NBA matches the full list of available field are as follows:

Translations for NBA feed

The NBA feed does not support translations.

Available dynamic values

Returned information

payload.game.id

The id for the match.

payload.event.id

The id for each individual event received within the match.

payload.event.clock

Elapsed time in minutes and seconds: e.g. 9:23, 45:51

payload.event.home_points

Current home score

payload.event.away_points

Current away score

payload.event.competitor

home or away

payload.event.home_team

home team name

payload.event.away_team

away team name

payload.event.player_name

Name of the players involved with the triggering event (only in the case of ejections)

payload.event.event_type

One of the following possible values:
match_started, match_ended, period_start, period_ended, ejection

payload.event.players

JSON object containing id, full_name and jersey_number.

Basketball dynamic values

For Basketball matches the full list of available fields are as follows:

Translations for Basketball feed

The Basketball feed supports translations for team and player names across 24 languages: Danish, German, Greek, English, Spanish, Finnish, French, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Dutch, Norwegian, Portuguese, Russian, Serbian, Serbian Latin, Swedish, Thai, Turkish, Chinese (Simplified), and Chinese (Traditional).

In the table below, where the row is marked as Translated = Yes, the placeholder will be replaced with the correct language based on the campaign language variant.

Available dynamic values

Returned information

Type

Translated

payload.event.id

The id for each individual event received within the match.

Integer

payload.event.event_type

The type of event. It can be of the following possible values: match_started, period_start, break_start, score_change, ormatch_endedNote: break_start is used to mark the end of a quarter/period, not only halftime.

String

payload.event.time

Timestamp of the event. For example: 2026-01-31T16:17:33+00:00

Datetime

payload.event.match_time

Match time elapsed in minutes

Integer

payload.event.match_clock

Game clock e.g. 10:13

String

payload.event.home_score

Current home score

Integer

payload.event.away_score

Current away score

Integer

payload.event.home_team

Home team name

String

Yes

payload.event.away_team

Away team name

String

Yes

payload.event.competitor

Identifies whether the team involved in the event is home or away

String

payload.event.points

The type of point scored or attempted. For example, 1, 2 or 3

Integer

payload.event.x

X coordinate of where the event occurred

Integer

payload.event.y

Y coordinate of where the event occurred

Integer

payload.event.player.id

Sport radar player ID for the player involved in the event

Integer

payload.event.player.name

Name of the player that triggered the event along with player details

String

Yes

payload.event.player_name

Name of the player that triggered the event

String

Yes

payload.event.period_name

The current period name. For example, 2nd_quarter, 3rd_quarter

String

payload.event.break_name

The current break event. For example, 1st_pause orhalftime.

String

payload.sport_event_status.status

The match status. For example, live, ended, orpostponed

String

payload.sport_event_status.clock.played

The time that has been played in the current period, for example, 10:13. Same value as payload.event.match_clock

String

payload.sport_event_status.clock.remaining

The time remaining in the current period, for example, 09:23. Inverse of payload.sport_event_status.clock.played

String

Limited data points for certain event types

The match_started, match_ended, and break_start event types do not include the following data points:

  • payload.event.competitor

  • payload.event.points

  • payload.event.x

  • payload.event.y

MLB dynamic values

For MLB matches the full list of available field are as follows:

Translations for MLB feed

The MLB feed does not support translations.

Available dynamic values

Returned information

payload.game.id

The id for the match.

payload.event.id

The id for each individual event received within the match.

payload.event.type

The type of the event. One of the following possible values: match_started, break_start, key_period_start, period_start, key_period_end, period_end, match_ended, homerun

payload.event.wall_clock.start_time

The start times of the event, including timezone e.g. 2023-06-29T17:12:33+00:00

payload.event.wall_clock.end_time

The end times of the event, including timezone e.g. 2023-06-29T17:12:33+00:00

payload.game.home.name

The nickname of the home team; e.g. Mets, Astros

payload.game.away.name

The nickname of the away team; e.g. Mets, Astros

payload.game.home.market

The city of the home team; e.g. New York, Houston

payload.game.away.market

The city of the away team; e.g. New York, Houston

payload.game.home_team

The full name of the home team combining market and name; e.g. New York Mets, Houston Astros

payload.game.away_team

The full name of the away team combining market and name; e.g. New York Mets, Houston Astros

payload.game.home.runs

The number of runs scored by the home team

payload.game.away.runs

The number of runs scored by the away team

payload.event.hitter.first_name

The player's first name at bat

payload.event.hitter.last_name

The player's last name at bat

payload.event.hitter.id

The player's id at bat

NHL Dynamic Values

For NHL matches the full list of available field are as follows:

Translations for NHL feed

The NHL feed does not support translations.

Available dynamic values

Returned information

payload.game.id

The id for the match.

payload.event.id

The id for each individual event received within the match.

payload.event.event_type

The type of the event. One of the following possible values:
match_started, period_start, period_end, match_ended, score_change

payload.event.clock

The game time of the event e.g. 18:17

payload.game.home.name

The nickname of the home team; e.g. Avalanche, Canucks

payload.game.away.name

The nickname of the away team; e.g. Avalanche, Canucks

payload.game.home.market

The city of the home team; e.g. Colorado, Vancouver

payload.game.away.market

The city of the away team; e.g. Colorado, Vancouver

payload.game.home_team

The full name of the home team combining market and name; e.g. Colorado Avalanche, Vancouver Canucks

payload.game.away_team

The full name of the away team combining market and name; e.g. Colorado Avalanche, Vancouver Canucks

payload.game.home_score

Score of the home team in question

payload.game.away_score

Score of the away team in question

payload.game.home.scoring[1].points

1st-period score for home team

payload.game.home.scoring[2].points

2nd-period score for home team

payload.game.home.scoring[3].points

3rd-period score for home team

payload.game.away.scoring[1].points

1st-period score for away team

payload.game.away.scoring[2].points

2nd-period score for away team

payload.game.away.scoring[3].points

3rd-period score for away team

payload.event.attribution.name

The name details for the team that scored, for score_change events; e.g. Canucks

payload.event.attribution.market

The market details for the team that scored, for score_change events e.g. Vancouver

NFL Dynamic Values

For NFL matches the full list of available field are as follows:

Translations for NFL feed

The NFL feed does not support translations.

Available dynamic values

Returned information

payload.game.id

The id for the match.

payload.event.id

The id for each individual event received within the match.

payload.event.type

The type of the event. One of the following possible values: match_started,match_ended, score_change

payload.event.clock

The game time of the event e.g. 18:17

payload.event.wall_clock

The start times of the event, including timezone e.g. 2022-06-29T17:12:33+00:00

payload.game.home.name

Nickname of home team; e.g. Chargers, Brancos

payload.game.away.name

Nickname of away team; e.g. Chargers, Brancos

payload.game.home.market

The city of the home team; e.g. Los Angeles, Denver

payload.game.away.market

The city of the away team; e.g. Los Angeles, Denver

payload.game.home_team

The full name of the home team combining market and name; e.g. Los Angeles Chargers, Denver Brancos

payload.game.away_team

The full name of the away team combining market and name; e.g. Los Angeles Chargers, Denver Brancos

payload.game.home_score

Score of the home team in question

payload.game.away_score

Score of the away team in question

payload.game.home.scoring[1].points

1st-period score for home team

payload.game.home.scoring[2].points

2nd-period score for home team

payload.game.home.scoring[3].points

3rd-period score for home team

payload.game.away.scoring[1].points

1st-period score for away team

payload.game.away.scoring[2].points

2nd-period score for away team

payload.game.away.scoring[3].points

3rd-period score for away team

Dynamic Syntax

Using some basic dynamic syntax, it is possible to loop through the list of players involved in the particular event:

{% for player in payload.event.players %}
    Player id: {{ player.id }}
    Player Name: {{ player.name }}
    Type: {{ player.type }}
{% endfor %}

Available competitions

You can find all available matches by navigating to Data > Audiences > Sport Feed Lists
It is also possible to check the existence of a specific match upto 10 days in advance by using the List API.

In-game updates

When a specific sport_event update is received, Xtremepush triggers the mapped campaign from above and sends it to any user/device currently on the list with the matching sport_event ID.

Analytics

Analytics for API campaigns triggered by a sporting feed integration are as per normal API campaign analytics.