Skip to main content

Release Notes - July 2026

PlayerFirst platform release notes for July 2026, migrated from Confluence.

July 29, 2026

COMMIT #: 90d9891

Updates

Front End

  • Digital Coach Packets (GWU-8543)

    • Updates:

      • On the Program List on the Coach Packet page...

        • The brand name was added to the program tile.

        • The location was added to the program tile.

      • A State filter to the Teams page when viewing a program's Coach Packet.

  • Digital Coach Packets (GWU-8455)

    • Update: Updated the coach packet flow to allow a team’s schedule to display after the event has been completed.

      • The schedule is view only for users with the following qualifications:

        1. User role: College Coach

        2. College Coach attached to a school

        3. Purchase a coach packet for the specific program

  • Digital Coach Packet (GWU-8048)

    • Updates:

      • Cleaned up the UI of the Recruiting Profile page.

      • Added a Notes section to the Recruiting Profile page for College Coaches.

        • Notes can only be seen by college coaches of the same school.

  • Digital Coach Packet (GWU-7830)

    • Updates:

      • Added a tab to the Account sub navigation: Coach Packet

        • Displays if the user has a College Coach role for any brand.

      • Coach Packet page

        • Displays list of programs in which the Coach Packet purchase(s) are associated.

        • Programs the coach packet was purchased for will be visible for 90 days after the event end date.

COMMIT #: e0a4820

Bugs

Club App

  • Guest Players (GWU-3430)

    • Previously: Parents who had a son/daughter added as a guest player to a team in the Club App could not see the events for the team when exporting the schedule to their calendar.

    • Update: Parents who have a son/daughter added as a guest player to a team in the Club App could can see the events for the team correctly when exporting the schedule to their calendar.

Updates

PF General Updates

  • Maintenance (GWU-8563)

    • Update: Added developer subscription emails to exceptions in specific files/methods.

Sales

  • Invoices (GWU-8339)

    • Update: The Overpayment to Credit button does not show if the net cash on the invoice is equal to $0.


July 29, 2026

COMMIT #: 768c277

Bugs

User

  • Quick Waiver (GWU-8363)

    • Update: Duplicate-username collisions are now correctly detected regardless of how the database error is wrapped, so concurrent Quick Waiver submissions reliably show the expected "an account already exists for this email" message instead of an unhandled error.

Front End

  • Orders & Payments (GWU-8568)

    • Previously: The Pay button on certain payment links (e.g. a completed-transaction receipt link) could fail — either by unnecessarily generating a new cache key when one wasn't needed, throwing an error if no payment cache existed, or losing prepayment/pay-in-full context when redirecting to enter a custom amount.

    • Update: Fixed the Pay button to correctly handle completed-transaction payment links without forcing a new cache key, avoid errors when no payment cache is present, and preserve prepayment, payment request, and pay-in-full context when redirecting to a custom payment amount.

Updates

Program

  • Edit Program (GWU-8221)

    • Update: Expense approval now runs when Operations approves the program, not when Admin does.

Site Settings

  • Site Settings (GWU-8499)

    • Update: Added validation rules to brand-level Site Settings: a brand must have at least one Sport, a Brand Subaccount is required for accounting, and a Default Sub-Brand Subaccount is required when sub-brand subaccounts are configured. Also added a check to prevent a brand from being set as a parent/child of itself, directly or through another relationship, on the Global Brands settings page.

Messaging

  • Messaging Schedule (GWU-8474)

    • Update: Added an explicit "Include All Divisions" flag that's saved and honored throughout program/division filtering, so selecting all divisions for a program reliably includes every division, including ones added later, rather than a snapshot of division IDs.

Club App

  • Google Analytics (GWU-8394)

    • Update: Implemented Google Analytics events for the Buy Now feature on the PlayerFirst Club App.

PF General Updates

  • Azure Front Door Integration (GWU-7481, GWU-8548)

    • Update: Added two new domain-binding workflows to the Domains settings page: "Add Binding — External DNS" for domains that stay with an external DNS provider (returns a TXT record for validation), and "Add Binding — Migrate to Azure DNS" which creates and binds an Azure DNS zone, points the domain (apex + www) to Azure Front Door, and returns the nameservers to set at the registrar.


July 28, 2026

COMMIT #: ef15437

Bugs

Front End

  • Bulk Registration (GWU-8312)

    • Update: When selecting an existing club during team registration, the club's main contact name is now shown alongside the club, helping registrants confirm they've picked the right club before continuing.

Location

  • Court Timelines (GWU-7986)

    • Previously: Editing a rental or game time on the Court Timelines page (drag-and-drop, availability windows, or the detail panel) could save the wrong time, because the browser's local timezone was used instead of the brand's configured timezone — causing times to shift when an admin's computer was in a different timezone than the brand.

    • Update: All schedule editing on Court Timelines now consistently interprets and converts times using the brand's actual configured timezone (passed from the server) instead of the browser's local timezone, so edited times save correctly regardless of where the admin is located.

Communication

  • Create Message (GWU-8535)

    • Previously: When creating a message, the [ATHLETE_FIRST_NAME] token would list all first names from athletes on the account.

    • Update: A [ROSTER_FIRST_NAME] token was added that will address only the first name of the roster ID being targeted.

Updates

PF General Updates

  • Club ID (GWU-7735)

    • Update: Phase 1 of a rework of how clubs are managed and matched across PlayerFirst: rebuilt the Clubs List admin page (moved from Communication to User) with new Brand and Sport filters, pagination, and a notice for clubs shared across multiple sites; added an "Owned by Brand" field to Club Details and restricted creating/editing clubs to Root Admins only; when registering teams via Bulk Registration (CSV upload), clubs are now automatically matched by Name + Hometown + State, with ambiguous or missing-location rows flagged with a clear error; a club's saved city/state locks as read-only once valid during manual registration, but stays editable if the stored location is missing or invalid; added a database migration (CreatedUtc on Clubs) and new automated test coverage.

Front End

  • Cookie Consent Banner (GWU-8271)

    • Update: Replaced the "Necessary Only" / "Accept" cookie banner options with "Customize" / "Accept All." "Customize" now opens a preferences modal where users can review their cookie choices.

AES

  • User Roles (GWU-8490)

    • Update: When an AES billing account is synced into PlayerFirst and isn't dropped, it's now automatically granted the standard "User" role on the brand tied to its invoice, ensuring AES-created accounts have proper brand access without requiring manual role assignment.

GearUp

  • API (GWU-6027)

    • Update: Added GearUp integration for team uniform/gear ordering: new GearUp Orders admin page to view uniform orders by brand, purchase date range, unassigned athletes, and unassigned team stores; new GearUp Team Stores admin page to view and filter team stores by brand, sport, and program; added "GearUp Team Store Link" and "GearUp Store ID" fields to Edit Program; added supporting database tables/migrations and new automated test coverage.

GearUp

  • Program, Team, Sales (GWU-8491, GWU-8265)

    • Update:

      • Added a Team Store section above the Exposure section when editing a program.

        • Added a field labeled GearUp Team Store Link.

        • Added a field labeled GearUp Team ID.

      • On the Team>GearUp Orders page...

        • Added a Brand filter.

      • On the Team Management>Roster Management page...

        • Add a new option under the Email icon: "Email GearUp Player Pack link to selected athletes".

      • Added logic to the GearUp Orders page to display if a Roster ID is assigned to a GearUp order.


July 27, 2026

COMMIT #: 61e9c08

Bugs

Front End

  • Registration (GWU-8557)

    • Previously: When a cart included an installment/payment plan, the "Due Later" total on checkout could incorrectly be overridden by the plan's due-at-checkout amount, showing the wrong figure instead of the actual remaining balance due later.

    • Update: Removed the payment-plan-specific override so the "Due Later" total on checkout now consistently reflects the correct scheduled/waitlisted balance, regardless of whether a payment plan is selected.

COMMIT #: e2a1c73

Bugs

Sales

  • Invoices (GWU-8481)

    • Previously: On the Invoices page, receiving a payment could be incorrectly rejected due to a rounding mismatch between the Base, fee, and tax amounts. Separately, the payment fee type shown on saved payment methods (ACH vs. credit card vs. check) could be misidentified when the method's type wasn't clearly reflected in its display name.

    • Update: Fixed the Base/fee/tax rounding check so it no longer produces false mismatches, and fee-type detection for saved payment methods now checks the method's actual type flags first before falling back to name matching. Also added a clickable balance amount in the payment allocation modal that auto-fills the full remaining balance into the applied amount field.

Updates

Sales

  • Subscriptions (GWU-8441)

    • Update: Discount codes can now be applied to subscription upgrades, using the same eligibility rules (active date window, remaining uses, user eligibility) as cart discounts. Added a discount preview on the Subscription Upgrade page so customers can see the applied discount before confirming, along with related styling updates to the upgrade and discount details pages.

Global Settings

  • Class Manager (GWU-8498)

    • Update: The "Sport(s)" suggest field on Create Finance Projects (Class Manager) now also includes non-sport categories in its suggestions, not just traditional sports.


July 23, 2026

COMMIT #: 46550aa

Bugs

Sales

  • Item Details (GWU-7008)

    • Previously: On the Item Details page, cancelling/deleting a line item calculated available discount, scholarship, and refund amounts inconsistently, didn't factor in platform fees when showing Net Cost/Balance, and could allow an attempt to cancel an item that still had unresolved allocations elsewhere on the invoice.

    • Update: Item Details now shows Platform Fees as its own line and factors it into Net Cost and Balance.

Updates

Sales

  • Payments (GWU-4370)

    • Update: Added an "Allocate Payments" step to the customer Payments flow, letting a customer paying against multiple invoices/line items at once specify how much of their payment applies to each line, rather than only splitting evenly. Amounts for platform fees or items due in full aren't editable in this view. Also refreshed the notice/warning banner styling on the Payments pages for consistency.

PF General Updates

  • Intercom (GWU-8515)

    • Update: The Intercom help widget now loads in the background as soon as an admin's page finishes mounting.

Sales

  • AR Communication (GWU-5888)

    • Update: Pre-AR (upcoming payment) reminder emails and the accounts-receivable dashboard now include scheduled payments that don't yet have a payment method on file within their notification window.


July 21, 2026

COMMIT #: d0f21bf

Updates

Front End

  • Product Purchase (GWU-4815)

    • Update: Removed the "Sign Waivers?" modal that appeared on the order confirmation page after a gate or parking purchase.


July 20, 2026

COMMIT #: 51bddc5

Bugs

User

  • Import Users (GWU-8519)

    • Previously: When importing users via spreadsheet, each parent/guardian on an athlete's record was always assigned the athlete's own address.

    • Update: The Import Users template now supports separate address fields (Address Line 1, Address Line 2, City, State, Zip) for Parent 1 and Parent 2. If a parent's own address is provided, it's saved to that parent's profile instead of defaulting to the athlete's address.

Updates

PF General Updates

  • Field Labels (GWU-8516, GWU-8508)

    • Update: Standardized how the sport-specific "Field"/"Court" label is generated and displayed across schedule imports, bracket views, tournament setup, locations, and reporting.


July 15, 2026

COMMIT #: ce95b24

Bugs

Communication

  • Create Message (GWU-8383)

    • Previously: Emails sent through the Create Message workflow were displaying abnormally low delivery rates.

    • Update: Resolved the issue causing emails to be sent with low delivery rates, restoring normal delivery performance for outbound communications.

COMMIT #: fb38761

Bugs

Sales

  • Invoices (GWU-8475)

    • Previously: When recording an external ACH or credit card payment on an invoice, transaction fee calculations and overpayment checks didn't correctly account for the external payment type.

    • Update: Fixed transaction fee math and the overpayment limit check for external ACH and credit card payments so Amount and Net Charge values calculate correctly.

Updates

PF General Updates

  • Cross Brand PII (GWU-8450)

    • Previously: Several admin pages and reports allowed a brand's admin to view or export another brand's athlete, parent, and coach contact information (names, emails, phones, addresses) that they should not have had access to.

    • Update: Restricted the affected pages — including Waiver Completion, Retention List, Team Reporting, User Problems, Possible Duplicates, User Profile Sources, College Commitments, Bulk Subscribers, and the public recruiting profile pages. Results and contact details are correctly scoped to the affiliations an admin has access to.

Access App

  • Sales Dashboard (GWU-8465)

    • Update: Updated the Sales Dashboard to display total invoiced amounts instead of total paid, improving page load speed.

Exposure

  • API (GWU-8395)

    • Update: Allows brands to add fields and update schedules directly in Exposure after the initial sync, without switching back to PF to trigger another sync.

  • API (GWU-8374)

    • Update: Bracket games imported from Exposure now get an automatically generated title (e.g. "Championship" and "Consolation Championship") based on their position in the bracket.


July 13, 2026

COMMIT #: a78abff

Updates

Team

  • Team Manager (GWU-8382)

    • Update: Added a Phone Number field to the Add Coach/Manager new-user form.

Sales

  • Payments (GWU-8492)

    • Update: When a Stripe payment succeeds, but PlayerFirst has no matching record, the system now attempts to automatically recover and apply the payment by matching it back to its originating cart/order via Stripe metadata before falling back to a manual-reconciliation alert.


July 9, 2026

COMMIT #: 3e9dce9

Bugs

Front End

  • PF Web Builder (GWU-8259)

    • Update: Fixed Meta Image Display when editing a web page's SEO.

Team

  • Team Management (GWU-8461)

    • Update: When sending a custom message to a custom recipient list, the template selection now also reapplies correctly when a custom list is used on the Compose step.

Messaging

  • Message History (GWU-8330)

    • Update: When using the "Resend to Unopened/Opened" flow, filtering now scopes across all emails in the same thread, correctly limiting the resend list to profiles who did/didn't open any message in that thread, and clears the CC list if no matching recipients remain.

User

  • Users (GWU-5225)

    • Update: Quick Waiver submission now checks for an existing user by username/email before creating a new account, reusing the existing account instead of creating a duplicate. Also disabled the Next/Continue buttons on submit to prevent duplicate double-clicks.

Updates

Program

  • Edit Programs (GWU-4462)

    • Update: Added guardrails to prevent deleting a program or division that has purchases on it. Attempting to delete a program blocked for this reason (or one whose associated products have purchases) now shows an explanatory alert instead of deleting; the same guard applies to division deletion.

Sales

  • Paid Email Receipt (GWU-7553)

    • Update: Updated the "upcoming payments" text on the paid email receipt to name the specific payment method that will be charged next, resolved from the earliest pending scheduled payment on the invoice, with a generic fallback when no method is on file.

Front End

  • FE Web Builder (GWU-8167)

    • Update: Added a new Countdown component to FE Web Builder, allowing brands to insert a live countdown timer to a date or to the start of an upcoming program directly into program list content.

User

  • NCSA Opt-Ins (GWU-8454)

    • Update: Updated the NCSA opt-in consent text in the registration workflow to reflect the latest required disclosure language from NCSA.

Messaging

  • Create Message (GWU-5503)

    • Update: Selecting "Only recipients who have NOT purchased the product" on a product filter now automatically scopes the audience to the product's program and its divisions (rather than the whole brand), and clarified the checkbox label to "Only select recipients in the product's program who have NOT purchased the product."


July 6, 2026

COMMIT #: 32e41c2

Bugs

Program

  • Exposure Sync (GWU-8453)

    • Previously: When syncing bracket games from Exposure, a game could reference itself as its own winner/loser advancement game if its bracket number matched another field on the same game, creating a self-referencing (recursive) link.

    • Update: Winner/loser game lookups now require a valid bracket number and explicitly exclude the game itself, preventing a bracket game from linking to itself.

  • Division Details (GWU-8331)

    • Previously: On the Division Details page, the "Waivers Completed" gauge counted registrations across the entire program rather than just the divisions currently selected in the filter, producing an inflated/incorrect completion percentage.

    • Update: The "Waivers Completed" gauge on Division Details now scopes both the roster and registered-count data to the selected divisions only. Also renamed the Player Grid's "Players" table heading to "Registrations" for clarity.

Team

  • Schedule Games (GWU-8375)

    • Update: Teams are now excluded from scheduling (Schedule Games, Timeline, Flight Selector team counts) only when every registration item for that team is still in an open cart — teams with at least one completed registration are correctly included. Also hardened the unwaitlist process to clear roster and related order items even without a direct roster navigation link.

Updates

Sales

  • Sales Dashboard (GWU-8449)

    • Update: Sales Dashboard revenue totals (overview and velocity charts) now sum actual received payments instead of the full charge amount, so partially-paid orders no longer inflate reported revenue.


July 1, 2026

COMMIT #: c1346c5

Bugs

Shop

  • Shop (GWU-8447)

    • Previously: On the Add to Cart panel's program list, the link to each program was built with raw, unencoded query string concatenation, which could throw a null reference error when the request query string was empty or malformed, and could produce broken/invalid links. Additionally, the underlying view model builder could throw a null reference error if program IDs or product IDs were not provided.

    • Update: Replaced manual query string concatenation with a safe query string builder for program links, preventing malformed URLs and null reference errors. Added null-safe defaults for program IDs and product IDs when building the Add to Cart view model.

  • Payments (GWU-8411)

    • Previously: The scheduled payment processor could apply a partial payment against the wrong scheduled installment — when consuming payments due, it did not scope which scheduled transaction rows were being closed out, allowing an unrelated (orphaned) scheduled row to be reduced or cleared instead of the correct line-item installment. Additionally, rescheduled remainder transactions were incorrectly copying prior failure fields onto the new open row, and platform fee discount amounts were not being rounded, causing off-by-fractions-of-a-cent discrepancies.

    • Update: Scheduled payment consumption now explicitly tracks and clears only the scheduled transaction rows tied to the payment method group actually being charged. Rescheduled remainder rows no longer inherit failure count, last failure timestamp, or decline details from the original transaction. Platform fee discount calculations are now rounded to the nearest cent.

Updates

PF General Updates

  • Web Logging (GWU-8448)

    • Previously: When a shopping cart's item view drifted out of sync with its underlying cart items (a normal, self-correcting condition that triggers an automatic re-evaluation), the system logged this as an error, generating unnecessary error-log noise.

    • Update: Removed the error logging for this expected drift-and-recovery case, since the cart is automatically re-evaluated and corrected without any issue. No change to the underlying cart behavior.

Sales

  • Payments (GWU-8424)

    • Update: Added support for recording a Payment Gateway Transaction ID ("Payment Intent ID") when logging an external credit card or ACH payment on an invoice. The ID must be a valid payment-intent reference and is only accepted for external payment types. A "Payment Intent ID" field now appears on the Receive Payment form when an external method is selected.

Front End

  • Endpoint Authentication (GWU-8410)

    • Update: Updated the tournament broadcast and settings endpoints so JWT-authenticated admin users can call them without providing a scoring code. Previously these endpoints required a Director's Scoring Code on every call; now, if the caller has admin-level access to the tournament's affiliation (via JWT), the scoring code is no longer required. Non-admin callers must still supply a valid scoring code as before.

Did this answer your question?