Switching integrations on and off
Updated on 2026-10-02
Instellingen → Koppelingen (settings → integrations). Only the owner gets in here: this is where the keys sit with which payments can be started.
What you see
The integrations are grouped by kind:
| Group | Description |
|---|---|
| Betalen (payments) | Betaalterminals en online betalingen. (card terminals and online payments) |
| Boekhouding (accounting) | Facturen en bonnen naar het boekhoudpakket. (invoices and receipts to the accounting package) |
| Communicatie (communication) | Berichten naar klanten en medewerkers. (messages to clients and staff) |
| Assistent (assistant) | Zeggen wat u wil in plaats van het formulier zoeken. (saying what you want instead of hunting for the form) |
Per integration you see the name, a badge, a description, possibly the outcome of the last test, and the buttons on the right.
| Badge | Meaning |
|---|---|
| Uit (off) | is switched off |
| Actief (active) | is switched on and fully filled in |
| Aan, maar onvolledig (on, but incomplete) | is switched on but details are missing |
| Nog niet beschikbaar (not available yet) | you cannot use this integration yet; instead of the description you read the reason |
Collapsing and expanding groups
Click a group heading to fold it open or shut. That is not there for today's ten integrations but for tomorrow's thirty: a list of thirty rows is no longer readable.
The heading stays readable even while the group is shut:
| What the heading shows | Meaning |
|---|---|
| 3 aan (3 on) | that many integrations in this group are on and fully filled in |
| 1 onvolledig (1 incomplete) | that many are on but missing details |
| 1 met fout (1 with an error) | for that many, the last test failed |
| 4 koppelingen, waarvan 2 nog niet beschikbaar (4 integrations, 2 of them not available yet) | how many the group holds in total |
A group that hid something broken would be worse than no collapsing at all. That is why, on a first visit, a group is open as soon as it holds something that is on, incomplete, or has a failed test — and shut when nothing in it is alive.
Fold a group yourself and your browser remembers that for this salon. It is a viewing preference of this device: the front-desk iPad may sit differently from your laptop, and your colleagues notice nothing.
Setting it up
Click Instellen (set up). A window {naam} instellen opens with the fields of that integration and a Bewaren (save) button. Afterwards you read {naam} is bewaard ({name} has been saved).
Fields this window does not show stay as they are. Saving therefore never throws away anything you cannot see here.
Testing the connection
Click Verbinding testen (test connection). The test says in plain language what went wrong:
- {naam} antwoordt ({name} answers) — with the outcome underneath;
- {naam} antwoordt niet ({name} does not answer) — with the reason.
If an integration has no test, you read Deze koppeling kent geen proef (this integration has no test).
For Mail via HairConnect the button is called Controleer DNS (check DNS). There is no connection to test there: the test reads your domain's DNS. The notification then reads Het DNS staat goed (the DNS is right) or Het DNS staat nog niet goed (the DNS is not right yet). See Mail via HairConnect.
The outcome then stays under the integration: Verbinding getest op 22 augustus 2026, 14:05. (connection tested on 22 August 2026, 14:05) or Laatste proef mislukte: … (last test failed: …)
An integration that is not available yet
Nog niet beschikbaar (not available yet) comes without a toggle. If that integration does have fields, you can still Instellen (set it up) and Verbinding testen (test the connection).
That is deliberate. Such an integration only loses its badge once somebody with a real account has proven that it answers, and the test button is how you get that proof. Switching it on stays impossible in the meantime — accidentally included.
Switching on
The toggle on the right. If the integration has not been filled in yet, nothing happens and you read:
{naam} is nog niet ingesteld — Vul eerst de gegevens in; daarna kan je de koppeling aanzetten. ({name} has not been set up yet — fill in the details first; after that you can switch the integration on.)
Otherwise you read {naam} staat aan or {naam} staat uit ({name} is on / {name} is off).
An integration that is "on" but does nothing is exactly the kind of half state nobody ever finds out about.
New salons inherit nothing
Every integration is off by default, and the details you fill in belong to your salon alone. They are stored encrypted.
What goes into the audit log
Koppeling aangezet, Koppeling uitgezet and Koppeling ingesteld (integration switched on, switched off, set up) — with only the names of the fields you filled in, never their contents. There are API keys here; those belong in no second table at all, not even in one only you can open.
The integrations at a glance
| Integration | Group | State |
|---|---|---|
| Mollie | Betalen | usable |
| Stripe | Betalen | not available yet — filling in and testing the keys already works |
| Bancontact Pro | Betalen | not available yet — QR payment built, the till does not use it yet |
| Europabank Tap to Pay | Betalen | not available yet |
| Mailserver | Communicatie | usable |
| Mail via HairConnect | Communicatie | usable — can be switched on once your domain's DNS is right |
| ClearFacts | Boekhouding | usable |
| Yuki | Boekhouding | not available yet — built, not yet measured |
| Billit | Boekhouding | not available yet — built, not yet measured |
| Exact Online | Boekhouding | not available yet — not built |
| Scrada | Boekhouding | not available yet — not built |
| Assistent | Assistent | usable — see The assistant |
The four accounting packages at the bottom are explained in Other accounting packages.
How your order leaves
The Wella integration asks Hoe bestel je bij deze leverancier? (how do you order from this supplier?), with three answers:
| Choice | What happens |
|---|---|
| Mail naar de leverancier (mail to the supplier — the default) | The order leaves as a mail to the address on the supplier record, article numbers included. |
| Winkelmand bij Wella (basket at Wella) | A tab opens on your Wella shop and your basket fills itself. Needs the Chrome extension. |
| Csv voor de order upload (csv for the order upload) | You download a file and upload it yourself at Mijn account → Order upload in the shop. |
Mail is the default, even if you never ticked anything here. It is the only route that works with every supplier and asks nothing of your browser.
This choice decides which button comes first on an open order, and nothing more. The other two keep existing, next to it or under Andere manieren (other ways), the three-dot button on that same row. That is deliberate: if the basket stalls because Wella changed its own screen, you take the csv, without having to come back here and switch something first. At a supplier you did not mark as Wella, the basket and the csv do not exist and mail simply stays first.
What the mail contains, and what happens to a line without an article number: see Booking in deliveries.
The Wella price list
Settings → Wella price list. Wella e-mails its customers two kinds of Excel file, and you may upload either: the order form ("BENELUX WELLA COMPANY EAN ORDER FORM - 10.08.2026.xlsm") and the price list ("Pricelist for Field - PI April 2026.xlsx"). You do not have to say which of the two you have — that is in the file itself and is read there. Both carry the full catalogue: for each article the gross price, the recommended retail price and the barcode. The order form carries two — the one on the piece and the one on the box — and it also states which article replaces which; the price list carries one and has no such overview. Upload the file exactly as you received it; nothing is pulled from your mailbox. What gets checked are the products of every supplier record you pointed out as Wella — if you ticked more than one, they all come along in the same run. Purchase prices carried over from Optios are corrected straight away — those are outdated, and a dated price from the supplier itself beats a wrong one. Afterwards you see the list of what changed, and every change is in the audit log as well. A purchase price you entered yourself, or one that came from a real delivery, is left alone. A product that follows the recommended price takes the price from the list by itself — that is the Volgt de adviesprijs van de leverancier (follows the supplier's recommended price) toggle on the product record, and it is on by default. If your sale price is lower than the recommended price, it moves to that price straight away; if it is higher, your higher price stays. So the price never goes down, and an article for which the list names no recommended price does not change. After the upload you see which prices were raised, and every change is in the audit log with the list and the article number. If you uploaded more than one list, the most recently uploaded list that names a recommended price for that article counts. If a product carries the barcode of an old and of a new packaging, and the list has them as two articles, the article of the current code decides; if that one names no recommended price, the other one does. The purchase price then follows the article of the current code as well, within the same limit as above: a price you entered yourself or one from a delivery is left alone. Backbar without a sale price stays at zero: it is not sold. Receipts that are already closed keep their amount. Want to charge less for a product on purpose? Switch the toggle off: no price list will touch that price again. Sale-price proposals from earlier price lists have been closed: Aanvaard (accepted) where the price now matches the list, Vervallen (expired) where they were duplicates or outdated, with the reason.
The price list carries prices for more than one country. Wella puts the Netherlands and Belgium side by side in the same table, under exactly the same column headings. The prices of your country are always the ones taken, and that is the country set in Settings → The salon. If nothing is filled in there, or the file carries no prices for your country, nothing is read and nothing is changed — you are told what to fill in. Taking the neighbouring country's prices would falsify your purchase prices without your noticing, so that does not happen here. An article for which Wella notes no price in your country still comes through: with its article number and its barcode, and without a price. That number is what you need in order to place an order; an amount from another country would be an invented amount.
The linking run on the product list stops after forty lookups. Every lookup is one question to the webshop, and a run over two hundred products kept going for half an hour here without returning anything. The message says how many are still waiting; simply press again and the next run carries on where the last one stopped. This file is the fast lane: it lays down the article numbers in one go, without a single question to the shop.
This run also assigns article numbers. A product found in the file through its barcode gets the article number of that article. That number is what ends up in the csv and in your basket: without it a product cannot be ordered, however well everything else is filled in. If another number was already there, it is replaced — one of the two is then wrong, and it is not the code you scanned off the bottle. You get the full list of which numbers changed, old and new side by side, and every change is in the log as well.
Linking happens on the barcode, and on nothing else. Until 15-09-2026 the article number on your record counted too, and it even went before the code. That has been undone, and there is a reason: that number is not always there because you put it there. At an earlier upload the search also went by name, and your Shampoo Cool Blonde 250ml came out that way at Wella's Cool Blonde Shampoo 500. That article writes its size as a bare number — 500, without a unit — so it did not contradict the 250 ml on your record; in the April 2026 price list Wella writes the size of 277 of its 1,376 articles that way. The number of that half-litre ended up on your record, and the run after it took the name, the size and the purchase price of a half-litre from there. Carrying on linking on such a number turns a one-off mistake into a permanent one. A barcode was scanned off the bottle standing on your shelf; it is the only piece of data in this run that cannot have been written by the software itself.
An article number that no barcode confirms stays where it is but no longer links anything. You can still order with it — that is what it is for — but no name, size, brand or price comes out of it any more. Such a record goes on the clean-up list with the number and with what you can do about it: scan that bottle once, and at the next upload everything is settled.
What an earlier upload already took from such a number, you can put back. If a record still literally carries the name or the purchase price of the article behind a number nobody confirms, a proposal appears for it, with what was there before — that comes from the log and not from a guess. Nothing is put back on its own; you tick the box. If you choose Leave as is, the record stays as it is and the proposal does not come back. If the log does not say what was there before, you read that too: nothing is proposed then, because making up a name is worse than leaving a wrong one. The size falls outside this: it is not kept anywhere, so there is nothing to put back — if you restore the name, the size is usually in that name again.
A barcode of twelve digits and the same code with a zero in front are the same article. Wella carries brands with an American code (UPC): in the April 2026 list there are 55 of them, all Briogeo. A scanner here reads such a code as thirteen digits with a leading zero, and Optios stored them that way. The two are now treated as one — previously the linking found none of them, and an outdated price stayed on an article that was plainly in the list.
You may upload both files, and together they cover more. The order form carries two codes per article — the one on the piece and the one on the box — and the price list carries one. A barcode from whichever uploaded file may bring a product to an article number; that number is then looked up in the file you have just uploaded. The price always comes from the newest file, never from the old one.
What is linked takes its name and size from the price list. Your product list then reads the way Wella names its articles rather than the way they came out of Optios: Color Touch 5/0 instead of CT 5/0 41/50 60ML. This happens only for records that came over from Optios — a product you created yourself keeps the name you gave it. Your old receipts keep their own text: that sits on the receipt itself. An old delivery does show the new name, because it points at the product and not at a text. Every rename is in the log, and the screen shows you the full list.
The brand comes from the price list. On the Wella Company order form every item sits on the sheet of its brand: Wella Color, Wella Care, Sebastian, SEB MAN, System, SP, Sassoon, Nioxin and Briogeo. A product linked to an item by its barcode goes under that brand, whatever it was called in Optios. SP and System are both System Professional and go under one brand: System. If you do not have the brand yet, the upload creates it, with the Wella supplier the product already belonged to; the top of the screen tells you which brands are new. The Pricelist for Field creates no brands: it splits the catalogue into thirty ranges — KOLESTON PERFECT, COLOR TOUCH, SEBASTIAN (OLD) — and those are not brands. There the range is translated into the brand of the order form — KOLESTON PERFECT and COLOR FRESH MASK are Wella Color, SEBASTIAN (OLD) is Sebastian — and a product only goes under a brand you already have. That translation comes from the items that appear on both files; a range that falls under more than one brand (WP ACCESSORIES) says nothing. A product without a supplier of its own is never moved to a brand that does not belong to your Wella supplier: that would silently push it out of your Wella round and your order suggestions. A product record you created yourself keeps the brand you chose.
What does not find its place gets its reason on the record itself. Two outcomes are a status of the product and, since 30-09-2026, sit on the product record, not on the clean-up list: no barcode (there is nothing to look up — that is the number you make smaller yourself: scan that bottle once, and at the next upload it comes along on its own) and not on the price list (the search did happen — with which code is stated — and it is not there). You see them in the product list under the Prijslijst column, beneath Staat er niet op, and you filter on them with Wat wil je zien → Staat niet op de Wella-prijslijst or Zonder streepjescode voor Wella; see Products. Two other outcomes are work or a question and remain findings on the clean-up list: article number without a barcode confirming it (there is a number, but nothing confirms it) and this brand is not in it (a Denman brush does not belong in a Wella price list, so there is nothing to be done). Findings sit on their own tab and do not count towards the badge of outstanding work. A remark from an earlier upload disappears as soon as that product does find its place, and an old product is not in it or no barcode row closes as soon as the status is on the record — with that reason in the row.
And it fills in the supplier. If you pointed out exactly one supplier record as Wella, it is written onto every matched product that did not carry one yet. Those products were already in scope through their brand, but as long as the field on the product stays empty, every order and every order proposal has to derive the supplier from the brand again — and whoever moves the brand moves the order along with it without noticing. If you pointed out more than one record as Wella, your deliveries decide: a product that came in at exactly one of those records belongs to that record. Only what was actually delivered counts; a cancelled order says at most what someone intended. If a product came in at more than one record — which happens, because the same rep often delivers under several records — or at none at all, the field stays empty. A single line at the top of the screen then says how many products that is and which records you pointed out; no row per product appears in the clean-up suggestions. A supplier that is already there is never overwritten.
If an article number appears twice in the file, you read about it under What was not read. Wella does sometimes list the same article under two headings, and then only the first row counts. Usually that is harmless — same name, same price, only a different heading — and the line says that the row that was kept also decides where the article gets filed. Sometimes it is not harmless: in the April 2026 price list nine numbers appear more than once, and three of them carry two different products. 99350172880 is both a Nioxin treatment at € 17.00 and a Sebastian conditioner at € 54.50. Collisions like that sit at the top of that list, with both row numbers, both descriptions and both prices, because that single number is what you match and order on. If you run into one, pass it on to your rep: we do not choose for you which of the two you mean.
Promotion codes at Wella
Settings → Integrations → Wella. Some Wella promotions apply by themselves — the invoice discount, for instance — while others only start once you type a code into the Add promotion code box of your basket. You enter those codes here once, and from then on it happens by itself.
Click Add code and fill in what your representative passed on: the code exactly as you received it, optionally what it is for (for yourself, so that in six months you still know which code this was) and optionally valid until. More than one code is fine: one for the autumn promotion on retail, one for colour. The description and the date may stay empty.
"Valid until" is a reminder only. A code is never held back because that date has passed. Whether a code still applies is Wella's word — you read it in their answer, not in a date we would have filled in.
What happens when you order. When you put your order into your Wella basket, the items go in first and your codes are applied afterwards. The small window at the bottom right of the webshop says, code by code, what Wella did with it: applied to your basket, or not accepted with the reason, in Wella's own words. A refused code does not quietly disappear — an expired code is information, and without that line you would only notice at the invoice.
And your promotions come back with it. In the same run HairConnect reads which promotions Wella has on your name and what applies to this basket or is still within reach. All of that is stored in HairConnect with your supplier; the window only says how many were read. Whatever we cannot read with certainty from Wella's answer — a threshold, an amount — stays empty rather than guessed: a threshold we made up would promise you a tier that never arrives. A promotion you typed in yourself is never overwritten, and a promotion that did not show up this time is not switched off: it may simply not be in this particular order.
This belongs to the basket. If you order by mail or through the csv for the order upload — see How your order leaves above — no browser is involved, so your codes are not applied and your promotions are not read. You type them into the webshop yourself, as before.
Your codes are stored per salon and encrypted with the integration, next to your store code. They are nowhere else, and they are not passwords: HairConnect never asks for your Wella login.
What there is not
There is no integration with Payconiq, CCV or Worldline; no SMS provider; no signing in with Google or Apple; no calendar synchronisation. What you do not see listed here does not exist in the package.