🌍 Appointment Bookings — Translation
Hoppy Appointments lets you translate the customer-facing text that appears throughout the booking experience. This includes button labels, form fields, calendar text, success messages, waitlist wording, and even built-in email block labels.
If your store sells in multiple languages, translations help customers book in the language they’re already browsing in. If you sell in one language, translations still let you customize the default wording to match your brand — like changing “Book Now” to “Reserve My Spot” 🎯
This guide explains how the translation system works, where to configure it, and what each group of settings controls.
⚠️ Before You Begin
Translations are managed from:
Hoppy Appointments → Settings → Translations
Before translating anything, make sure:
- The Hoppy Appointments app is installed
- You have at least one service created
- The languages you want to use are already added in your Shopify store
ℹ️ Languages must be added in Shopify first before they appear inside Hoppy Appointments.
To add or manage store languages, go to:
Shopify Admin → Settings → Languages
💡 If a language is not configured in Shopify, it will not be available in the translation dropdowns.
🌐 Multi-Language Settings
At the top of the Translations page, the Multi-language settings card controls which languages the booking widget uses.
Default Language
This is the language used when:
- Multiple languages are turned off
- A customer visits in a language you have not enabled
Think of it as your fallback language. The app will always fall back to this language when something can’t be displayed in the customer’s language.
Enable Multiple Languages
Turn this on to support more than one language on your storefront.
When enabled, two additional settings appear:
Language Detection Mode
Choose how the app decides which language to show:
- Store language → Uses the active Shopify storefront locale from the customer’s browsing session
- Browser language → Uses the customer’s browser language setting
Most merchants use Store language because it matches Shopify’s own language switching.
Enabled Languages
Select which languages the booking widget should support. Only languages added in Shopify appear in this list.
⚠️ Important:
- The default language is automatically included in the enabled list
- If you remove the language currently selected in the editor, the preview automatically switches back to the default language
📝 The Translation Editor
Below the multi-language settings, the translation editor is split into two tabs:
- Calendar Translations → Global text used across all services
- Service Translations → Per-service overrides for services with advanced configuration enabled
A language switcher appears above the tabs when multiple languages are enabled. Use it to translate one language at a time.
The Calendar Translations tab also includes a live preview panel, so you can see how changes look on desktop and mobile while you edit.
📅 Calendar Translations Tab
This tab controls the default text shown throughout the booking widget, reschedule page, cancel page, and email block labels.
Text is organized into groups. Here is what each group controls.
Product Page
- Product page button label → The text on the button that replaces Add to Cart on bookable product pages
Default: “Book Now”
General Calendar Texts
These are the main labels and messages inside the booking widget:
- Time needed → The heading above duration options, e.g. “How long do you need?”
- When do you want to book ? → The heading above the time slot list, e.g. “What time works best?”
- Confirm booking title → The heading on the confirmation step
- Back button label, Confirm button label, Continue button → Navigation buttons
- Confirm button label when submitting → The submit version of the confirm button
- Time not found message / sub-message → Shown when no slots are available
- Teammate selector label → Label for choosing a team member
- No preference label → Option when any teammate is fine
- Success title / description / CTA / CTA Link → The screen customers see after a free booking is confirmed
and many more.
Calendar Form
Labels and validation messages for the default booking form fields:
- First name field label
- Last name field label
- Email field label
- Phone field label
- Required message → Shown when a required field is empty
- Email error message → Shown when an email address is invalid
Rescheduling Page
Text customers see when they reschedule a booking through their email link:
- Reschedule booking heading
- Rescheduling button
- Rescheduled booking button
- Rescheduled booking message
Meeting Details
- Meeting details title → The heading above the location or meeting link on the confirmation screen
Booking Status Messages
Messages shown when a booking is on hold or cancelled:
- On-hold title/message
- Cancelled title/message
- Cancel booking title/button
These are especially useful for services that require manual approval.
Multiday Calendar Texts
Labels used for stays and rentals:
- Start date label, End date label
- Pick date text
- Duration text
- Minimum selection label → Uses dynamic variables
{count}and{unit}
Bundle Bookings Texts
Labels used for session packages:
- Number of time slots label
Partial Payment
Labels shown when deposits are enabled:
- Partial payment label → The deposit checkbox label
- Pay full amount label → The full-payment checkbox label
💡 These labels are only visible on the storefront when partial payments are enabled for a paid service.
Units
Short labels for duration and date formatting:
- Min, Hour, Hours, Day, Days, Night, Nights
- Date label
These are used when displaying durations like “60 min” or “2 nights.”
Months & Days of Week
Translate the 12 month names and the 7 day-of-week names. There are two sets:
- Days of week → Full names like Monday, Tuesday
- Days of week short → Short names like Mon, Tue
- Month names → Full names like January, February
These are used in the calendar header and date selectors.
Email Blocks
These control the built-in labels inside your email templates:
- Header labels → Confirmed, Cancelled, Updated, On Hold, Declined, Waitlist
- Action labels → Reschedule, Cancel
- Calendar link labels → Add to Google Calendar, Add to Apple Calendar, Add to Outlook Calendar
- Section labels → Location, Order, Teammates
ℹ️ These labels are used by the pre-crafted email blocks. The custom text you write in Email Settings subject lines and bodies is not auto-translated — it is sent exactly as you write it.
See the Email Notifications documentation for details on customizing email templates.
Waitlist
Text shown when customers join or interact with the waitlist:
- Form title and description
- Join waitlist button label
- Inline link text above the slot list
- Success message after joining
- Submit button text
🛠️ Service Translations Tab
This tab lets you override global translations for individual services.
ℹ️ Only services with Advanced configuration enabled appear here. If no services use advanced configuration, an info banner explains how to enable it.
For each listed service, you can translate:
- Title → The service title shown to customers
- Description → The description shown to customers
- Floating action button label → If the service uses a floating Book Now button
- Product page button label → Override the global button text just for this service
- Back button label, Confirm button label
- Time needed text, Book text, Confirm booking text
💡 Service-level translations take priority over global Calendar Translations. This is useful when one service needs different wording — for example, a “Rent Now” button for rentals while everything else says “Book Now.”
The Service Translations tab does not include the live preview panel because overrides are tied to specific services.
🖥️ How Translations Appear on the Storefront
The app decides which language to display using this logic:
- If multiple languages are disabled, the widget always uses the default language
- If multiple languages are enabled:
- Store language mode → Uses the active Shopify storefront locale
- Browser language mode → Uses the customer’s browser language
- If the detected language is not in your enabled list, the app falls back to the default language
- If a specific translation key is missing, the app falls back to English
Where translated text appears:
- The Book Now button on product pages
- The booking widget calendar, form, and buttons
- Success, on-hold, reschedule, and cancel pages
- Waitlist form and confirmation messages
- Built-in email block labels inside notification emails
🧮 Dynamic Variables
Some translation fields support dynamic placeholders. Do not remove these variables — they are replaced automatically based on the booking.
Minimum selection label
Use {count} for the minimum number and {unit} for the day or night unit.
Example:
Minimum stay: {count} {unit}
Becomes:
Minimum stay: 2 nights
⚠️ Important Notes & Limitations
- Add languages in Shopify first. Hoppy Appointments only shows languages that already exist in your Shopify store settings.
- Browser language is simplified. When using Browser language detection, the app uses the primary language code. For example,
pt-BRbecomespt. If you only enabledpt-BR, browser detection may not match. - Service translations require advanced configuration. You must enable Advanced configuration on a service before it appears in the Service Translations tab.
- Custom email text is not auto-translated. The subject and body text you type in Email Settings are sent exactly as written in all languages. Only the built-in block labels are translated automatically.
- POS extension localization is limited. The POS extension primarily supports English. Multi-language storefront translations do not apply inside the POS booking flow.
- Admin interface is English-only. The Hoppy Appointments admin is currently available in English regardless of your store language.
- Save after changing languages. Translation changes apply to the storefront as soon as they are saved.
- Falling back to English is normal. If a translation is blank or missing for a language, the app shows the English version so customers never see broken text.
💡 Common Use Cases
Single-language store with custom wording
- Keep Enable multiple languages off
- Set the Default language to your store language
- Edit Calendar Translations to change default labels
Example: Change “Book Now” to “Reserve My Spot” across all services.
Multi-language storefront
- Add languages in Shopify Admin → Settings → Languages
- In Hoppy Appointments, enable Multiple languages
- Choose Store language detection
- Select the languages you want to support
- Translate each language in the Calendar Translations tab
Result: Customers booking in French see French labels, while customers booking in English see English labels.
Per-service button override
- Enable Advanced configuration on a rental service
- Go to Service Translations
- Change the Product page button label for that service to “Rent Now”
Result: Only that service shows “Rent Now.” All other services keep the global “Book Now” label.
🎉 Final Result
Once your translations are configured:
✅ Customers see booking labels in their storefront language
✅ Button text, form labels, and calendar text match your brand voice
✅ Multi-language stores automatically switch languages based on Shopify or browser settings
✅ Service-level overrides let individual services use custom wording
✅ Built-in email block labels translate automatically
✅ Missing translations fall back safely to your default language or English
With translations set up, your booking experience feels natural for every customer, no matter what language they speak 🌍
Updated on: 20/08/2026
Thank you!