Bam Good Time: Mahjong Club
League & tournament scoring
Free · In‑App Purchases
Run your mahjong club from anywhere. Create events, manage registrations, enter scores, and track league standings — all from your phone. Free to start.
The #1 app for running American Mahjong clubs, leagues, and events.
Whether you organize weekly games for 12 players or monthly tournaments for 200, Bam Good Time gives you everything you need — registration, scoring, leagues, and member management — right from your phone.
Used by club organizers across the US and Canada.
——— FOR ORGANIZERS ———
◆ Events & Registration
Create events in seconds. Players register, join waitlists, and check in with a tap. QR code check-in available.
◆ Scoring & Leagues
Enter scores round by round. Track league standings with automatic rotation patterns and rankings.
◆ Member Management
Import contacts via CSV. Send SMS and email invitations. Manage your entire roster and directory.
◆ Series & Punch Cards
Sell multi-event packages. Players buy once, RSVP to each session. Punch cards for flexible attendance.
◆ Analytics & Payments
See attendance trends, revenue reports, and growth metrics. Accept payments through Stripe.
——— FOR PLAYERS ———
◆ Browse events and register in seconds
◆ Purchase series passes and punch cards
◆ Check in from your phone — no paper needed
◆ View game history and league standings
◆ Manage your profile across multiple clubs
——— GET STARTED ———
1. Create your free club at bamgoodtime.com
2. Download Bam Good Time
3. Sign in and start managing
Free to download. Club plans from $19/month unlock unlimited events, analytics, and more.
——— LEGAL ———
Terms of Use: https://bamgoodtime.com/terms
Privacy Policy: https://mahjic.org/privacy
Standard Apple EULA: https://www.apple.com/legal/internet-services/itunes/dev/stdeula/
more This app has saved my wife an enormous amount of time and frustration and enable her to enjoy getting people together to play this wonderful game.
This app has saved my wife an enormous amount of time and frustration and enable her to enjoy getting people together to play this wonderful game.
A new look, and a lot more you can do from your phone.
THE NEW LOOK
Every screen has moved to a new colour scheme and a new typeface. Nothing was moved and nothing was removed. Bold Text and larger type sizes work correctly again throughout the app.
LEAGUES AND STANDINGS
- Withdraw a player from a season without leaving your phone.
- The pending-match line now tells you whether the match is waiting on you.
- The Mahjongs column explains what its two numbers mean.
TABLES AND VENUES
- Refund a table booking yourself.
- Print a door QR code for check-in. Every club can do this now, not only clubs that have tables set up.
- The waitlist banner no longer covers the table list.
PACKAGES AND SERIES
- Buyers see a minimum commitment before they pay.
- You are warned before a series charges someone for a date they have already paid for.
- Creating a series now holds the room on every night it just booked.
- A lesson date sold through a series shows the series price instead of Free.
- A seat paid outside the app is labelled External rather than given a figure we worked out ourselves.
EVENTS AND REGISTRATION
- Signup answers now appear on the Attendees tab.
- The event email screen counts how many people it will actually reach.
- Registering for a public event puts you in the club that runs it.
EVERYTHING ELSE
- A chat message that fails to send stays in the box instead of vanishing.
- Backing out of an event link no longer leaves a spinner on screen.
- A web address a club puts in a signup question is now a link you can tap.
- Many smaller fixes to scoring, check-in and profile setup.
1.1.22 6h ago
The Complete Your Profile screen now says what it is waiting for. If Continue is not ready yet, the missing items are named directly above it, together with the button that sends your phone code, instead of below where the keyboard could hide them. A button that is not ready to be tapped now looks that way rather than appearing active.
1.1.21 5d ago
A month at a time, and lesson requests on your phone.
Your events screens now open as a list or as a month grid — tap the toggle to switch. Drafts look like drafts, you land on today, and your phone's calendar can subscribe to your club's schedule so new nights show up on their own.
• Events: switch between List and Calendar on both the player and the admin screen.
• Subscribe your calendar to the club schedule, or export a single night.
• Lesson requests open properly now — read the whole message, see their answers, email and phone in one place, set the status, and keep a private note the website shares.
• Open play: say you are playing your Scramble match here, and see which open play a match is at.
• Passes and add-ons: order the $5 lunch against a punch card, and restart a lapsed monthly pass from the app.
• Admins can comp a seat or a pass, correct a member's email, record a match played on paper, and add someone to a league from the phone.
Fixed: tapping a notification opens the right screen — five kinds went nowhere. The League schedule card opens on today rather than yesterday. Table-card names no longer truncate to "Debor ah F...". Series and template prices stop resetting when single-night sales are switched off. Times read on your club's clock instead of Eastern. A required friend question no longer locks out a member coming alone.
The app is also easier to read: it grows with your text size, honours Reduce Motion, and every colour on it has been re-measured for contrast.
1.1.20 6d ago
Same app, new name. We're now Bam Good Time, the name of the club site you already sign in to. Nothing else moves: same login, same club, same data.
Also in this update:
• If your club asks for a phone number before you book, the app now explains why and lets you add one, instead of showing an error.
• On league night, a substitute keeps the seat and the standing of the player they replace.
• A refunded seat now says so in your event history.
• Scanning a match QR code opens that match.
• Club colors are checked for readability, so text stays legible whatever color your club picks.
• Add a player to a league by name, with no email address needed.
• A linked punch card is honored on a membership-only event.
1.1.18 Aug 19
Fixes an app freeze introduced in 1.1.14. Tapping anything on the club chooser could lock the app for several seconds at a time, and 1.1.15 did not fully fix it. It is gone now.
1.1.16 Aug 14
Tournaments are the headline in this release.
• Tournaments now have their own section in the admin menu, with a dedicated setup wizard and edit view instead of the general event form.
• Seat winds show at every table, and a tournament can use the fixed table rotation so players move the same way each round.
• You can seat a stand-in into an occupied seat, or add one mid-event from the pairings screen, without rebuilding the round.
• A seat can be cancelled and refunded during registration. Refund choices are owner-only, and a refund that did not go through can be retried.
• Discount codes are accepted at tournament checkout in the app.
• Table cards and pairing sheets can be printed or exported, and the entrants export now matches what the web produces.
• Registration answers appear in the tournament roster and in both exports, with the check-in file labeling its answer columns the same way.
• Templates and series carry authored tournament settings through instead of losing them.
Clubs can now set a service fee, and it is disclosed on every price a player sees: registrations, packages, tournaments, leagues and venue bookings.
Seating a member at a table by hand offers their pass rather than charging them again, and deactivating a table that still has bookings asks first.
Scores from a casual table can be submitted for rating, including a wall game. They are no longer discarded.
If you play in more than one league or scramble at the same club, the app now opens the one you are actually playing, and you can switch between them. Signing up for a season that starts later no longer hides the season running now.
Registration takes you to the question it is waiting on, instead of only telling you one is missing.
Asking for a new login code no longer cancels the code already sitting in your inbox.
Plus fixes to leagues, scrambles, chat, phone verification, sales tax and check-in.
1.1.15 Aug 12
Leagues take a big step forward in this release.
• Buying a season now puts you in the league automatically. Admins no longer keep a separate roster by hand, and a paid-up member can no longer be missing from the seating rotation.
• The league roster is one list. It used to be two lists that could disagree with each other, which meant a member could be registered and still invisible.
• Score entry has a new bonus box, for clubs that run house rules worth extra points. It sits beside mahjongs, points and wall games, and it adds to points only.
• Clubs can credit a member who missed a night and sent a substitute, and can set a fee for someone who covers a seat.
• Substitutes play without their scores counting toward the member's season, so covering a night no longer distorts the standings.
Plus fixes to score saving, league setup and standings.
1.1.14 Aug 10
Fix a match you already proposed.
Got the date wrong? You can now change the date, time or venue of a match you proposed, straight from the match screen. It works even after people have joined: before you save, the screen tells you exactly who will be notified, and everyone on the match is told what changed.
Also in this update:
- The match date and time now look like the controls they are, so they are easier to find when you propose a match.
- Withdrawing from a match is reachable from the notification telling you it changed.
- Tapping a notification opens the right screen. Score confirmations and two other types previously opened nothing at all.
- Scores you entered yourself are no longer overwritten from the Events tab or the round grid.
- Rating one person at your table no longer stops you rating the rest.
- Open challenges whose date has passed drop off the browse list after a day instead of a week, so what is left is what is actually coming up.
- An abandoned checkout no longer reads as a refund.
- A member whose membership already covers an event is no longer asked to pay.
- Reporting a problem holds still while it sends, and tells you the report was saved.
- If a login code may not reach your inbox, the code screen now says so instead of leaving you waiting.
1.1.13 Aug 3
Scramble, end to end.
Your active matches now sit on the home screen, challenges are reachable from the league surface, and you can play another round straight from a finished match. The rules panel states the real rules, and tapping a challenge notification opens that challenge.
Email your league from your phone.
League admins can message league members from the iOS admin surface. Scoring rules appear on the screen where you enter scores, and you can edit scores on the confirm screen before you commit them.
Monthly or yearly memberships.
Choose the billing period when you build a membership, see which one each member holds, and count sessions against the real billing period.
Member pricing that adds up.
Set a member discount percent on the event form, show the member price on event detail, and tell players what they actually owe instead of the face price.
Recurring series repairs.
Add a missed date back into a series, keep add-ons intact when you edit a series or package, and see Free on a free event's roster instead of a stale price.
Follow a club.
Follow clubs from club home and discovery, and add an About blurb to your club settings.
Plus dozens of smaller fixes across check-in, chat links, push notifications, seating privacy, discounts and the event wizard.
1.1.12 Aug 2
League signup questions. Ask your players what you need to know before they join a league — including a phone field — and see every answer on the admin roster.
Gift cards now appear in your activity. They show on the Recent Activity card and in the full Activity Log alongside registrations and package purchases.
Class series just got easier to run. Remove a single event from a series, page through a full activity log, and build a monthly pass that includes zero sessions for members who just want the membership.
Fixes:
• Series and passes now appear on the player home. If your league is sold as a full series, members can find and join it from home instead of needing a direct link.
• A host on their own can seat a casual table.
• A checked-in guest stays visible to whoever paid for them, and no longer shows a Cancel button that could not work.
• Check-in tells you why it declined instead of failing silently.
• A player who hides their identity now stays hidden everywhere their name is shown.
• Blocking a player works as intended.
• Late-cancel fees and event trash are reachable again.
• Punching a series pass no longer loses your signup answers, and can't be blocked by a question that won't render.
• An unpaid gift card is no longer treated as valid.
1.1.11 Jul 28
Book a whole table in one go — reserve every seat at your club's venue as a single booking, with one price and one confirmation.
Scan once, land in the right game: a single join scanner now handles casual tables, league nights, and scrambles, and Start Table takes you straight into a match that's ready to begin.
Scoring fixes: blank score cells are no longer saved as zeros, so a table that hasn't played stays empty instead of creating phantom rows in your standings. Corrections that lower a score to zero now save correctly, and you'll be told if any player's score doesn't go through.
Also includes venue booking and league reliability improvements.
1.1.10 Jul 25
Tournaments arrive in this update: register with signup questions, pay your entry with a gift card, join a paid tournament's waitlist, follow your table, tablemates, and standings live during play, and see your tournament history on your profile. Admins can export standings and payout PDFs. Also new: league chat and match chat, a late-cancellation report for admins, and club purchases shown in the activity feed. Plus many fixes — free events no longer ask for a payment method, and lists load more reliably for large clubs.
1.1.9 Jul 23
Sign-in stability: the app no longer signs you out unexpectedly — a bug that could log you out every few days is fixed, and a dropped internet connection no longer signs you out either. Members and admin lists now load reliably for large clubs. Plus: event add-ons are available when creating an event on paid plans, and waitlist emails now reach the right recipients.
1.1.8 Jul 22
This update brings polish and reliability across clubs, events, and your profile.
• Profile photos — pan, zoom, and re-center your photo, with automatic face-centering to start.
• Sign up friends — pick friends to register alongside you when a host asks.
• Event editor — the admin event form is now organized into clean tabs, and Save jumps straight to any field that needs your attention.
• Verification — a clear "Finish verifying" prompt for paid members, plus the verified badge in more places.
• Roster management — see players who declined and re-enroll them in a tap.
• Venue booking — date pickers now honor each club's real booking window.
• Plus a batch of stability fixes across chat, scores, packages, and contacts.
1.1.7 Jul 21
Series events get more flexible: when creating a series, you can now choose whether buyers are enrolled in every session automatically, series pricing shows on series-only sessions, and "Can't Attend" no longer appears on opt-in series.
Also in this release:
• Venue mode: table cards show who's seated, and walk-in seats are now priced and settled correctly
• Leagues: standings recalculate after every completed league event
• Punch cards: members can repurchase a depleted punch card
• Chat: member names display correctly, and you can add members when creating a channel
• Club switcher: always tappable, with a quick exit back to your club hub
• Scramble: the challenge time option is now on by default
• Leads: people who are already members no longer appear as leads
• Free plan now includes 5 events per month
1.1.6 Jul 17
Tournament brackets are here! Run single- and double-elimination tournaments with a visual bracket board — seed players, advance winners, and enter scores right from the bracket. Made a mistake? Admins can revert results and the bracket updates automatically.
Also in this release:
• Fixed a bug where toggling a member's membership status didn't save
• Bug fixes and performance improvements
1.1.5 Jul 15
Bug fixes:
- Screenshots attached to in-app problem reports now capture your screen correctly.
- Challenge skill levels now show as "All Levels" instead of a second "Open" badge.
1.1.4 Jul 13
Bug fixes and improvements for club admins:
- The Pending Payments screen now also shows package purchases awaiting Venmo or cash payment, with a Mark Paid button for each.
- Marking a season package paid enrolls the player in all season events automatically.
1.1.3 Jul 12
Tournament scoring fixes, Scramble improvements, and new club management tools.
• Tournament scoring: tables without entered scores no longer record as zeros, and round score submissions are more reliable
• Tournament Control Center: action buttons stay visible and reachable
• The Scramble: smoother match starts, live challenge updates, and re-show your QR code anytime
• Leagues: add a description to your league so players know what to expect
• League scoring: score values can now be negative
• Event series: schedule two events on the same day, each with its own start time
• Packages: set purchase limits and choose a billing start date
• Venues: per-table schedules and pass redemption
• Add-ons: mark items as taxable
• Contacts: phone numbers stay in sync across your club
• Plus stability improvements and bug fixes
1.1.2 Jul 11
This release fixes several things you told us about, and adds Spotlight to your hub.
• Join a Table. The tab could not be closed on iPhone. It closes now. Thank you to everyone who reported this.
• Spotlight. Your hub and player dashboard now surface a featured card so you can see what is happening at a glance.
• Chat. Your own messages and reactions are now recognized as yours, so reactions toggle correctly and you are no longer offered as a mention candidate for yourself.
• Moderation. Remove and Mute controls now appear only for club admins and channel moderators, matching what the server actually permits.
• The Scramble. Fixed identity checks that could show the wrong state on your own row.
1.1.1 Jul 11
Club chat comes to players. Open your club's chat channels from the Chat tab, see unread badges, and get notified about new messages. The General channel opens by default.
Event tables: remove a single table from an event, with a warning first if that table already has scores.
Fixes: private club events now appear in the member event list. Check-in from an event page is more reliable. The contacts email preview shows the real branded message, and the event Tables controls no longer overflow on smaller iPhones.
1.1.0 Jul 9
League scoring fixes: every Scramble match now counts toward your weekly best scores, and scores can no longer overwrite an earlier match.
Table game fixes: players are no longer stuck on the game screen when a game ends, the Done button no longer freezes after submitting scores, and non-hosts get a Leave option during play.
League registration is more reliable, including after an interrupted signup.
1.0.42 Jul 7
This update rolls up a wide set of fixes and improvements:
• Faster, smoother in-app chat
• Leagues & The Scramble: scoring, standings, and roster fixes
• Guest passes, gift cards, and event registration polish
• CSV contact import improvements
• Various bug fixes and stability improvements
Thanks for using Mahjic!
1.0.41 Jul 4
This update improves score entry for club and league admins:
- Save and finalize scores anytime. We removed an old rule that blocked saving until a table's points balanced to zero, which does not fit cumulative league scoring.
- An event can now be finalized even when a player finishes with a score of zero.
Thank you for the feedback that helped us fix these.
1.0.40 Jul 1
Venue management comes to iPhone and iPad. Club admins can now run open-play sessions on the go: check players in, hold tables for arriving members, manage tables, and close days, all from your device.
Players get a new Settings screen to manage email preferences, verify a phone number, replay the welcome tour, and manage their account.
Monthly-pass session details now reflect your current billing period, plus reliability improvements throughout.
1.0.39 Jun 28
A new look, and a lot more you can do from your phone.
THE NEW LOOK
Every screen has moved to a new colour scheme and a new typeface. Nothing was moved and nothing was removed. Bold Text and larger type sizes work correctly again throughout the app.
LEAGUES AND STANDINGS
- Withdraw a player from a season without leaving your phone.
- The pending-match line now tells you whether the match is waiting on you.
- The Mahjongs column explains what its two numbers mean.
TABLES AND VENUES
- Refund a table booking yourself.
- Print a door QR code for check-in. Every club can do this now, not only clubs that have tables set up.
- The waitlist banner no longer covers the table list.
PACKAGES AND SERIES
- Buyers see a minimum commitment before they pay.
- You are warned before a series charges someone for a date they have already paid for.
- Creating a series now holds the room on every night it just booked.
- A lesson date sold through a series shows the series price instead of Free.
- A seat paid outside the app is labelled External rather than given a figure we worked out ourselves.
EVENTS AND REGISTRATION
- Signup answers now appear on the Attendees tab.
- The event email screen counts how many people it will actually reach.
- Registering for a public event puts you in the club that runs it.
EVERYTHING ELSE
- A chat message that fails to send stays in the box instead of vanishing.
- Backing out of an event link no longer leaves a spinner on screen.
- A web address a club puts in a signup question is now a link you can tap.
- Many smaller fixes to scoring, check-in and profile setup.
more Version 1.1.22 6h ago
Data Linked to You The following data may be collected and linked to your identity: