Integrations
The link to the POS in your venue, the booking widget on your own site, and the API for anyone building their own integration.
What the POS link does and does not do
#HaiLa connects to the till system in your venue so that reservations live in one place. Today there is a link to Poster and a link built for Syrve. No other system exists.
| What happens | Which way it travels |
|---|---|
| A reservation you accepted in HaiLa | Reaches the terminal in your venue |
| A reservation made on the terminal | Appears in HaiLa, as a venue reservation |
| The floor plan, tables and seats | Come from the POS into HaiLa, once a day |
| A reservation cancelled on the terminal | Is cancelled in HaiLa too |
| A reservation cancelled in HaiLa | Does not reach the terminal. You close it by hand |
The terminal only gets a reservation once you accept it
A pending request is not visible at the till. It crosses over the moment you confirm it. That is deliberate: a mirrored reservation holds a table in the POS, and a request you have not answered yet has no business holding one. So do not wait for requests on the terminal; they are read in the HaiLa app.
Cancellations from HaiLa never reach the terminal
Poster offers us no way to cancel a reservation on its side. When a reservation is cancelled in HaiLa, HaiLa shows it cancelled and the terminal keeps it. Someone on your team has to close it there too, or the table sits held for the rest of the night for nothing.
Reservations that arrive from the terminal are billed at the API rate, 0.50 EUR plus VAT. They are not counted as reservations your team entered.
The guest sees none of this. A reservation looks the same to them whether or not your venue has a POS connected.
Connect Poster to HaiLa
#With Poster connected, your team stops keeping two reservation lists and stops copying anything by hand from one screen to another.
The link is not set up from the dashboard. There is no POS section and no connect button: we make the connection. Write to hello@haila.md, tell us you run Poster, and we will ask for the access we need and switch it on.
Not from the Lite app either. Write to hello@haila.md and we set it up on our side.
Not from the Pro app either. Write to hello@haila.md and we set it up. Switching it off works the same way.
Nothing changes for the guest: they book exactly as before. What changes is what your team sees, because reservations start appearing in both systems.
- While the link is on, the floor plan comes from Poster. Tables you built in HaiLa before the link are taken out of service at the first sync, so the same seats are not counted twice. They are not deleted, but they do not come back on their own either: if the link is ever switched off, ask us to put the tables back into service, or they simply stay aside.
- Reservations sync every minute during service and less often overnight. The floor plan is pulled once a day, at half past four in the morning.
- Nowhere in the apps can you see whether the link is on or off. No screen shows it. If you are not sure, ask us.
- Switching the link off is also asked of us. There is no disconnect button anywhere.
Poster halls become floors in HaiLa
#There is nothing to match up between the two systems. No mapping screen, no list of pairs, no confirmation step: HaiLa reads the halls and tables out of Poster and makes them its own.
- A hall in Poster
- Becomes a floor in HaiLa, under the same name. Every hall gets its own floor, because table coordinates are counted inside the hall.
- A table in Poster
- Becomes a table in HaiLa, with the same number, the same capacity, the same shape and roughly the same spot on the plan.
- The table zone
- Is guessed from the hall name. A hall whose name reads like a terrace comes in as terrace; everything else comes in as indoor.
- A table deleted in Poster
- Goes out of service in HaiLa too, at the next floor plan pull.
Names change in Poster, not in HaiLa
If you want a different floor name or a different table number, change it in Poster. It arrives here at the next sync, the following morning. Changed in HaiLa, it risks reverting to whatever Poster says.
Tables you made in HaiLa are taken out of service
While the link is on, the POS owns the plan. Any active table that did not come from it is deactivated, so the same seats are not counted twice when availability is worked out. Nothing is deleted, the table is only taken out of service. Nor does it return by itself: switching the link off reactivates nothing, so ask for the tables back at the same time.
None of this reaches the guest. They see free times, not tables, not floors, and not where either came from.
Syrve, and why there is no third system
#The Syrve link is written and ready to switch on, but it has not yet run at any venue. Whoever turns it on first does so as a pilot, with us alongside, because the first real connection is also the first real test.
It follows the same pattern as Poster: your confirmed reservations go out to the system, reservations made there come into HaiLa, and the floor plan travels from there to here.
There is nothing else
HaiLa connects to Poster and to Syrve. There is no third system, no general connector, and no form through which one could be requested. If you run a different POS and need a link, write to hello@haila.md: it is a conversation, not an order you place from a screen.
As with Poster, we switch it on and off. Syrve does not connect from the dashboard or from the apps either.
When the POS and HaiLa disagree
#Most disagreements have the same explanation: something only travels one way. Check them in the order below, because the first is by far the most common.
| What you see | Why |
|---|---|
| The terminal holds the table, HaiLa shows the reservation cancelled | Cancellations from HaiLa never reach the POS. Close the reservation on the terminal too. |
| A request shows in HaiLa but not at the till | Pending requests are not mirrored. It crosses to the terminal once you accept it. |
| A table you moved or renamed in HaiLa is back as it was | The plan comes from the POS every morning and writes over it. Change it in the POS. |
| A table you created yourself has dropped out of the arithmetic | The link takes tables that did not come from the POS out of service, so seats are not counted twice. |
| The invoice shows more API reservations than you had through the widget | Reservations that arrived from the terminal are billed at the API rate too. |
Reservations are not lost, only late
Reservations made on the terminal are pulled every minute during service and less often overnight. If one made thirty seconds ago is not in HaiLa yet, wait a minute before entering it by hand, or you end up holding it twice.
If the mismatch looks like none of the above, write to hello@haila.md with the venue, the date and the table number. We hold the link, so we are the ones who look into it.
Put the booking widget on your website
#The widget lets someone book without leaving your site, and a reservation that arrives that way costs half of one that comes through HaiLa.
- Open Settings and choose Widget.
- Stay on the Embed Code tab. The panel is in English.
- Pick the key under Select API Key. If you have none, write to hello@haila.md and we issue one.
- If the amber box asking for the key password appears, paste the password we gave you. Without it the code comes out with a placeholder where the password belongs.
- Before you copy, read the venue id out of the code and make sure it belongs to the right venue. The panel does not look at the venue you have open.
- Click Copy Code and paste it into your site, wherever you want the form to appear.
- Check the result on the Preview tab, with Open Widget Only or Open Mock Restaurant Site.
The phone apps carry no widget. The code is taken from the dashboard, on the web, under Settings, Widget.
The Pro app carries no widget either. Open the dashboard on the web, under Settings, Widget.
A guest booking through the widget picks the date, the time and the party size, leaves a name and phone, and gets a screen telling them the reservation is registered and waiting for the restaurant to confirm, along with a reservation code. It does not confirm itself: it reaches you as an ordinary pending request, and you accept it.
- A blackout does not take times out of the widget. They stay on show, the guest picks one, and only on submit do they get an error, and a generic one that explains nothing to them. Tick Widget on the blackout so the refusal at least happens, but do not expect the time to disappear from the list.
- The code carries the key credentials, password included, because the widget authenticates from the browser of the visitor. Use the code generated for your venue, and if you need a different key, ask us for one.
- The Widget panel looks at the first venue attached to your account, not at the venue you have open. With several venues the code can come out carrying another venue id and another key, and reservations from one venue website land at the other. Check the id every time, even if you have copied the code ten times before.
- The key password is stored hashed, so the dashboard cannot show it to you. It is the one we handed over when the key was issued. If you have lost it, write to us and we issue another.
- The widget speaks Romanian and Russian only. It has no English.
- A widget reservation costs 0.50 EUR plus VAT, half of one that comes through HaiLa.
- The Analytics tab counts the views and reservations of the widget itself. That is its tally, not your invoice; the invoice is read under Billing.
Match the widget to your site
#The widget sits inside your page, so it is worth matching it as far as it can be matched: the language it speaks and the background, light or dark.
- Open Settings, choose Widget and move to the Settings tab.
- Pick Language, Romanian or Russian.
- Pick Theme, Light or Dark, to suit your page background.
- Click Save Settings.
- Go back to Embed Code, click Copy Code, and replace the old code on your site with the new one.
The widget settings live only in the dashboard, under Settings, Widget. The apps do not reach them.
Not from the Pro app either. Open the dashboard on the web, under Settings, Widget.
The guest sees the widget in the language and on the background you chose, but only once you have replaced the code on your site. The colour stays HaiLa orange whatever you pick. The reservation steps themselves stay the same.
- That last step is not optional. The language and the theme are written into the code you copy, not fetched by the widget each time it loads. While the old code sits on your site, the widget looks as it did, however often you save under Settings.
- Primary Color does not work at all. You can pick any colour, it saves and it goes into the code, but the widget never reads it: the buttons stay orange for the guest. Do not spend time matching the colour to your site, and if you need a different one, write to us. Language and theme work; colour does not.
- The two tickboxes at the bottom, Show restaurant information and Allow special requests, save but go nowhere. The widget does not read them. Special requests appear in the form either way.
- The widget brings its own font rather than taking one from your page, so it has no font setting. If it clashes with your site, write to us.
Use the reservations API
#If you run your own site or your own app and want the reservations inside it, the API gives out free times and takes a reservation, with no widget involved.
- Open Settings and choose API.
- Under Credentials you find the venue ID and the Client ID. Keys are issued by us: if you have none, write to hello@haila.md.
- Authentication is HTTP Basic: the Client ID as the username, the Client Secret as the password.
- Under Endpoints sit the four addresses, each with its fields and a ready-made example. Paste your secret into the box above first, so the examples come out filled in.
- Read the error list too: error responses come back as plain text, not JSON.
The reference and the credentials live only in the dashboard, under Settings, API. The apps do not reach them.
Not from the Pro app either. Open the dashboard on the web, under Settings, API.
A reservation created through the API reaches you as an ordinary pending request, exactly like one from the widget or from the HaiLa app. The guest never learns which road it took.
- Keys are issued by us only. There is no button that makes you one, and none that replaces one.
- The secret you paste into the page is saved nowhere. It fills the examples for as long as you stay on the screen, and is asked for again after a reload.
- One key opens one venue. Two venues need two keys.
- At most 200 reservations an hour for one venue. Past that you get a 429.
- An API reservation costs 0.50 EUR plus VAT, the same as a widget one.
- The times the API gives out respect the minimum notice you need, but not blackouts. A time inside a blacked-out window is offered as free and the reservation is refused on submit. When you close a day, remember that through the API it looks open right up to the last step.