Embed

Keep your site. Change what happens when someone clicks Book.

Inkdesk's booking widget lets a shop take real online appointments on its existing website — as a script embed, an iframe, or a link to the hosted booking page. WordPress, Wix, Squarespace, and custom HTML sites all use the same install pattern, and developers can go further with the public API and webhooks. Under the hood it's the same multi-tenant Inkdesk shop: deposits through Stripe Connect, staff running the cabinet with Google login, for $50 per shop per month.

Most shop websites have a Book button that goes nowhere useful

Walk through a dozen tattoo shop websites and the 'Book Now' link usually opens Instagram, a Google Form nobody's checked in weeks, or a mailto link. The site looks fine; the booking path behind the button is where everything actually falls apart.

A widget doesn't mean rebuilding the site. It means the button that's already there finally opens something that shows real availability, takes a real deposit, and lands the booking in a system your staff already checks — instead of routing back into the same DM funnel the website was supposed to fix.

The gap is especially visible on mobile, where most tattoo shop traffic actually arrives. A client scrolling Instagram taps through to a shop's bio link, lands on a slow-loading site, and hunts for a way to book on a small screen with patience measured in seconds, not minutes. If that path ends in an email address to copy or a form with no confirmation, most of that traffic simply leaves and either DMs the shop directly — back to square one — or picks a different shop whose site made booking obvious in one tap.

Three ways to install it, same booking engine underneath

Script tag: mount the widget with your key and shop config, styled to sit inside your existing page. Iframe: use it when you want a hard boundary from your site's theme CSS instead of fighting for style conflicts. Hosted page: send traffic straight to your shop's own booking URL on inkdesk.online when you don't need an embed at all.

Install surfaces
  • 1
    Plugin / blockWordPress · Download plugin → Generate connect code
  • 2
    App or snippetShopify/Wix Add to… · or Create snippet for Code/Embed
  • 3
    Hosted book pageNo website · Create hosted link + QR → /{salon}/book
Three install surfaces — WordPress plugin, app/snippet, or hosted book link + QR.

Pick based on your actual site, not because one option sounds more advanced — all three run against the same availability, deposit, and appointment engine underneath.

Place the embed where intent is actually highest, not buried below three screenfuls of gallery photos. If the book button lives at the bottom of a long scroll, you'll keep getting DMs instead of bookings, no matter how good the widget is.

Restrict allowed origins so a copied snippet on some random site can't impersonate your shop's booking flow. Multi-tenant isolation already keeps shop data separate — domain allowlisting protects your actual brand from a bad copy-paste somewhere else.

It works with the site builders shops actually use

Non-technical owners can follow platform-specific install docs through a guided connect flow, without ever pasting a raw API secret into a theme file. Agencies wanting full control over the UI can use the public API directly while still letting deposits, waitlist, and reminders run through Inkdesk underneath.

Settings · Website & embed
ConnectSitesWebhooksDevelopers

Step 1 · Where should clients book?

WordPressShopifyWixSquarespaceWebflowCustom siteNo website

One platform at a time. Progress: Choose → Configure → Go live.

Cabinet → Settings → Website & embed → Connect — Choose a platform (WordPress, Shopify, Wix, Squarespace, Webflow, Custom site, or No website).

Allowed origins and widget domain settings keep random sites from embedding your booking button — worth caring about if your brand shows up on comparison sites or someone else's marketing page without permission.

When there's genuinely nothing open, the widget should still capture demand through the waitlist instead of hitting a dead end — that's how a cancellation later turns into a `waitlist.filled` event instead of a lost Instagram DM nobody follows up on.

A shop working with a web designer or agency doesn't need to hand over Inkdesk credentials to get the widget installed correctly — the connect flow is built so a designer can follow platform-specific steps and drop in the right snippet without ever touching the shop's actual Stripe or booking settings, keeping day-to-day account access limited to the people who should actually have it.

What a client actually experiences inside the widget

Artist and slot selection off live availability, an estimate or deposit preview when configured, and checkout for a flat or percent deposit through Stripe Connect — card minimums typically around $20 or more. Complex work can route to review before any payment happens at all.

yourshop.com/book
Book a session
Booking widget as clients see it on a shop website.

After booking, the cancel and reschedule window — commonly 48 hours, configurable — plus reminders and consent or check-in flows all continue inside Inkdesk, not on whatever CMS is running the marketing site around it.

For developers wiring something more custom

OpenAPI-described endpoints cover catalog, availability, bookings, deposit intents, and portfolio for teams building a fully bespoke front end instead of the pre-built widget. Outbound webhooks include booking and waitlist events, including `waitlist.filled` when a refill happens.

Website & embed · Developers
Publishablepk_live_••••a91f
Secretsk_live_•••• · server only
Allowed originsRotate key
Website & embed → Developers — publishable/secret keys and allowed origins.

SDKs and CMS-specific plugins are convenience layers on top of the same universal script, iframe, and hosted surfaces — useful, but never required to go live.

Going live without touching your existing design

Most tattoo sites already have a Book link that quietly dies into DMs. Replace that link with the hosted book page, or drop a script or iframe embed above the fold, while keeping your existing portfolio photos and marketing copy exactly where they are. Let Inkdesk own slots, deposits, and the path into the day board.

Website & embed · Sites
  • yourshop.com · WordPress · ● live
  • · staging.yourshop.com · snippet · pending
View install codeLast seen just now

Go live waits for the widget beacon — then Verified — widget is live.

Website & embed → Sites — ● live after Go live detects the widget beacon.

On Wix and similar builders, an embed block or HTML section is usually enough. On WordPress, follow the install docs so you're never pasting secrets into a random theme file by hand. Custom stacks can call the API directly and still present a fully branded UI on top.

After install, walk through a booking and a deposit yourself and confirm both show up correctly in the cabinet before you send real clients to the link — then double-check the cancel-window copy matches the policy you actually enforce.

Give the new booking path a real trial period before declaring victory — a week or two where staff actively watch for anything that feels off, like a client showing up confused about the deposit amount or a booking landing with missing contact info. Small mismatches between what the widget shows and what your policy actually says are much easier to catch and fix in week one than after a month of bookings have already gone through under a slightly wrong assumption.

FAQ

Do we have to use an iframe specifically?

No. Choose a script mount, an iframe, or a link to the hosted book page — whichever fits your existing site best.

Can we keep the website we already have?

Yes. Inkdesk is the booking engine behind your existing site, not a requirement to rebuild it from scratch.

Is there a dedicated WordPress plugin path?

WordPress and other high-traffic platforms get install docs on top of the same universal embed — start from the install docs for your platform.

Will the widget reflect our actual real-time availability?

Yes. Slots come from the same availability rules the cabinet uses for your shop — there's no separate, stale copy of your calendar.

Can the widget actually collect a deposit, or just take a request?

It can collect a real deposit — flat or percent — through Stripe Connect, using your shop's own rules, at the time of booking.

What happens in the widget if nothing's available?

Clients can join the waitlist right there instead of hitting a dead end, then convert automatically when a cancellation or no-show frees a slot.

Inkdesk is $50 per shop per month — one shop subscription, not a pile of add-ons. Start a free trial or open the live demo with sample data. No credit card required to look around.

Start free trial — connect your siteTry the live demo