Troubleshooting

Fix common problems

Something not working? Work through the checks for your problem below. Most issues are fixed in a few minutes. If you still need help, the last section lists what to send us so we can sort it out quickly.

Customers can't book

  • The event exists, is on a future date, and has not been cancelled.
  • The event is not set to hidden or private, if you want anyone to be able to book it.
  • Bookings are not paused. A paused event still appears on your booking page with its usual name and price, so it looks normal at first glance. The difference is that it shows a Booking Paused label where the Book button should be. In your admin, the Events list shows Paused on that row. Open the event and choose Resume bookings to fix it.
  • The class is active and has not been set to hidden or private by mistake.
  • There are spots left. Also check the event's limit on spots per booking, because a customer cannot book more spots in one go than that limit allows.
  • Bookings have opened for the event and have not closed yet.
  • If the event needs a waiver or a cancellation policy, the customer can see it and has ticked to accept it.
  • For a paid event, Stripe or Square is connected under Settings → Payments. If you connected it in test mode, real cards are refused until you switch to your live account.
  • A promo code, gift card, add-on or tax setting is not blocking the booking. Try booking once without them to rule them out.

Can't save a new or edited event

  • A class and a location are selected, and the end time is after the start time.
  • The number of spots is more than zero, and is not lower than the number of confirmed bookings the event already has.
  • If the price per spot, or any group price under it, is empty or 0, tick Yes, this event can be booked for free before you save. This confirms you really mean it to be free.
  • If a group price costs more per spot than a single spot, or needs more spots than the event holds, you see an amber panel under the group prices. Tick I understand and want to save this group pricing anyway in it.
  • If the instructor or location is already busy at that time, you see a conflict warning. Change the time, or tick the box in the warning to save anyway.

Class photo won't upload

  • Each photo is 15MB or less. A file over the limit shows a message as soon as you pick it. Choose a smaller copy, or let your phone make the photo smaller when you share it.
  • The file is a JPEG, PNG, WebP, or GIF image (logos also accept SVG, as long as any text in it has been converted to outlines). iPhone photos change to JPEG by themselves when you pick them from your photo library. PDFs and other documents are refused, and the error message says so.
  • When you add many photos at once, together they must come to less than 64MB. If they don't, save with fewer photos and add the rest in a second edit.

Your logo doesn't show on your booking page

  • A logo is uploaded at Settings → Branding → Full color logo. With that field empty, your booking page shows your business name as a heading instead. So if you see a blank space where the logo should be, a logo is saved but cannot be seen.
  • The logo is not the white one. White artwork disappears on your booking page. There the logo sits on the header color, which is white unless you changed the header or surface color under Settings → Booking Widget → Widget appearance. Put the white version in Settings → Email → Email appearance as your email logo, where it shows on your email header color. The branding page warns you straight after you save if the logo you just uploaded will not show.
  • If your logo is an SVG file, its words must be drawn as shapes, not typed text. SVG logos are turned into PNG images so they can go on receipt PDFs, and that step cannot draw typed text. Convert the text to outlines in your design tool, or upload a PNG instead. An SVG that cannot be converted is refused with a message saying why, rather than saved as a blank image.

Payment fails or succeeds without a booking

  • Search for the booking in Bookings. If it is there, note whether it says paid or unpaid.
  • Compare the booking total with the amount in your Stripe or Square account. If the two do not match, FullClass refuses the payment on purpose, to protect you and the customer.
  • Check that Stripe or Square is still connected under Settings → Payments, and that you are on your live account rather than test mode.
  • Some banks ask the customer to approve a payment in their banking app or with a code. If the customer closed that window or did not finish it, the payment does not go through. Ask them to try again and complete the check.
  • If the customer sees "Your card was declined. Your request used a real card while testing.", your Stripe account is still in test mode. This happens with Apple Pay too. In test mode Stripe refuses every real card. Connect your live Stripe account to take real payments, or use one of Stripe's test cards while you are still testing.
  • For Square, open Settings → Payments and check your Square details there, including the Location ID.
  • If a customer says the box for their card details never appeared, the page did not finish loading on their device. This is almost always a slow or dropped internet connection on their side, not a problem with your account. The booking form tries again by itself. If that also fails, it shows "The payment form couldn't load. Please check your connection and try again." and a Retry button, and the customer cannot confirm until the card box appears. Ask them to press Retry, or reload the page and start again.
  • If the customer was charged but no booking was made, check the booking's refund details, or look up the payment in Stripe or Square and refund it there.
  • Cancelling with a partial refund and seeing "Enter a partial refund amount greater than zero, or choose Full refund or No refund.", or, on an event, "That is more than any booking on this event can refund", means nothing was cancelled and no money moved. The amount box takes a plain number, with a dot or a comma for the decimal, like 10.50 or 10,50. A currency symbol, extra words or a thousands separator (1,234) cannot be read as an amount. Retype it and confirm again. The refund is refused on purpose, rather than rounded to zero or raised to the full amount. Cancelling a class cancels every booking on it and emails every customer, so it should never go ahead with the wrong amount.
  • Can't switch from Square to Stripe, or the other way round? You can only have one connected at a time. Open Settings → Payments, press Disconnect on the current one, then connect the new one. Your booking page stops taking payments until the new one is connected.
  • Look at your activity log and your Stripe or Square account at the exact time the customer tried to pay.

Customer didn't receive a confirmation or receipt

  • Open the booking or customer and check the email address. A single typo sends the email to the wrong inbox. If it is wrong, correct the address first, then resend.
  • Ask the customer to look in their spam or promotions folder, and to search their inbox for the class name or booking number.
  • You can send most customer emails again from the page they belong to, exactly as they were first sent.
    • Any booking email: open the booking and use the Emails sent panel, then Resend next to the one you need (confirmation, cancellation, refund, and more). Each resend is the exact email the customer first received, attachments and all, sent again from your current sending address. Use Preview to check it first. This works even for cancelled or refunded bookings, and covers emails from the last 90 days.
    • Course enrollment confirmation: open the course purchase → Manage menu → Resend confirmation email (one calendar invite per session). A green Email re-sent banner confirms it is on its way.
    • Gift card: open the gift card → Resend email to re-send the recipient the code.
    • Private event: open the order → Resend link (review & pay link) or Resend receipt (latest payment).
  • Every resend appears in the activity log, so you can check it was sent.

Your FullClass™ subscription says payment failed

This is about what you pay FullClass, not your customers' payments above. If we cannot charge your card, FullClass shows a banner and goes through the steps below before anything is locked.

  • Payment failed (first warning): use Update card on Settings → Billing to add a working card. As soon as it is your default card, FullClass charges the unpaid invoice to it, so there is nothing else to press. To charge the card you already have again, use Retry now.
  • Payment still failing (urgent): the fix is the same. Do it soon, so your account is not suspended.
  • Final notice: the account is suspended in 7 days unless the open invoice is paid.
  • Suspended: admins can still open Settings → Billing to pay or start the plan again, and can still read reports. Everything else in the admin is blocked until the bill is paid. Your booking page and widget also stop taking bookings. They come back by themselves once the invoice is paid.
Going quiet for a season? There is nothing to pause, and nothing extra to worry about. You pay the same flat plan price whether the month is quiet or busy, and a busy month never blocks bookings. If you expect a slow stretch, you can move to a smaller plan from Settings → Billing and move back up later. To close the account for good, cancel there too.

Hosted booking page issues

  • You are sharing your own booking page link. Copy it from the Getting started page in your admin (owners only) instead of typing it.
  • Your FullClass subscription is paid. If Settings → Billing says Admin is locked because your payment failed, your booking page takes no bookings until you pay.
  • You pressed Save after changing your logo or colors.
  • Saving Settings → Email → Email appearance says the text color is too light. Body text sits on a white card, so it needs enough contrast against white to be easy to read (the WCAG AA standard). Pick a darker color, or clear the box to use the default dark grey.
  • The brand color is a hex code such as #7C3AED (or the short form #7CE). Anything else is refused with “Brand color must be a hex color”, and nothing on the branding page is saved. That includes a logo chosen in the same save. The admin color on the same page is checked the same way. If buttons, checkboxes or the selected sidebar item are hard to see in the admin, your brand color is too light for white backgrounds. Set a darker Admin color there. Customers keep seeing your brand color.
  • Your browser may be showing an old copy of the page. Open the page in a private or incognito window to see your latest changes.

Widget or website embed issues

  • The widget code is on the page. Ask whoever looks after your website to check that the script /sdk/v1/booking.min.js loads.
  • The place on the page where the widget should appear is there before the widget code runs. This is a check for your web person.
  • The widget uses your public key, which starts with pk_. Never put your secret key (sk_) on a web page.
  • The public key is allowed to show events and take bookings. In Settings → API Keys, its Permitted scopes include events:read and bookings:write.
  • If you limited the key to your own website, the address is typed exactly as it appears in the browser, for example https://www.yourstudio.com. The list is under Settings → Booking Widget, and on the key itself as Allowed origins. An address with www and one without count as different websites, so list both if you use both.
  • The events are public, in the future, open for booking, and have spots left.
  • Any custom styling added to your website is not hiding the widget's buttons, pop-ups or error messages.

Customer portal problems

  • The customer is using the portal link for your business, from one of your emails or your booking page.
  • The email they type is spelled the same as on their booking or customer record.
  • The sign-in link has not expired and has not been used already. Each link works once. If in doubt, ask the customer to request a new one.
  • The customer has looked in their spam or promotions folder.
  • For privacy, the portal never says whether an email address has an account. To check, search for the customer in your admin.
  • If the customer is trying to cancel, your cancellation policy still allows it at this point.

Staff missing features or access

  • The user is active and has finished setting up their account.
  • Their role (owner, admin or staff) is allowed to open that area. The owner sets this under Settings → Roles & permissions.
  • Ask an owner or admin to check the user's details and, if needed, resend the setup email.
  • “That password is one of the most commonly used ones” on a reset or password change is not a fault. The password is on a list of the few thousand that turn up in every data breach. Pick a different one. Eight characters is still the minimum length.
Heads up. FullClass does not hold back features by plan, and there is no limit on users. If someone cannot see a feature, it is almost always down to their role's permissions.

Reports, taxes, gift cards, promo codes, or add-ons look wrong

  • Check the report's date range, and your Fiscal year end under Settings → General.
  • Check the booking status. Cancelled, refunded, unpaid and manually paid bookings can change the totals.
  • Check the tax rate is active and applied to the right location. Then check the class or event is not marked tax exempt by mistake.
  • Check the gift card's history for its purchase, uses, refunds, changes and the value left on it.
  • Check the promo code's maximum uses, its valid dates, which events it works on, and the customer it came from.
  • Check the add-on is active, and check its price, currency, limit and the quantity chosen on the booking.

Google Analytics shows bookings but revenue is $0

  • This is almost always a Google Tag Manager setup gap, not a FullClass problem. Analytics received the booking event but not the price, so it records the sale with $0 and a blank order number.
  • It is not caused by refunding a booking. Google Analytics never rewrites a past sale to $0 when you issue a refund. Refunds are counted as separate events, so a $0 sale means the price never reached Analytics in the first place.
  • If your website runs Analytics through Google Tag Manager, the GA4 tag that receives booking events needs the ecommerce fields (value, currency, and transaction id) added as event parameters. Without them, every purchase reports $0.
  • If older revenue looks correct but new bookings show $0, check whether that older data came from a previous booking system's tag rather than from FullClass.
Heads up. Fixing this is a change inside your Google Tag Manager account, so ask whoever manages your website analytics, or contact FullClass support and we can walk you through it. The step-by-step setup is in Tracking and analytics.

Every booking is counted twice in Google Analytics

  • Two of every booking event, often with different amounts on each copy, usually means your own website is repeating the events FullClass already sends.
  • This is common shortly after moving from another booking system. A piece of code left on your site translates FullClass booking events into your old system's event names and sends those as well, so Analytics receives both.
  • A giveaway is seeing event names in Analytics that FullClass does not send, such as add_to_cart or checkout_progress, alongside the ones it does.
  • Google Ads is usually unaffected and keeps counting each booking once, so your ad conversions can look right while Analytics looks wrong.
Heads up. The fix is a change on your own website, so ask whoever maintains it, or contact FullClass support and we can identify exactly which code is duplicating the events. Removing it will empty any Analytics report built on the old system's event names, so plan to rebuild those on the FullClass names.

Still stuck? What to send us

  • Your business name and the address of the page with the problem.
  • The class name, the date and time, the booking number, the customer's email and, for a payment problem, the payment reference from Stripe or Square.
  • What you expected, what happened, and whether it affects one customer or all customers.
  • When it happened, including your timezone, and screenshots of any error message or setting.
  • Where you saw the problem, such as your booking page, the widget on your website, your admin or the customer portal.
Quick tip. Screenshots of your settings, plus the exact booking number or customer email, save more back-and-forth than a long description.