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.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”.
You import stream groups as event groups
Select which M3U stream groups Teamarr should process. Each imported group becomes an event group.
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.
Two types of groups
- Event groups
- Subscription-only 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
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.
Select groups
Choose the stream groups you want Teamarr to process. Groups are shown by M3U account.
Confirm import
Click to import. The groups are created with default settings inherited from Global Defaults.
Configuring a group
Source settings
| Field | Description |
|---|---|
| Name | Descriptive label for the group (e.g., “ESPN+ Sports”, “NHL Backup”) |
| M3U Account | Which Dispatcharr M3U account to pull streams from |
| Stream Group | The specific group within that account, or “All Groups” to include all streams |
Channel assignment
| Field | Options |
|---|---|
| Channel Assignment Mode | Auto (sequential from configured range) or Manual (fixed starting number) |
| Channel Group | Use Default, Static (a fixed group name), or Dynamic ({sport} / {league} wildcards) |
| Channel Profiles | Use Default or Custom profiles for this group |
| Channel Sort Order | Time, Sport then time, or League then time |
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
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:| Setting | What it controls |
|---|---|
| League subscriptions | Which non-soccer leagues to scan (NFL, NBA, NHL, etc.) |
| Soccer mode | Follow teams, select leagues, or include all soccer |
| Template assignments | Which EPG template to use by sport or league |
| Team filter | Include or exclude specific teams from matching |
- 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.| Extractor | Purpose | Example pattern |
|---|---|---|
| Teams | Extract home and away team names | (?P<home>.*)\s*vs\s*(?P<away>.*) |
| Date | Extract event date | \d{1,2}/\d{1,2}/\d{4} |
| Time | Extract event time | \d{1,2}:\d{2}\s*(?:AM|PM)? |
| League | Extract a league hint | (?:NFL|NBA|NHL): |
| Fighters | Extract fighter names for MMA/Boxing | (?P<fighter1>.*)\s*vs\s*(?P<fighter2>.*) |
| Event name | Extract the event name directly | — |
Stream matching pipeline
When EPG generation runs, every stream in each event group goes through a four-stage pipeline:- Filtering — include/exclude regex rules are applied; built-in filters remove non-sport content
- Classification — the stream name is parsed to extract teams, league, date, and time
- Matching — the extracted data is used to find the corresponding event in the sports data cache
- Channel creation — a Dispatcharr channel is created or updated with the full EPG programme
Preview feature
Before running a full EPG generation, you can test matching for a specific group:- In the event groups table, click the preview button (eye icon) for the group you want to test
- Teamarr runs matching for that group’s current streams without writing to the EPG output
- The preview modal shows which streams matched, which failed, and why
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