Skip to main content
Event-based EPG creates dynamic channels from M3U streams. Unlike team channels (which are persistent 24/7), event channels appear when a game is about to start and disappear after it ends.

How it works

Your IPTV provider delivers streams organized into groups — “NFL”, “ESPN+”, “DAZN”, and so on. Teamarr reads those stream names, figures out which real-world sporting event each one represents, and builds a fully populated EPG channel for it.
1

Your provider delivers streams

M3U stream groups from your Dispatcharr accounts contain streams named things like “NFL: Bills vs Dolphins” or “NHL: Maple Leafs @ Bruins”.
2

You import stream groups as event groups

Select which M3U stream groups Teamarr should process. Each imported group becomes an event group.
3

Teamarr matches streams to events

During EPG generation, Teamarr parses each stream name, identifies the sport and teams, and finds the matching game in its sports data cache.
4

Channels are created in Dispatcharr

Matched streams get channels with proper names, logos, EPG programmes, and group/profile assignments.

Two types of groups

Standard event groups pull from a specific M3U account and stream group. Each stream is parsed and matched to a real game. Channels are created per-event and cleaned up afterward.Use event groups for sports streams from IPTV providers — sources where stream names reflect actual games (“NFL: Chiefs vs Raiders”).

Creating an event group

1

Open the import dialog

On the Event Groups page, click Import. Teamarr fetches available stream groups from your Dispatcharr M3U accounts and displays them with stream counts.
2

Select groups

Choose the stream groups you want Teamarr to process. Groups are shown by M3U account.
3

Confirm import

Click to import. The groups are created with default settings inherited from Global Defaults.
4

Edit if needed

Open the group editor to configure source, matching options, channel assignment, and any overrides.

Configuring a group

Source settings

FieldDescription
NameDescriptive label for the group (e.g., “ESPN+ Sports”, “NHL Backup”)
M3U AccountWhich Dispatcharr M3U account to pull streams from
Stream GroupThe specific group within that account, or “All Groups” to include all streams

Channel assignment

FieldOptions
Channel Assignment ModeAuto (sequential from configured range) or Manual (fixed starting number)
Channel GroupUse Default, Static (a fixed group name), or Dynamic ({sport} / {league} wildcards)
Channel ProfilesUse Default or Custom profiles for this group
Channel Sort OrderTime, Sport then time, or League then time
Dynamic channel groups using {sport} or {league} wildcards automatically create the corresponding groups in Dispatcharr on the first generation run.

Stream filters

Control which streams from the M3U group are processed:
  • Include regex — only process streams matching this pattern
  • Exclude regex — skip streams matching this pattern
Built-in filters remove obvious non-sport content automatically. Use include/exclude regex for finer control over a noisy stream source.

Global defaults vs per-group overrides

Teamarr uses a global subscription model. The Global Defaults panel at the top of the Event Groups page controls settings that apply to all groups:
SettingWhat it controls
League subscriptionsWhich non-soccer leagues to scan (NFL, NBA, NHL, etc.)
Soccer modeFollow teams, select leagues, or include all soccer
Template assignmentsWhich EPG template to use by sport or league
Team filterInclude or exclude specific teams from matching
Individual groups can override these defaults when needed:
  • Subscription override — specify which leagues this group should scan, ignoring the global subscription
  • Template override — use a specific template for all events in this group
  • Team filter override — include or exclude teams differently from the global filter
Per-group template overrides take absolute priority over the subscription-based template assignment rules.

Custom regex extractors

By default, Teamarr’s built-in classifier handles most stream name formats. When your IPTV provider uses unusual naming, you can override specific parts of the parsing with custom regex.
ExtractorPurposeExample pattern
TeamsExtract home and away team names(?P<home>.*)\s*vs\s*(?P<away>.*)
DateExtract event date\d{1,2}/\d{1,2}/\d{4}
TimeExtract event time\d{1,2}:\d{2}\s*(?:AM|PM)?
LeagueExtract a league hint(?:NFL|NBA|NHL):
FightersExtract fighter names for MMA/Boxing(?P<fighter1>.*)\s*vs\s*(?P<fighter2>.*)
Event nameExtract the event name directly
Each extractor has an enable toggle. Leave it disabled to use the built-in parser for that field.

Stream matching pipeline

When EPG generation runs, every stream in each event group goes through a four-stage pipeline:
  1. Filtering — include/exclude regex rules are applied; built-in filters remove non-sport content
  2. Classification — the stream name is parsed to extract teams, league, date, and time
  3. Matching — the extracted data is used to find the corresponding event in the sports data cache
  4. Channel creation — a Dispatcharr channel is created or updated with the full EPG programme
Streams that make it through all four stages appear in the Matched count. Streams that fail at the matching stage appear in the Failed count.

Preview feature

Before running a full EPG generation, you can test matching for a specific group:
  1. In the event groups table, click the preview button (eye icon) for the group you want to test
  2. Teamarr runs matching for that group’s current streams without writing to the EPG output
  3. The preview modal shows which streams matched, which failed, and why
Use preview after configuring a new group or changing regex extractors to confirm everything is working before committing to a full run.

Event matcher — fixing failed streams

Streams that can’t be matched automatically appear in the Failed count. Click the Failed number in the event groups table or in the EPG run history to open a drill-down modal showing per-stream failure details. Each failed stream has a Fix button that opens the event matcher. The event matcher lets you:
  • Search for the correct real-world event manually
  • Link the stream to the matching event
  • Save the association so future runs match it automatically
Failed streams result in channels without EPG data. Use the event matcher to fix high-value streams that your provider names in a non-standard format.

Build docs developers (and LLMs) love