beginner
bookings
widget
setup

Getting Started with Levy Bookings

Create your first booking widget, claim a hosted URL, and take a test booking end-to-end in under 15 minutes

Levy Fleets TeamMay 18, 20267 min read

Getting Started with Levy Bookings

This guide walks you through creating your first booking widget, picking a public slug, taking a test booking with the Stripe test card, and turning it live.

You can do this whether your goal is the hosted booking page, the embedded widget on your site, the iPad POS, or all three. All three surfaces share the same widget configuration row.

Before you start

You need:

  • A subaccount in Levy Fleets you can sign into as Owner, Admin, or Manager.
  • At least one vehicle model with a published pricing tier for that model. (Without a price the booking flow has nothing to quote.)
  • Optionally, a reservation location if your fleet uses pickup-location-specific inventory caps. The widget defaults to your subaccount's primary location if you do not pick one.

If you do not yet have a vehicle model or a pricing tier, set those up first under Dashboard > Vehicles > Models and Dashboard > Pricing.

Step 1: Create the widget

  1. Open Dashboard > Bookings. You will see the booking hub with cards for Widgets, Promo Codes, Tours, B2B Accounts, and POS.
  2. Click Widgets.
  3. Click New widget.
  4. Fill in:
    • Display name — what you see in the dashboard, e.g. "Main shop booking."
    • Slug — the URL fragment for your public booking page. Lowercase letters, numbers, and dashes. Example: front-beach-bikes. The hosted URL will be fleets.levyelectric.com/book/front-beach-bikes.
    • Default pickup location (optional) — pre-selects this location on the booking page.
    • Default pricing tier (optional) — used if a model does not have its own tier override.
    • Default agreement template — the waiver that customers will sign inline.
  5. Save. The widget starts in disabled state — your page returns a "not yet open for bookings" message until you enable it.

Pick a slug you can say out loud

Your slug shows up in QR codes, social bios, and Google Business Profile links. Short and memorable wins. franks-bikes is better than franks-rental-co-east-shop-1.

Step 2: Add allowed origins (only if you will embed)

If you plan to drop the <script> widget on your own site, list the exact origins you will embed from:

https://www.frankebikes.com
https://frankebikes.com
https://frankebikes.squarespace.com

Origins are matched exactly (scheme + host + port). If you do not list an origin, POST requests from that origin are rejected. You can skip this entirely if you only want the hosted page.

Step 3: Configure CAPTCHA, Apple Pay, and deposit defaults

In the widget edit page:

  • Require CAPTCHA — on by default, recommended for any public-facing widget. Uses Cloudflare Turnstile.
  • Apple Pay / Google Pay — on by default; uses the per-subaccount Stripe connected account.
  • Refundable deposit (cents) — leave 0 unless your shop holds a damage deposit. If set, every booking includes a Stripe pre-authorization that is released after a clean return.
  • Min advance hours / max advance days — how far in advance bookings must be made. 0 hours / 365 days is fine for most shops; raise the minimum if you need prep time.

Save.

Step 4: Enable and visit the hosted page

Toggle Enabled = true on the widget detail page, then click View hosted page, or open the URL directly:

https://fleets.levyelectric.com/book/{slug}

You should see your booking flow: model picker, time picker, add-ons, waiver, payment.

Step 5: Take a test booking

In a private/incognito window so you are not logged in as the operator:

  1. Pick a model.

  2. Pick a pickup time and a duration chip.

  3. Add a helmet add-on if your subaccount has one configured.

  4. Enter test customer info (use your own email so the confirmation arrives).

  5. Sign the waiver inline (mouse drag or trackpad).

  6. At payment, use the Stripe test card:

    • Card number: 4242 4242 4242 4242
    • Expiration: any future date
    • CVC: any 3 digits
    • ZIP: any 5 digits
  7. Submit. You should be redirected to the confirmation page with a QR pickup code and an ICS download.

Open your email — the confirmation should arrive within seconds with the ICS calendar attachment and a link back to the confirmation page.

Step 6: Check the booking in the dashboard

Open Dashboard > Reservations. The booking you just made shows up as a confirmed reservation with:

  • booking_source = widget
  • widget_id set to the row you created
  • referrer_url set to the page the booking came from

This is the same record shape as every other reservation in the system — you can assign a vehicle, charge a late fee, refund, or extend it from the same dashboard you use today.

Step 7: Refund the test booking

Open the test reservation and click Refund > Full refund. The Stripe test charge reverses immediately, and the reservation moves to cancelled.

Always refund through the reservation, not directly through the wallet — this keeps net_deposited, tax remittance, and partner payouts correct. See Promo Codes and Deposits for the full refund rules.

You're live

Once your first real booking comes through:

  1. Drop the public URL into your Google Business Profile (Book button) and your Linktree.
  2. Or move on to Embedding the Widget to add the <script> snippet to your own site.
  3. Or move on to iPad POS Setup if you want the counter device.