Shots and Shot Detail
The Shots screen is a fully filterable, sortable log of every swing GSCaddie has recorded for you. Shot Detail shows the full data card for a single shot.
Shot log (/shots)
What is and isn't shown
Auto-putts (GSPro-resolved putts) are hidden. Excluded shots are also dropped. Stroke-and-distance penalty bookkeeping rows (the placeholder GSPro creates after an OB) are hidden. On course rounds, shots where the launch monitor pairing was missed (phantom candidates) are also hidden. On range sessions, those phantom-candidate shots are kept so the count reflects what you actually hit.
Header
Title "Shot log" with a one-liner. Right side shows three all-time globals (not filtered): shots in view vs total, top ball speed (with club), and longest carry (with club).
Filter bar
Filters stack and combine:
- Date range: last 7 days, 30 days, 90 days, year to date, all time, or a custom start/end date range.
- Round type: course shots or practice range. Opens on course shots, or on practice range when every shot you have is a range shot.
- Club: multi-select chips. Select multiple clubs to show only those in the table.
- Surface: all / tee / fairway / rough / sand / green (based on starting surface).
- Search: free-text search across club name, surface, and round/course name.
- Reset: clears all filters back to defaults (30d, course, all clubs, all surfaces).
Filter state is saved to session storage. If you click a shot and then come back, the filters are restored.
Summary KPI strip
Four metrics computed on the filtered shot set:
- Shots in view with a plain-English description of the active filters.
- Avg ball speed with ± spread (standard deviation).
- Avg carry with ± yards spread.
- Best smash factor (ball speed / club speed, capped at 1.6 to drop bad pairings) with the club that produced it.
Shots table (main column)
Columns: when, club, surface (start surface and end surface as "Tee → Fairway" etc.), ball speed, club speed, smash factor, carry, total, offline, launch angle, spin RPM, shot shape. Sortable by any column. Clicking a column header cycles through descending/ascending/off.
Pagination options: 25, 50, 100, or all. Defaults to 50.
Per-row: clicking a row opens Shot Detail. There is also an inline club-edit option to correct a misattributed club without leaving the page.
Aggregation sidebar (right column)
Four panels stacked in the sidebar:
- Shots by club: top 8 clubs by shot count in the current filter, with avg carry. Useful for checking what you have been practicing most.
- Surface mix: tee / fairway / rough / sand / green counts as a proportion bar.
- Carry distribution: histogram of carry distances in 10-yard bins. Left of the median is one color, right is another. Bins under 20 yards are excluded (putts).
- Time heatmap: shots by day of week and time of day for the current date window. Darker cells mean more shots at that time slot.
Data notes (desktop only)
At the bottom of the page (hidden on mobile): carry derivation method, smash factor cap, offline measurement source (portal vs sim-derived), and what rows are hidden.
Shot Detail (/shots/:id)
Header
Club name as the large title (with a pencil icon to re-assign the club for non-putt shots). Above it: a link back to the round, the course name, and hole/shot/par context. Below the title: when (date + relative time), surface (start to end), and any flags (Excluded, Putt, Gimme, Holed, Tree contact, Penalty).
Three hero stats across the top of the data area: carry yards, total yards, roll feet (with a "total - roll" or "launch monitor" hint), and strokes gained for this shot (with category and pre-shot distance to the pin).
Stat columns
Two or three columns depending on whether portal data is present:
Ball column (always): ball speed, vertical launch angle (VLA), horizontal launch angle (HLA), total spin, spin axis (positive = fade/slice tilt, negative = draw/hook tilt), peak height in yards.
Club column (portal-synced rounds only): club speed, smash factor, attack angle, club path, face to path, face to target. All angles are signed (positive = right, negative = left for a right-handed player).
Result column (always): total distance, carry (with derivation hint), offline (with L/R side note), descent angle, roll, distance remaining to pin.
Cross-reference: what each metric means is in data-ball-and-launch, data-club-delivery, and data-distance-and-flight.
Trajectory viewers
A 3D side-view trajectory and a top-down flight path, both simulated from the ball launch parameters. Carry is scaled to match the measured carry when it differs from the pure physics simulation by more than 5%. Skipped entirely for putts, gimmes, penalty strokes, and shots with no LM data.
Strike card
A heuristic classification of strike quality (solid, thin, fat, toe, heel, unknown), shown only when the classifier has enough data to make a call. Includes a confidence percentage, a description, and a note that it is a heuristic, not a smash-factor replacement. Based on the relationship between ball speed, spin rate, launch angle, and spin axis.
Setup grid
Contextual information about the shot setup: shot mode (full swing, chip, putt, etc.), launch monitor name, first bounce material, gimme range if applicable, game mode, distance boost, and ball curvature setting. Fields that are at their defaults are shown dimmed.
Shot Options
A Shot Options menu at the top right of the header, in the same spot as Round Options on the round screens, holds two actions:
- Exclude from analytics keeps the shot in the feed and on round scorecards (exclusion does not affect the score count) but drops it from analytics: averages, SG, club profiles, and insights detection. Reversible from the same menu (Restore to analytics). Use this for warm-up swings, misfeeds, or anything that skews your numbers.
- Delete this shot removes the shot from the round and from every stat. Click once to arm, again to confirm. There is no undo, and the shot will not come back if your sim PC re-reads the round or a portal sync touches it.
Auto-putt detail
When a shot is an auto-putt (GSPro resolved it without a swing), the detail page shows a stripped-down layout: the header with a "From pin" hero stat (derived from the previous shot's distance to the pin), a note that no swing data was captured, and the setup grid. There is no trajectory view, stat columns, or strike card.