Database Structure
This page gives you a complete overview of the database used in this template. Each data type, field, and option set is documented to help you understand how the system works, what data it stores, and how you can extend or customize it.
Whether you're making changes to workflows, privacy rules, or adding new features, this reference will help you avoid confusion and ensure you're working with the correct structure.
Data Types Overview
Each table in the database corresponds to a logical object in the system: reservations, rooms, users, menu items, etc. Below, you'll find a breakdown of all Data Types
with their fields and purpose.
Allergen
This datatype stores information about common allergens that may be present in products listed in your digital menu. It helps ensure better transparency for customers and allows establishments to communicate potential allergens clearly on dishes and drinks.
name
text
The name of the allergen (e.g. Gluten, Dairy).
products
List of Products
A list of products that contain this allergen.
Creator
User
(Built-in) The user who created the allergen entry.
Modified Date
date
(Built-in) Date the allergen entry was last modified.
Created Date
date
(Built-in) Date the allergen entry was initially created.
Slug
text
(Built-in) Automatically generated slug used in URLs (if needed).
BlockedDate
This datatype is used to define specific days during which bookings are not allowed. These blocked dates help the establishment manage availability, closures, holidays, or internal events. They can also be linked to certain booking types if only specific actions are restricted on those dates.
BlockedRequests
List of BookingTypes
Types of bookings (reservation or privatization) that are blocked on the specified date.
date
date
The date when the block is effective.
internalNote
text
A short description or internal note explaining the reason for the block.
Creator
User
(Built-in) The user who created the blocked date entry.
Modified Date
date
(Built-in) Date when this entry was last modified.
Created Date
date
(Built-in) Date when this blocked date entry was created.
Slug
text
(Built-in) URL-friendly version of the entry name (optional use).
BookingRequest
This datatype handles all booking requests made by customers — whether for a standard reservation or a full privatization. It centralizes all key information such as date, time, guest count, type, associated customer, payment status, and internal notes. It is essential to operational planning and client communication.
arrivalTime
date
The exact starting time of the reservation or event.
bookingType
BookingType
Type of booking: either a standard reservation or a privatization.
chargeAmount
number
The fee charged to the client for the booking.
customer
Customer
Linked customer who made the request.
customerNote
text
Optional note added by the customer when making the request.
date
date
The selected date for the booking.
departureTime
date
The end time of the booking.
durationInHours
number
Automatically calculated duration between start and end.
guestCount
number
Number of expected guests.
internalNote
text
Admin/staff-only note for internal tracking or clarifications.
room
Room
The room selected by the customer for the reservation.
status
BookingStatus
Current status of the booking (Pending, Accepted, Refused, etc.).
stripePaymentId
text
ID of the payment transaction processed via Stripe.
Creator
User
(Built-in) The user who created the booking (can be left blank in demo).
Modified Date
date
(Built-in) Last modification timestamp.
Created Date
date
(Built-in) Creation timestamp.
Slug
text
(Built-in) Optional URL-safe identifier (used for SEO or custom routing).
Customer
This datatype represents each client who makes a booking through the platform. It stores their identity, contact information, and full booking history. It also includes internal notes and administrative flags (e.g., blacklisting). It’s a central element for customer management and client interaction tracking.
bookingHistory
List of BookingRequests
All booking requests associated with this customer.
email
text
Customer's email address.
firstName
text
Customer's first name.
internalNote
text
Admin/staff-only notes related to this customer.
isBlacklisted
yes / no
Indicates whether the customer is blacklisted. Defaults to "no".
lastName
text
Customer's last name.
phoneNumber
text
Customer’s phone number.
Creator
User
(Built-in) The user who created the entry.
Modified Date
date
(Built-in) Last time the entry was modified.
Created Date
date
(Built-in) Date the customer profile was created.
Slug
text
(Built-in) Optional SEO-friendly identifier.
EmailTemplate
This datatype stores reusable email templates used throughout the app, especially for automated transactional emails (e.g. booking confirmations, rejections, etc.). Templates marked as non-deletable
are essential to the app’s internal logic and should not be removed, as they are referenced directly by their unique IDs within workflows.
body
text
The content of the email (supports dynamic fields and HTML formatting).
non-deletable
yes / no
Prevents deletion if set to "yes"; used for critical system templates.
subject
text
The subject line for the email.
title
text
Internal name used for easy identification in the back office.
Creator
User
(Built-in) The user who created the template.
Modified Date
date
(Built-in) Last modification date.
Created Date
date
(Built-in) Date the template was created.
Slug
text
(Built-in) Optional identifier for SEO or internal linking.
Establishment
This data type is used to define the public profile of the establishment. It holds essential information like operating hours, contact information, logos, and social links. There should only be one instance of this entry in your database, serving as the global reference for your venue's configuration and public-facing data.
Field Name
Type
Description
address
text
Physical address of the establishment.
bookingIntervalMin
number
Time interval (in minutes) between possible bookings.
closingHour
number
Hour (24h format) at which the venue closes.
closingMinute
number
Minute at which the venue closes.
facebookLink
text
Link to the venue’s Facebook page.
instagramLink
text
Link to the venue’s Instagram profile.
lastBookingHour
number
Last hour a customer can book (before closing).
lastBookingMinute
number
Last minute a customer can book.
linkedinLink
text
Link to the venue’s LinkedIn profile.
logo
file
Main logo of the establishment (used in headers or landing page).
openingHour
number
Hour (24h format) at which the venue opens.
openingMinute
number
Minute at which the venue opens.
publicEmail
text
Public contact email displayed to clients.
publicPhoneNumber
text
Public contact phone number.
sendEmails
yes / no
Defines whether transactional emails are enabled for this establishment.
squareLogo
file
Square format logo used for mobile apps or avatars.
websiteUrl
text
Official website URL of the venue.
Slug
text
SEO-friendly unique identifier for URLs (autogenerated).
Log
This data type is used to track and analyze user interactions within the booking module. It powers the Data section in the backoffice, enabling you to measure conversion rates and understand user behavior at each step of the booking process. Each log represents a tracked event.
Field Name
Type
Description
bookingType
BookingType
Indicates which type of booking is being tracked (e.g., room, table, etc.).
eventType
LogEventType
Defines what stage of the process the log refers to (e.g., opened calendar, submitted form).
Slug
text
SEO-friendly identifier (autogenerated, optional).
MailHistory
This data type tracks all emails sent to customers. It is used to store a searchable archive of communications, ensuring full traceability. The Created Date
is used as the timestamp for when the email was actually sent.
Field Name
Type
Description
body
text
The full content of the email sent.
bookingRequest
BookingRequest
Reference to the related booking request, if applicable.
recipient
Customer
The customer who received the email.
subject
text
Subject line of the email.
template
EmailTemplate
The email template used to generate the email content.
Slug
text
(Optional) SEO-friendly unique identifier.
Product
This data type stores all the menu items or products available in your establishment. It supports allergen tracking, category classification, and publishing control, making it ideal for online menus or internal item management.
Field Name
Type
Description
allergens
List of Allergens
Allergens associated with the product (e.g., gluten, nuts, etc.).
category
ProductCategory
The product’s category (e.g., drink, main dish, dessert).
description
text
A short description of the product.
isPublished
yes / no
Indicates whether the product is visible in the public-facing menu.
name
text
The name of the product.
price
number
The price of the product.
Slug
text
(Optional) SEO-friendly unique identifier.
Room
This data type defines the private rooms or spaces available for booking in your establishment. Each room can have its own pricing, visual media, and description to help customers choose the best fit for their event or reservation. It's especially useful for managing privatization requests.
Field Name
Type
Description
capacity
numeric range
Indicates the min and max number of guests the room can host.
coverImage
file
Main image displayed for the room in previews and listings.
description
text
Full description of the room, used for detailed views.
features
List of texts
List of amenities or features (e.g., sound system, projector, etc.).
galleryImages
List of files
Additional photos for a complete visual presentation of the space.
hourlyRate
number
The room’s hourly price.
isPublished
yes / no
Whether the room is visible in the public booking interface.
name
text
The name of the room (e.g., “VIP Lounge”, “The Garden Room”).
shortDescription
text
Brief summary shown in previews or cards.
videoFile
file
Optional video file to showcase the room in motion.
Slug
text
(Optional) SEO-friendly unique identifier.
User
This data type is used to manage staff accounts within the application. It contains basic identity and access information, allowing role-based control over which parts of the system each user can access. Users can have different statuses (admin, staff, demo), and their credentials are linked to their email.
Field Name
Type
Description
firstName
text
Staff member's first name.
lastName
text
Staff member's last name.
status
UserStatus
Defines the role of the user (admin, staff, demo). Affects visibility and permissions.
email
text
Used for login and identity. Automatically linked by Bubble.
Slug
text
Optional SEO-friendly unique identifier.
Option sets
Option sets are used in the template to define fixed lists of values that drive consistent behavior and logic throughout the app. Unlike regular data types, option sets are static and do not change during runtime, making them ideal for things like statuses, categories, or types.
They are especially useful for:
Ensuring uniformity across workflows and interfaces
Improving performance (option sets are faster to load than database entries)
Simplifying conditional logic and display rules
In the following section, each option set used in the template is explained with its possible values and its purpose within the application.
BookingStatus
The BookingStatus
option set defines the lifecycle of a booking request. It is used to determine and display the current state of a reservation throughout the platform. It allows for easy filtering, conditional formatting, and workflow triggers based on status.
Draft
The booking request has been created but not yet submitted or finalized.
Pending
The booking has been submitted and is awaiting validation or confirmation.
Confirmed
The booking has been approved and is officially scheduled.
Archived
The booking is no longer active but is kept for historical reference.
Declined
The booking request was refused and is no longer in progress.
Used in:
BookingRequest data type
Filtering and displaying reservation statuses
Triggering email notifications and logic in workflows
BookingType
The BookingType
option set is used to classify the nature of a booking request. This helps separate standard reservations from full-space privatizations, making it easier to adjust logic, pricing, and display across the application.
Reservation
A standard booking for one or more people in the establishment.
Privatization
A booking that involves reserving the entire venue or a private room.
Used in :
BookingRequest data type
Filtering and calculating pricing logic
Adjusting availability and capacity logic in workflows
LogEventType
The LogEventType
option set is used to track user behavior and analyze conversion steps within the booking module. It’s primarily leveraged by the Log data type to measure which stages users are reaching and where they drop off, supporting data-driven UX improvements.
Traffic
User has opened the booking module.
ArrivedOnDate
User selected a date.
ArrivedOnRoom
User selected a room.
ArrivedOnInfo
User filled out the information form.
ArrivedOnPayment
User reached the payment step (regardless of success).
Used in :
Log data type
Analytics dashboard inside the back-office ("Data" tab)
ProductMainCategory
The ProductMainCategory
option set defines the top-level structure of the online menu. These main categories group together related subcategories from the ProductCategory
option set. This hierarchy is used to organize and display the product offering in a clear and user-friendly way on the public-facing menu.
Beverages
Contains all drink-related items (softs, wine, cocktails, etc.).
Food
Groups food items like starters, mains, desserts, and platters.
Tapas
Dedicated to sharing dishes and finger foods typically served in a tapas format.
Used in:
ProductCategory
option set (each subcategory links to one of these main categories)Online menu rendering logic (public website menu layout)
ProductCategory
The ProductCategory
option set defines the subcategories of products within the menu. Each entry is linked to a ProductMainCategory
and is used to classify and display items (drinks or dishes) in a structured way. These subcategories are the ones directly associated with each Product
in the database.
This structure is essential for organizing the online menu by grouping items into clear, user-friendly sections.
Soft
Non-alcoholic beverages (sodas, juices).
Wine
All wine products.
Cocktail
Alcohol-based cocktails.
Mocktails
Non-alcoholic cocktails.
Hot drinks
Includes tea, coffee, and other warm drinks.
Starter
Starters and appetizers.
Main
Main courses and substantial dishes.
...
Other subcategories like dessert, platters, tapas, etc.
Used in:
Product
data type (each product belongs to aProductCategory
)ProductMainCategory
linkage for menu display logicOnline public menu layout (grouping and filtering)
UserStatus
The UserStatus
option set defines access levels for users of the back-office. It helps determine permissions, visibility, and available actions for each type of user (especially staff members). This status is referenced in both logic workflows and privacy rules.
You can expand this option set based on your needs by adding new roles (e.g. “Manager”, “Intern”) and updating logic/privacy rules accordingly.
Admin
Full access to all features, settings, and sensitive data.
Staff
Limited access to core operational features only.
Demo
Used for demonstration purposes with restricted interactivity.
Used in:
User
data typePrivacy rules configuration
Conditional logic for dynamic interface control (front & back-office)
Last updated