Tiquo
Integrations OverviewAirtableAsanaSlackGoogle AnalyticsMetabaseMixpanelPendoSegmentTableau (PAT)ActiveCampaignBrevoEmarsys Core API (WSSE)EventbriteFacebookGoogle AdsHighLevelInstagramKlaviyoMailchimpMailgunMicrosoft AdsSendGridTwitter (v2)HubSpotNotionAcuity SchedulingAirtable (Personal Access Token)BasecampCal.com (v2)CalendlyClickUpCodaConfluence Data CenterExpensifyGoogle CalendarGoogle SheetHarvestLinearMicrosoft Power BIMicrosoft TeamsMindbodyMondayOpenAIPerplexityPingboardPivotal TrackerProductboardQuickbaseServiceM8ServiceNowTeamworkTickTickTimelyTodoistTrafftTrelloWrikefal.aixAIZendeskIntercomAircall (OAuth)DixaFreshDeskFreshserviceFrontPlainRingCentralZoho DeskBrazeDialpadGoogleMicrosoftOutlookPodiumSednaSharePoint OnlineTwilioWhatsApp BusinessZoho MailBambooHRADPDeelEmployment HeroGustoHibob Service UserNamelyOracle Fusion Cloud (HCM)PaychexPayfitPaylocityPersonioRipplingSAP SuccessFactorsSage HRTSheetsUKG ProUKG ReadyWorkdayZoho PeopleQuickBooksBuildiumExact OnlineFreshBooksIntuitNetSuitePennylaneSageSage IntacctTwinfieldUnanetWave AccountingXeroZoho BooksSalesforceAffinityAttioCopperFreshsalesGainsight CCInsightlyKustomerMedalliaPipedriveTwenty CRMZoomInfoApaleoMewsMicrosoft Business CentralOdooSAP ConcurZuoraAcceloCoupa CompassZoho InvoiceAnrokAvalaraDocuSignDropbox SignPandadocSignNowLinkedInSplitwiseTikTok AdsJotformQualtricsRefinerTypeformShopifyCin7 CoreGoogle MapsRingoverListrakRydooTalentLMSApple Business ManagerCrunchbaseRocketReachOcean.ioFreepikEnergy Performance Certificates (Gov.UK)JustworksGristSAP S/4HANA Cloud3CX8x8Adobe CommerceBirdCloudbedsConstant ContactBufferCustomer.ioCrispFreeAgentGreenhouseMeta Marketing APIMollienocrm.ioOomnitzaDigitsPylonSage 200ShopwareAnvilShippoEasyPostAltrataMicrosoft PeopleMicrosoft IntuneCloudTalkGoogle FormsMaximizerMicrosoft PlannerSalesmsgSellercloudTallyTimifyUpsalesCleverReachHeymarketMailjetPleoProvenExpertTelegramToggl TrackTenzoASSA ABLOY Vingcard VisionlineASSA ABLOY Vingcard VostioASSA ABLOY TESA HotelASSA ABLOY SMARTairSalto KSSalto Space OnlineDormakabaOmnitecHotekTT LockWebLockISEOKleverKeyAperioISONASHIDSouthcoThird MillenniumSTidAxis CommunicationsBooking.comExpediaHotels.comAirbnbGoogle HotelsTripadvisorAgodaHotelbedsTravelgateXHyperguestRoibosReconlineTraviaOpenGDS.comMG BedbankDidatravelHotelREZHRSHotelnetworkGetaroomWinkBookeasyVRBOInntopiaHookusbookusHipcampSpot2niteCamping VisionMinistry of VillasTrip.comTravelokaTiketMakeMyTripHoteripKlookeDreamsSzallasEmerging Travel GroupCheck24Bed-and-Breakfast.itWorld2Meet (W2M)Ctoutvert / SecureholidayDespegarPriceTravelRoombeastMitchell CorpHRS AustraliaResonlineHostelworldHostelhopTablet MichelinMr & Mrs SmithHopperHotel TonightPitchupMoveriiLocalOTAAlaricBooknpayCultbookingGuestTractionLevartWeSpeakMake.comZapierPricelabsPricepointRategenieElastic HotelRoom Price GenieTurbosuiteUber EatsDeliverooDoorDashBolt FoodGlovo
API and AuthenticationHosted Package

Service catalogs and locked booking

Build service catalogs, service detail pages, and booking embeds for a selected service.

Service catalogs and locked booking

Build service catalogs, service detail pages, and booking embeds for a selected service. First, complete the installation.

Render a customer flow service catalog

Use service attributes to build a custom catalog from the services connected to a customer flow. Your Webflow or website-builder elements remain in full control of the layout and styling.

Service catalogs and locked booking require Hosted Package 1.1.22 or newer. Automatic category-image fallback and the explicit service/category image fields require 1.1.23 or newer. Service category-name fields require 1.1.24 or newer. Service category-description fields require 1.1.25 or newer. The unversioned installation URL loads the current version.

Set data-tiquo-services to the customer flow ID. The first data-tiquo-service-item child is the template that Tiquo hides and clones for each service.

<div data-tiquo-services="CUSTOMER_FLOW_ID" data-tiquo-limit="20">
  <article data-tiquo-service-item>
    <a
      data-tiquo-service-link="/services/{slug}?tiquoServiceId={id}"
    >
      <img data-tiquo-service="image" alt="" />
      <h2 data-tiquo-service="name"></h2>
      <span data-tiquo-service="categoryName"></span>
      <p data-tiquo-service="categoryDescription"></p>
    </a>

    <p data-tiquo-service="shortDescription"></p>
    <span data-tiquo-service="priceLabel"></span>
    <span data-tiquo-service="durationLabel"></span>
  </article>

  <p data-tiquo-empty>No services available.</p>
</div>
</>Interactive example

Customer flow service catalog

Inspect the catalog wrapper, template, link, every supported service field, images, pricing, booking rules, and fallback.

Hover, tap, or focus an element to inspect its data attributes.

Experiences

Book your next visit

Services available at Atlas House.

Ground floor

Recovery Suite

Private sauna, cold plunge, and a quiet recovery lounge.

£35.00
60 minutes

Every other supported service field

39 fields

Service ID

service_01JZ8A2K

Service ID alias

service_01JZ8A2K

Service slug

recovery-suite

Full description

Private sauna, cold plunge, and lounge.

Short description

Private recovery experience.

Service tags

Wellness, Recovery

Tags label

Wellness, Recovery

Featured image

Featured service image

Service image

First service image

Service image URLs

2 image URLs

Category image

Wellness category image

Category image URLs

2 category image URLs

First category name

Wellness

All category names

Wellness, Members

Category names label

Wellness, Members

All category descriptions

Restore and recharge, Member favourites

Base price

35.00

Effective price

28.00

Currency

GBP

Price type

fixed

Service type

appointment

Raw duration

60

Duration type

minutes

Capacity

4

Featured service

Yes

Payment type

online

Deposit required

Yes

Deposit amount

10.00

Deposit type

fixed

Minimum advance booking

2 hours

Maximum advance booking

90 days

Check-in time

15:00

Check-out time

11:00

Minimum stay

1 night

Maximum stay

14 nights

Category IDs

cat_wellness, cat_members

Category IDs label

cat_wellness, cat_members

Customer flow ID

flow_atlas_house

Locked booking URL

/embed/flow_atlas_house?service=...

Empty fallback
No services are available right now.

The first service card is the template. Tiquo safely fills links, images, and text according to the element each data attribute is attached to.

The customer flow ID is the ID in its booking or embed URL. For example, use CUSTOMER_FLOW_ID from https://book.tiquo.app/embed/CUSTOMER_FLOW_ID.

data-tiquo-service-link sets the element's href and supports these URL-encoded placeholders:

PlaceholderValue
{id}Service ID
{slug}Service slug
{bookingConfigId}Customer flow ID

If the attribute has no value, its default link is ?tiquoServiceId={id}. Use data-tiquo-limit to cap the number of services; the default is 100.

Public services render without a customer session. When the customer is signed in, the collection also includes membership-gated services that customer is allowed to book. Inactive services, services outside their visibility window, and services unavailable to the current customer are not rendered.

Service fields

Set data-tiquo-service to any supported field:

FieldDescription
id or serviceIdService ID
slugService slug
nameService name
descriptionFull description
shortDescriptionShort description
tagsComma-separated service tags
tagsLabelComma-separated service tags
imagePreferred display image: the service image, then the first associated category image
featuredImageFeatured service image, with the first service image as fallback
serviceImageFeatured service image, with the first service image as fallback
imagesComma-separated service image URLs
categoryImageFirst image from a flow category containing the service
categoryImagesComma-separated images from all flow categories containing the service
categoryNameName of the first flow category containing the service
categoryNamesComma-separated names of all flow categories containing the service
categoryNamesLabelComma-separated names of all flow categories containing the service
categoryDescriptionFirst configured description from a flow category containing the service
categoryDescriptionsComma-separated configured descriptions from all flow categories containing the service
priceBase price
effectivePriceEffective price after applicable flow pricing
currencyCurrency code
priceLabelLocalized effective price, or Free
priceTypePrice type
serviceTypeService type
durationRaw duration
durationTypeDuration unit or booking type
durationLabelDisplay duration, such as 60 minutes
capacityService capacity
isFeaturedYes or No
paymentTypePayment type
depositRequiredYes or No
depositAmountDeposit amount
depositTypeDeposit type
minAdvanceBookingMinimum advance-booking rule
maxAdvanceBookingMaximum advance-booking rule
checkInTimeCheck-in time
checkOutTimeCheck-out time
minStayMinimum stay
maxStayMaximum stay
categoryIdsComma-separated category IDs
categoryIdsLabelComma-separated category IDs
bookingConfigIdCustomer flow ID
bookingUrlLocked booking URL for this service

When data-tiquo-service="image" or another image URL field is placed on an img, Tiquo safely sets src. On a link, it safely sets href. The existing data-tiquo-hide-empty, data-tiquo-preserve-text, and data-tiquo-style data attributes also work with service fields.

image is the simplest choice for catalog cards because it prefers an image configured directly on the service and automatically falls back to the first associated category image. Use serviceImage or categoryImage when the image source must be explicit. The plural images and categoryImages fields render as comma-separated URLs on text elements.

For example, use a service image as a background:

<div
  data-tiquo-service="image"
  data-tiquo-style="background-image"
  data-tiquo-hide-empty
></div>

Use categoryName to display the first associated category. If a service is assigned to multiple flow categories, use categoryNames to display every category as comma-separated text:

<span data-tiquo-service="categoryName"></span>
<span data-tiquo-service="categoryNames"></span>

Use categoryDescription to display the first configured description from an associated category. Use categoryDescriptions to display every configured associated category description as comma-separated text:

<p data-tiquo-service="categoryDescription"></p>
<p data-tiquo-service="categoryDescriptions"></p>

To render the two sources separately:

<img
  data-tiquo-service="serviceImage"
  data-tiquo-hide-empty
  alt=""
/>
<img
  data-tiquo-service="categoryImage"
  data-tiquo-hide-empty
  alt=""
/>

Render a custom service detail page

Set data-tiquo-service-detail to the same customer flow ID:

<section data-tiquo-service-detail="CUSTOMER_FLOW_ID">
  <img data-tiquo-service="image" alt="" />
  <h1 data-tiquo-service="name"></h1>
  <p data-tiquo-service="description"></p>
  <p data-tiquo-service="categoryDescription"></p>
  <span data-tiquo-service="priceLabel"></span>

  <div data-tiquo-service-booking></div>

  <p data-tiquo-empty>
    This service is unavailable.
  </p>
</section>
</>Interactive example

Service detail and booking

Inspect the detail wrapper, every available service field, the locked booking mount, and unavailable-service fallback.

Hover, tap, or focus an element to inspect its data attributes.
Atlas House

Wellness

Recovery Suite

Reset with a private sauna, cold plunge, and a calm recovery lounge.

£35.00

Every other service field available on the detail page

40 fields

Service ID

service_01JZ8A2K

Service ID alias

service_01JZ8A2K

Service slug

recovery-suite

Short description

Private recovery experience.

Service tags

Wellness, Recovery

Tags label

Wellness, Recovery

Featured image

Featured service image

Service image

First service image

Service image URLs

2 image URLs

Category image

Wellness category image

Category image URLs

2 category image URLs

First category name

Wellness

All category names

Wellness, Members

Category names label

Wellness, Members

First category description

Restore, reset, and recharge.

All category descriptions

Restore and recharge, Member favourites

Base price

35.00

Effective price

28.00

Currency

GBP

Price type

fixed

Service type

appointment

Raw duration

60

Duration type

minutes

Duration label

60 minutes

Capacity

4

Featured service

Yes

Payment type

online

Deposit required

Yes

Deposit amount

10.00

Deposit type

fixed

Minimum advance booking

2 hours

Maximum advance booking

90 days

Check-in time

15:00

Check-out time

11:00

Minimum stay

1 night

Maximum stay

14 nights

Category IDs

cat_wellness, cat_members

Category IDs label

cat_wellness, cat_members

Customer flow ID

flow_atlas_house

Locked booking URL

/embed/flow_atlas_house?service=...

Locked booking flow

Choose a time
09:3011:0014:30
Unavailable fallback
This service is currently unavailable.

The booking mount becomes an auto-resizing iframe locked to this service. A fixed service ID is optional when the URL already contains tiquoServiceId.

By default, the detail container reads the service ID from the tiquoServiceId query parameter written by the catalog link. To render a fixed service instead, set it directly:

<section
  data-tiquo-service-detail="CUSTOMER_FLOW_ID"
  data-tiquo-service-id="SERVICE_ID"
>
  <!-- Service fields and booking container -->
</section>

data-tiquo-service-booking becomes an automatically resizing customer-flow iframe. The requested service is preselected, category and service-catalog navigation are removed, and the customer cannot return to select another service. The remaining availability, quantity, payment, and booking steps continue normally.

If the service is missing or unavailable to the current visitor, Tiquo clears the service fields, hides the booking container, and shows data-tiquo-empty. It never falls back to the full flow catalog.

JavaScript API

Service catalogs and locked booking are also available programmatically:

<div id="service-booking"></div>

<script>
  window.Tiquo.ready(async function (tiquo) {
    const catalog = await tiquo.getFlowServices("CUSTOMER_FLOW_ID");
    const service = await tiquo.getFlowService(
      "CUSTOMER_FLOW_ID",
      catalog.services[0].id
    );

    if (service) {
      await tiquo.embedServiceBooking(
        "CUSTOMER_FLOW_ID",
        service.id,
        "#service-booking",
        { minHeight: "240px" }
      );
    }
  });
</script>

getFlowService() returns null when the requested service is not available to the current visitor. embedServiceBooking() uses the same secure authenticated iframe handoff and automatic resizing as embedCustomerFlow().

See Rendering and empty states for shared collection behaviour.

On this page