# Football World Cup 2026

> A work in progress World Cup 2026 live site exploring Salesforce Headless360 through a personal event experience.

- Canonical page: [https://www.sergiopesch.com/projects/football-world-cup-2026](https://www.sergiopesch.com/projects/football-world-cup-2026)
- Content type: project
- Published: 2026-06-11
- Content updated: 2026-07-13
- Repository created: 2026-06-11
- Repository updated: 2026-07-11
- Author: [Sergio Peschiera](https://www.sergiopesch.com/about)
- Topics: Salesforce, Data 360, Headless360, Heroku
- Status: Building in public
- Repository visibility: private
- Live project: [https://worldcup-2026-headless-70dfbbd8ae82.herokuapp.com](https://worldcup-2026-headless-70dfbbd8ae82.herokuapp.com)

## Content

I started this days before kick off to test Headless360. It became a broader experiment in making live football data trustworthy, explainable and useful across the entire journey, from the first API call to the answer Johnny gives a supporter.

**Update · July 13, 2026.** I originally bought one month of access to SportMonks so I could get the first live football version moving quickly. When that subscription ended, I still wanted the experience to feel as close to live as a personal project reasonably can, without pretending that a free feed is the same thing as a contracted broadcast data service.

I did not remove the SportMonks integration, its historical records or its identifiers. Instead, I built a provider neutral route beside it and switched the active match day mode to `HybridFree`. SportScore is now the primary source for scores, match state, the clock, incidents and whatever line up or statistical detail is available. An API Football adapter can supplement missing statistics and events within its free tier allowance, but it remains optional. If I renew SportMonks later, the original route is still there.

The important part is that the rest of the system did not need to change. Every provider is translated into the same canonical Salesforce records, and the existing CRM data streams continue carrying those records into Data 360. After a live snapshot is saved, Salesforce publishes a Platform Event so the command centre can refresh immediately; a 60 second browser refresh remains as a safety net.

There is one honest limitation. SportScore is a cached REST source rather than a WebSocket, SSE or webhook stream, so the upstream feed is usually around one or two minutes behind broadcast time rather than sub second. The screen reacts as soon as Salesforce receives the change, while its source and freshness indicators make that boundary visible instead of disguising it. For me, that trade off is part of the experiment: the provider can change, but the trusted data model, lineage and supporter experience remain intact.

## Provenance and freshness

This is a first party account by the project author. Page content was last updated on 2026-07-13. The private repository last changed on 2026-07-11. Linked repositories and live services may change independently.

### Primary sources

- [Live project](https://worldcup-2026-headless-70dfbbd8ae82.herokuapp.com)
