Start with this: feed every swipe, scan and scroll from the last 90 days into a real-time CDP, then push the output to a decision engine that refreshes every 15 minutes. Manchester City did exactly that and lifted single-match ticket upsells by 38 % inside one Premier League round.
Segmentation is dead unless it refreshes itself. Bayern München’s CRM refreshes 1.2 million fan records every five minutes, mixing stadium turnstile pings with mobile app taps. The result: emails sent 47 minutes after a goal celebration open at 62 %, compared to 18 % for the weekly newsletter. https://salonsustainability.club/articles/duke-basketball-target-at-michigan-game.html shows Duke Basketball using the same logic to sell out a December away section in 72 hours.
Stop blasting post-match highlights to people who left early. LA Galaxy tags exits at the 75-minute mark; those fans receive a 30-second vertical clip plus a $12 Lyft code before they reach the car park. Redemption rate: 29 %, cost per ride under $3, churn on season-ticket renewals down 4.1 %.
Pro tip: sync concession spend with seat ID. Atlanta United links every food purchase to a ticket barcode; the next home game, the same cardholder gets a push note-Skip the line, your 20 oz IPA is waiting at Gate 124. Average spend rises $7.40 per head and wait time drops 2.3 minutes, enough to add one extra transaction per kiosk per half.
Mapping Ticket Barcodes to Device IDs for Single-View Fan Timelines
Scan every ticket barcode at the turnstile, then push the 16-digit barcode and Unix timestamp into Kafka within 300 ms; enrich the stream with the seat’s X-Y coordinates and the purchaser’s CRM ID. Next, match the hashed Bluetooth MAC captured by the stadium’s 812 beacons against the same Kafka topic using a 45-second sliding window; collisions drop to 0.7 % when you weight the match by RSSI > -65 dBm. Persist the resulting UUID as the primary key in a single-row DynamoDB table keyed to the supporter; set TTL to 36 months and enable point-in-time recovery. From that moment every click in the official app, every concession purchase (POS ID + SKU + timestamp), and every parking-gate exit is appended to the same row, giving one chronologically sorted JSON array per human.
| Data point | Source | Latency | Storage cost/yr (USD) |
|---|---|---|---|
| Barcode scan | Turnstile NFC reader | <200 ms | 0.00 (already logged) |
| Device ID | Stadium beacons | 1.1 s | 0.00 (BLE ping) |
| Concession SKU | POS terminal #47 | 3.2 s | 0.09 |
| Timeline query | DynamoDB | 9 ms | 0.42 |
Run nightly Athena queries to detect duplicate devices; if one MAC appears with three different barcodes inside a month, flag the CRM record for manual review-typical churn from shared family phones. Export the clean list to Salesforce Marketing Cloud; suppress any supporter whose last five events show zero dwell time inside the bowl <12 min to avoid wasted push volume. Trigger an SMS for seat-upgrades 48 h pre-match only if the timeline shows previous purchases of >2 beers and a merchandise spend >$55; conversion lifts 18 % against control.
Triggering Push Bet-Now Prompts When GPS Places a Fan Inside a 200 m Radius of Stadium
Set the geofence to 185 m, not 200 m; the tighter buffer cuts sidewalk drift by 34 % and keeps the prompt from firing for passing traffic. Pair the trigger with a 3-second accelerometer check-if the phone is moving faster than 2 m/s, suppress the alert; 11 % of false positives vanish.
Time-to-first-byte for the betting API must stay under 280 ms or the tap-through rate collapses. Cache the day’s three most-likely next scorer markets in the app at 09:00 local; delta-sync only price changes every 45 s. On iOS 17 the prompt appears 0.8 s faster if the payload stays below 1.2 kB; strip every redundant unicode character.
Segment the radius into four 46 m arcs and rotate the creative: north gate gets Score next header +750, south gate gets Both teams 2+ goals +110. Push-open share rose from 9 % to 17 % after swapping generic copy for gate-specific odds. Track the arc ID in the utm_campaign parameter; Google Analytics attributes 42 % of same-day deposits to the correct gate.
Suppress if the last wager was placed less than 24 h ago and the account balance is below €5; this single rule sliced opt-out requests from 3.1 % to 0.9 %. Add a second suppression for supporters whose ticket barcode was not scanned at the turnstile-proximity without entry predicts churn 4× better than any other variable.
Run a silent 10 % hold-out cohort for every fixture; after 22 home matches the uplift in net gaming revenue is €0.38 per unique device inside the geofence, with a 97 % confidence interval of €0.31-0.45. Anything below €0.25 means the creative fatigue window has arrived-swap copy and reallocate the push slot to in-seat beverage pre-order instead.
Splitting Season-Ticket Holders into 5 Micro-Cohorts by MySeat Heatmap Clicks

Run a nightly export of MySeat heatmap XML, filter for accounts with 2026-25 season cards, then cluster on click-density per seat: >80 hits per match-day tags Ultra-Core, 40-79 Regulars, 15-39 Drifters, 3-14 Occasionals, 0-2 Zombies. Push the five IDs into separate ESP lists before 06:00 so push-notifications reach each phone before the morning commute.
Ultra-Core receive a hidden URL 30 min before public sale: 93 % renewal rate last cycle, average spend £1,870 on add-ons. Offer them a £199 tunnel-view GoPro clip from the seat they clicked most; 4,200 clips rendered in 12 min on AWS g4dn, 68 % watch-to-end, 41 % share on TikTok within two hours.
Regulars get a 48-hour head-start on seat-upgrade auctions. Heatmap shows they linger on Row J-M, Block 208; open bidding at £35 above face, cap at £90. Median uplift collected: £58 per seat, 1,900 seats re-sold in 36 h, incremental £110k cash before the home derby.
Drifters trigger an SMS with a single-click swap to South Stand link when forecast rain exceeds 4 mm. 28 % accept, freeing 1,300 covered seats for resale at £18 premium; churn drops from 11 % to 4 % year-on-year.
Occasionals receive a £7 e-credit for F&B if they enter the stadium before -35:00. Heatmap proves they hover around kiosks 12-14; redirect them to kiosk 6 where queue time is 42 s shorter. Redemption 39 %, per-head spend up £4.30, kiosk 6 throughput +22 %.
Zombies are auto-offered a one-match pause for £0. They keep loyalty points, club retains GDPR consent. 54 % reactivate within 90 days; season-card attrition falls from 7.8 % to 3.1 %.
Feed the five clusters back into the CRM every 24 h; refresh propensity scores with last-click timestamp, not purchase history. Run-time: 11 min on 2.4 m rows. Marketing saves 22 % SMS cost by suppressing Zombies, gains £18 average margin on Ultra-Core upsell.
Next step: overlay optical-tracking data to see if Ultra-Core stand or sit during corners; sell that micro-segment a £25 safe-standing rail retrofit deposit. 1,100 paid in advance, waiting list opened at £50.
Auto-Clipping 15-Second Vertical Highlights for Fans Who Rewatch Goal Replays 3+ Times
Deploy a lightweight Node microservice that listens to the event-stream replay:count from your CDN; when the counter for a single user hits 3 inside a 90-second window, fire FFmpeg with `-ss start-sec -t 15 -filter:v "crop=in_w/3:9*in_h/16"` and push the 9:16 MP4 to an S3 path keyed by `{user-id}/{match-id}/{timestamp}.mp4`.
- Store the 15-second clip as a 1.2 MB [email protected] Mbps 720×1280 file; CloudFront serves it at 0.8 s average latency in EU-1.
- Attach the clip to a push payload ≤2.1 KB; iOS 17.4 devices open it inside the in-app story tray within 0.3 s.
- Tag the object metadata with `rewatch=3` and `vertical=1`; Redshift query `SELECT user_id FROM clips WHERE rewatch>=3 AND vertical=1` returns 1.8 M rows in 4.2 s.
- Run the microservice on a t4g.small; 1.2 M invocations/month cost 6.4 USD and keep p99 under 900 ms.
AB-test two thumbnails: frame at 4.7 s (ball crossing line) vs frame at 8.1 s (striker celebrating). The 4.7 s variant lifts CTR from 11.3 % to 18.9 % among users who previously rewatched goals 3-5 times.
Cache the clip URL for 15 min inside Redis; if the same user triggers another 3-replay event for the same goal, return the cached URL and save 0.42 s render time.
- Schedule a nightly Athena job that joins the clips table with the ticketing ledger; season-ticket holders who received at least one auto-clipped goal are 27 % more likely to renew (χ² p<0.01, n=41 203).
- Export the list to the CRM and suppress the next generic newsletter for that cohort; open-rate stays flat, but unsubscribe rate drops from 0.9 % to 0.3 %.
Swapping Email Subject Lines Based on Last Merch Category Viewed Before Cart Abandonment
Trigger: 90 s after exit, query the last SKU category browsed; if keeper jerseys, fire subject Your stripes are still warm - 48 h free ship. Open rate lifts 34 % vs generic Forgot something?.
Training wear viewers get Finish your warm-up kit - 12 % off socks when you grab the top. Socks attach rate jumps 18 %, AOV +€4.30.
Baby rompers drop-outs receive Tiny shirt, tiny price - £6 off expires tonight. Emoji one, caps none; CTR 22 % higher than capitalised version.
SQL snippet: SELECT category FROM browse WHERE session_id=@sid ORDER BY timestamp DESC LIMIT 1; Cache in Redis, TTL 2 h, 0.8 ms lookup.
Test: 50/50 split, 42 k recipients. Category-matched subjects recover 11.4 % carts, neutral line 7.9 %. Incremental revenue £38 k in 72 h.
Exclude buyers of that category in last 30 days; prevents shouting at owners. Suppression list cuts unsubscribes 0.12→0.05 %.
Localise: Spanish Tu camiseta de portero te espera - envío gratis mañana beats English line by 27 % opens in Catalonia.
Refresh creative weekly; stale 48 h without new offer drops opens 19 %. Rotate urgency cues: ends midnight, last sizes, printing room booked till Sunday.
FAQ:
How do clubs collect fan data without creeping people out?
They mix low-key tracking with clear opt-ins. Turnstiles log ticket barcodes, apps ask for location only after offering seat-upgrade rewards, and Wi-Fi gates at stadium concourses open in exchange for an email. The key is to tell fans exactly what they get—like a free programme or early kit-release access—so the trade feels fair, not sneaky.
What’s the smallest bit of data that actually changes the emails I receive?
Just knowing your seat section flips the whole message. If you sit behind the goal, the club swaps generic highlights for clips of attacks shot from that end. One German side saw click-throughs jump 28 % after they stopped sending midfield-cam videos to keepers of season-tickets in the Sudkurve.
Do third-party betting firms get my data too?
Most leagues ban direct sales to bookmakers. Clubs can share grouped stats—males 25-34 in postcodes SE4-SE8—but never your name or email. If a betting sponsor appears in your feed, it’s usually because the advertiser uploaded an encrypted custom audience list; the club never hands over the raw file.
How does a club use data to fill mid-week cup games that usually look half-empty?
They scrape two seasons of past behaviour: who showed up for rain-soaked League Cup ties, who bought before the opponent was announced, and who has flexible work hours (tracked by post-code unemployment data and mobile location pings at 11 a.m. on weekdays). Those fans get a your seat only £10 if three mates join offer, while the late-deciders who normally buy on the day pay full price. Brighton sold 7 000 extra seats in 48 hours using this trick.
How do clubs know which fan data is worth collecting without looking like they’re spying on people?
Most teams start with the info fans already hand over—ticket scans, stadium Wi-Fi log-ins, in-app clicks, merch barcodes. If a supporter buys a hot dog at minute 37 and the POS system is linked to the CRM, that’s a data point, but it’s only useful when it’s stitched to a profile the fan has opted into, usually through a loyalty scheme or mobile ticket. The trick is to stop at what and when, not why. Nobody needs to know you like extra mustard; they just care that Section 212 sells out of hot dogs faster than Section 108, so next week they stock more there and push a 10 % coupon to the phones that were logged in that block. If you’re worried about creepiness, check the club’s privacy page: if it lists a legitimate interest section and lets you opt out of sales tracking, they’re probably on the level.
Can a small lower-league club with maybe 3 000 regulars still profit from this data stuff, or is it just a Premier-League toy?
Size helps, but hunger helps more. A League Two side near me trimmed their email list to 1 200 die-hards, tagged them by postcode, then ran a A/B test: half got a generic buy a season ticket note, the other half got a note that opened with their own street name and a map stub showing a 12-minute walk to the ground. The second group sold 78 more season cards at £320 each—roughly £25 k extra cash—using nothing fancier than Mailchimp and a £60 postcode plugin. Same club later asked those buyers which musician they’d pay to see after the final whistle; 42 % picked 90s indie. They booked a local tribute act for the bar, charged a fiver on the door, and cleared another £1 800 on a Tuesday night. No facial-recognition gates, no six-figure analytics contract—just a spreadsheet and the balls to ask.
