Your website takes bookings, sells and gets paid

The code

What you actually need to put Bink inside a website. No library to install, no key to generate: the objects are already public at their own address, and they embed.

  1. 1. The address you embed

    Bookings, forms, events, products and the storefront each get their own public address. You read it inside Bink, next to the object. Adding “?embed=true” renders the page without the parts that only make sense on Bink.

    URL
    https://bink4.me/tuonome/prenotazioni?embed=true

    The dedicated pages allow framing from any domain; the rest of the site does not.

  2. 2. Inside the page (iframe)

    The simplest way. The height is yours to pick: 700px suits a calendar or a medium-length form, a storefront wants more.

    html
    <iframe
      src="https://bink4.me/tuonome/prenotazioni?embed=true"
      width="100%" height="700" frameborder="0"
      style="border:none; border-radius:12px"
    ></iframe>
  3. 3. Floating button (embed.js)

    A script that adds a fixed button in a corner. On click it opens the object over the site, in a panel 480px wide and 90% of the screen height.

    html
    <script
      src="https://bink4.me/embed.js"
      data-url="https://bink4.me/tuonome/prenotazioni?embed=true"
      data-text="Prenota ora"
      data-color="#ea580c"
      data-position="bottom-right"
    ></script>

    Accepted attributes

    data-url
    required. The address to open. If “embed=true” is missing, the script adds it.
    data-text
    the button label. Without it the script follows the language your page declares in “html lang”, and Italian if it declares none.
    data-color
    the button background colour. Without it, a default orange.
    data-position
    “bottom-right” (default) or “bottom-left”.
    data-icon
    the glyph on the button: “calendar”, “form”, “ticket”, “bag”, “gift” or “none”. Without it, the calendar, which is what already-pasted snippets draw.
    data-width
    the width of the panel that opens, in pixels (between 320 and 1200). Without it, 480. A carousel booking and a storefront want more: below 760 the two columns never sit side by side.

    “data-position” works, but Bink does not offer it when you copy the code: add it by hand.

  4. 4. From a link you already have

    No script: any link or button on your page opens the object in a window. Useful when you already have the button you want.

    html
    <a
      href="https://bink4.me/tuonome/prenotazioni"
      onclick="window.open('https://bink4.me/tuonome/prenotazioni?embed=true','bink','width=480,height=750'); return false;"
    >Prenota ora</a>

How the panel closes

With the “×” at the top right, with the Esc key, or by clicking outside the panel.

⚠️ It does not close by itself when the visitor is done: after a booking it stays open on the thank-you message, and they close it.

What happens at payment

Checkout does not open inside the panel: it takes the whole window. That is not a technical limit but the right call: inside a frame you cannot read the address bar, which means you cannot see who is taking the money. Forms and free bookings, on the other hand, finish inside your own site.

Read routes

A few routes answer without authentication and can be called from your server. They read a single object whose identifier you already know.

GET/api/public/events/{blockId}evento: prezzo effettivo, posti, finestra di lancio
GET/api/public/services/{blockId}prenotazione pubblicata come servizio
GET/api/public/products/{blockId}prodotto: prezzo, tagli, campi al checkout
GET/api/public/shop/products?ids=più articoli per identificativo di blocco

⚠️ They cannot be called from the browser: they send no CORS headers, so a fetch from another domain is blocked. That is an open decision, not an oversight: opening those routes to the browser means taking on a public contract to keep.

And there is no “give me every product of this user” route: the one below takes block identifiers, not a username.

A creator's catalogue

For the full list of an account's products there is the feed, born for Google Merchant Center and advertising feeds, but it is a public address like any other. Two formats: XML and TSV.

feed
https://bink4.me/feed/tuonome.xml
https://bink4.me/feed/tuonome.tsv

⚠️ It is off by default and the creator switches it on in Shop → Products: while it is off that address answers 404. Today it is on for very few accounts.

Signing your users in with Bink

OAuth 2.0 with PKCE, plus a package that writes the flow for you and can also guard an MCP server.

Connecting an assistant

Bink exposes an MCP server: an assistant can read earnings, clients and appointments, and act on the account.

What is NOT there

  • Webhooks to your system
  • A public write API (writing goes through OAuth or MCP)
  • A plugin for WordPress or any other CMS

If something does not add up

Write to us: we will tell you whether it can be done, and if it can we will often look at it together.