{"id":328455,"date":"2026-07-06T19:43:40","date_gmt":"2026-07-06T19:43:40","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sailing-flow\/"},"modified":"2026-07-30T16:54:56","modified_gmt":"2026-07-30T16:54:56","slug":"burgee","status":"publish","type":"plugin","link":"https:\/\/sna.wordpress.org\/plugins\/burgee\/","author":23518769,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.7.0","stable_tag":"2.7.0","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Burgee \u2013 Race Scoring for Sailing Clubs","header_author":"Nathaniel G. Beighley","header_description":"Race scoring and results publishing for sailing clubs: manage seasons, series, boats, and races, score PHRF handicap racing with the World Sailing Low-Point system, and publish schedules, scratch sheets, results, and series standings.","assets_banners_color":"629dae","last_updated":"2026-07-30 16:54:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/getburgee.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":153,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","changelog"],"tags":{"2.6.4":{"tag":"2.6.4","author":"vortexnetworking","date":"2026-07-06 20:31:56"},"2.7.0":{"tag":"2.7.0","author":"vortexnetworking","date":"2026-07-30 16:54:56"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3598285,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3598285,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3598285,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3598285,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3598285,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.6.4","2.7.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3598302,"resolution":"1","location":"assets","locale":"","width":1280,"height":876},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3598302,"resolution":"2","location":"assets","locale":"","width":1280,"height":948},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3598302,"resolution":"3","location":"assets","locale":"","width":1280,"height":969},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3598302,"resolution":"4","location":"assets","locale":"","width":1280,"height":789},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3598302,"resolution":"5","location":"assets","locale":"","width":1280,"height":674},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3598302,"resolution":"6","location":"assets","locale":"","width":1280,"height":830},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3598302,"resolution":"7","location":"assets","locale":"","width":1280,"height":1000},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3598302,"resolution":"8","location":"assets","locale":"","width":1280,"height":694}},"screenshots":[]},"plugin_section":[],"plugin_tags":[270391,21070,270392,188121,42698],"plugin_category":[],"plugin_contributors":[78154,270393],"plugin_business_model":[],"class_list":["post-328455","plugin","type-plugin","status-publish","hentry","plugin_tags-phrf","plugin_tags-racing","plugin_tags-regatta","plugin_tags-sailing","plugin_tags-scoring","plugin_contributors-freemius","plugin_contributors-vortexnetworking","plugin_committers-vortexnetworking"],"banners":{"banner":"https:\/\/ps.w.org\/burgee\/assets\/banner-772x250.png?rev=3598285","banner_2x":"https:\/\/ps.w.org\/burgee\/assets\/banner-1544x500.png?rev=3598285","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/burgee\/assets\/icon.svg?rev=3598285","icon":"https:\/\/ps.w.org\/burgee\/assets\/icon.svg?rev=3598285","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/burgee\/assets\/screenshot-1.png?rev=3598302","caption":""},{"src":"https:\/\/ps.w.org\/burgee\/assets\/screenshot-2.png?rev=3598302","caption":""},{"src":"https:\/\/ps.w.org\/burgee\/assets\/screenshot-3.png?rev=3598302","caption":""},{"src":"https:\/\/ps.w.org\/burgee\/assets\/screenshot-4.png?rev=3598302","caption":""},{"src":"https:\/\/ps.w.org\/burgee\/assets\/screenshot-5.png?rev=3598302","caption":""},{"src":"https:\/\/ps.w.org\/burgee\/assets\/screenshot-6.png?rev=3598302","caption":""},{"src":"https:\/\/ps.w.org\/burgee\/assets\/screenshot-7.png?rev=3598302","caption":""},{"src":"https:\/\/ps.w.org\/burgee\/assets\/screenshot-8.png?rev=3598302","caption":""}],"raw_content":"<!--section=description-->\n<p>Burgee is a complete race-management toolkit for sailing clubs that run PHRF\nhandicap racing.<\/p>\n\n<ul>\n<li>Organize racing as Season \u2192 Series \u2192 Race.<\/li>\n<li>Maintain a managed list of divisions (e.g. Spinnaker, Jib &amp; Main) and assign\neach boat a division and PHRF rating per season \u2014 boats can change divisions\nbetween seasons without losing their identity or history.<\/li>\n<li>Enter finish times and let the plugin calculate elapsed and corrected times\nusing either Time-on-Distance or Time-on-Time, and assign points using the\nWorld Sailing Low-Point system. Choose the RRS A5.2 or A5.3 penalty rule per\nseries, independent of the correction method. Results remain fully editable\nafter submission.<\/li>\n<li>Series standings with configurable throwouts (\"drop the worst N scores once M\nraces have been sailed\") and RRS Appendix A8 tiebreaks.<\/li>\n<li>All scoring \u2014 both correction methods, A5.2\/A5.3, and throwouts \u2014 is free.<\/li>\n<li>Responsive, mobile-friendly public output via shortcodes.<\/li>\n<\/ul>\n\n<h3>Shortcodes<\/h3>\n\n<ul>\n<li><code>[wpsf_schedule]<\/code> \u2014 season race schedule.<\/li>\n<li><code>[wpsf_scratch_sheet]<\/code> \u2014 the season's registered boats by division.<\/li>\n<li><code>[wpsf_series_title]<\/code> \u2014 a standings breadcrumb heading.<\/li>\n<li><code>[wpsf_race_results]<\/code> \u2014 results of a single race.<\/li>\n<li><code>[wpsf_race_details]<\/code> \u2014 course\/conditions detail for a single race.<\/li>\n<li><code>[wpsf_standings]<\/code> \u2014 full series standings grid.<\/li>\n<\/ul>\n\n<p>Legacy shortcode tags from version 1.x ([SeasonSchedule], [ScratchSheet],\n[ShowSeriesTitle], [RaceResults], [RaceDetails], [show_series_standings]) remain\nregistered for backward compatibility.<\/p>\n\n<!--section=changelog-->\n<h4>2.7.0<\/h4>\n\n<ul>\n<li>New: choose how a DNC is scored. The default is unchanged and follows the racing\nrules \u2014 one more than the boats entered in the division. Clubs whose Sailing\nInstructions say otherwise can now pick \"starters + N\" (the common \"starters plus\n2\" clause, which ties the score to that race's turnout so a boat joining later\ndoes not change results you have already published) or a fixed value. Set it per\nRacing Series, or per race for a stand-alone race.<\/li>\n<li>New: boats can be added to a scratch sheet mid-season. A boat that joins after\nracing has begun is recorded DNC for the races it missed, and the series is\nrescored so every boat's scores stay consistent. Adding a boat before any racing\nstarts behaves as before.<\/li>\n<li>Fix: a boat left marked \"Finished\" with no finish time entered was scored zero\npoints \u2014 better than winning the race. It is now scored as a non-finisher. The\nsame fix covers a division with no start time set.<\/li>\n<li>Fix: on a race that already has results, a boat with no result entered now\ndefaults to DNC instead of \"Finished\". Entering results for a new race is\nunchanged.<\/li>\n<li>Change: removing a boat from a scratch sheet now also removes its results for\nthat Racing Series and rescores. Those results were already unreachable once the\nboat was removed; the confirmation prompt now says what will happen.<\/li>\n<\/ul>\n\n<h4>2.6.4<\/h4>\n\n<ul>\n<li>Housekeeping: plugin-header cleanup for the WordPress.org directory (removed a\nduplicate URI from the header). No functional changes.<\/li>\n<\/ul>\n\n<h4>2.6.3<\/h4>\n\n<ul>\n<li>Fix: the result-email setup now only appears with a Pro license. The boat email\naddress and \"email race results to this boat\" option, the additional-recipients\nlist, and the unsubscribe manager were showing in the free edition even though\nsending results is a Pro feature. They are now hidden without a license, and any\nsaved addresses are preserved (never blanked) when settings or a boat are saved.<\/li>\n<\/ul>\n\n<h4>2.6.2<\/h4>\n\n<ul>\n<li>Fix: a stand-alone race no longer shows divisions that have no boats entered.\nPer-division start times and course distances are now scoped to the divisions\nactually racing, on both the admin entry screen and the public race view.<\/li>\n<li>New: result and cancellation emails can now be sent for stand-alone races, drawing\nrecipients from the race's own entries (plus your Settings recipients), the same way\nseries races do. (Pro.)<\/li>\n<\/ul>\n\n<h4>2.6.1<\/h4>\n\n<ul>\n<li>Fix: the admin menu icon is now centered in the WordPress sidebar.<\/li>\n<li>Internationalization and coding-standard cleanups for WordPress.org. No changes\nto your data, settings, or scoring.<\/li>\n<\/ul>\n\n<h4>2.6.0<\/h4>\n\n<ul>\n<li>New: Stand-alone scored races. Score a one-off race that belongs to no series or\nregatta \u2014 pick its boats from your registry, set each one's division\/PHRF\/sail\nnumber, enter finish times, and publish a results page. It is scored\nindependently and never appears in any standings. All scoring \u2014 including\nTime-on-Time and RRS A5.3 \u2014 is free.<\/li>\n<\/ul>\n\n<h4>2.5.0<\/h4>\n\n<ul>\n<li>New: Pro licensing via Freemius. Result-email notifications are the only Pro\nfeature; all scoring and standings \u2014 both correction methods, A5.2\/A5.3, and\nthrowouts \u2014 stay free. Your settings are never deleted \u2014 Pro features reactivate\ninstantly on existing data when a license is active.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>Throwouts: a Racing Series can now define a tiered throwout schedule \u2014 e.g.\ndrop 1 after 8 races, 2 after 10 \u2014 instead of a single threshold. Existing\nsingle-step settings keep working unchanged.<\/li>\n<li>Scoring: added an optional Time-on-Time method per Racing Series\n(Corrected = Elapsed x A \/ (B + PHRF), defaults A=650 \/ B=550, editable).\nTime-on-Distance remains the default and is unaffected.<\/li>\n<li>Scoring: added an optional RRS A5.3 toggle per Racing Series. When on, a boat\nthat came to the starting area but did not finish is scored against the number\nof boats that came (entries minus DNC) rather than the full entry list. Off by\ndefault (standard A5.2).<\/li>\n<li>Schema changes now also apply automatically after an in-place update, not only\non reactivation.<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>Terminology: \"Race Cup\" is now called \"Regatta\" throughout the admin and public\noutput, matching common sailing-club usage. The standings shortcode accepts\nregatta=\"ID\" (and ?wpsf_regatta=); the previous cup=\"ID\" \/ ?wpsf_cup= keep\nworking, so existing pages and links are unaffected.<\/li>\n<li>Scoring: added the standard RRS scoring abbreviations OCS, RET, NSC, RAF, and DNE\nalongside the existing DNF\/DNS\/DNC\/DSQ. All are scored under RRS 2025-2028 rule\nA5.2 (entries + 1).<\/li>\n<li>Scoring: a DNE (disqualification, not excludable) is now never dropped by a\nseries throwout, as the rules require. Ordinary DSQ scores remain excludable.<\/li>\n<li>Docs: refreshed the in-code scoring rule citations to the RRS 2025-2028 edition\n(Low Point A4, non-finishers A5.2, race-tie averaging A7, series tiebreaks A8).<\/li>\n<li>Mobile: on the single-race results view, boat names are now bold and every other\nboat is lightly shaded, so boats are easier to tell apart when stacked. On the\nseries and regatta standings, the score columns now scroll horizontally within a\npanel (Place and Boat stay frozen) instead of being crammed together.<\/li>\n<li>Schedule: a cancelled race now shows its notes (the reason for cancellation) in a\ntooltip on hover or focus.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>New: Result and cancellation emails now include an unsubscribe link (and\nList-Unsubscribe headers for mail-client one-click unsubscribe). Clicking the\nin-email link opens a confirmation page with a button, so link prefetchers and\nscanners can't unsubscribe anyone by accident. Each email is sent to its\nrecipient individually so the link removes only that address. Unsubscribed\naddresses are skipped on future sends and can be reviewed and re-subscribed\nfrom the Settings screen. Result emails are no longer copied to the site admin\nunless the admin address is itself a subscribed recipient.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>New: \"Clear Results\" on the Enter Results screen \u2014 a confirmed do-over that\ndeletes all results and per-division parameters for a race and resets its\nconditions, notes, and status back to Scheduled. The race itself (name, date,\nseries\/cup) is kept.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fix: Cancelled races entered from \"Enter Results\" were saved as Completed\nbecause the race-level Status field collided with the per-boat status fields,\nso cancelled races were scored (everyone at 0 points), polluted series and\nseason standings, and were not shown as cancelled on the schedule. The\nrace-level field is now distinct, so cancelled races save correctly, are not\nscored, and show as cancelled.<\/li>\n<li>Cancelled races: when the email option is checked, a cancellation notice\n(including the race notes) is now sent instead of a results table.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Complete rewrite: prepared statements throughout, nonce + capability checks on\nall admin actions, escaped output, prefixed tables, full CRUD for seasons,\ndivisions, boats, registrations, series, and races, editable results, per-series\nthrowouts, and responsive frontend output.<\/li>\n<\/ul>","raw_excerpt":"Race scoring for sailing clubs: manage seasons, series, and boats, score PHRF handicap racing, and publish schedules, results, and standings.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/328455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=328455"}],"author":[{"embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vortexnetworking"}],"wp:attachment":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=328455"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=328455"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=328455"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=328455"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=328455"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=328455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}