Payments know a card; the club knows a member
Sync Your Golf Roster with Square Customers (Without Double Entry)
Members in one system and Square Customers in another means missed receipts and messy CRM. Here’s how roster ↔ Square directory sync should work.
Two directories, one person
Square is excellent at cards, Terminals, and receipts. Golf clubs are excellent at knowing who has a handicaps index, a house balance, and a preferred Saturday time. Trouble starts when those worlds never meet.
Staff create a member in the club software, then create nearly the same person in Square Dashboard for a retail sale. Walk-ins who booked online never become customers. Marketing and receipts cannot find the people who actually play.
Upsert on accept
Whenever the club accepts golfer identity - roster create, public book with email, staff walk-in with email - attempt a Square Customers upsert. Keep the Square customer id on the booking or member row so later card payments and refunds attach to the right person.
Walk-ins should not clutter the member roster. Put them in a Square group such as “{club} · Public golfers” so retail and CRM stay tidy while still capturing the email you already required for the booking.
Staff sync and inbound webhooks
Give staff a Sync Square directory action for catch-up after imports or outages. Membership plans can map to Square Groups when you want plan cohorts visible beside payments.
Inbound customer.* webhooks keep the club copy honest when someone edits a customer in Square. The goal is two-way truth, not a one-time CSV dump.
Why this matters on Saturday
A synced directory means the person who prepaid a tee time on Square is the same person who buys a hat at the counter an hour later. Refunds, receipts, and house-account decisions stop depending on who remembered to search Dashboard.
