Cleanup proposals
Updated on 2026-10-05
Instellingen → Opkuisvoorstellen (Settings → Cleanup proposals). In the menu there is an orange dot with the number still waiting; when it disappears, the list is empty.
At the top of the screen:
Wat de import verdacht vond. Er is nog niets gewijzigd: pas wanneer je hier op Toepassen klikt, verandert er iets aan de gegevens.
(What the import found suspicious. Nothing has been changed yet: only when you click Toepassen (Apply) here does anything change in the data.)
How to work through the list
The list is designed to be gone through in one sitting: grouped by type, within the group the most certain findings first, and per row exactly three things — who, what is wrong, and what is going to happen.
Six tabs: Open (open — where you start), Toegepast (applied), Afgewezen (rejected), Bevindingen (findings), Alles (all) and Prullenmand (bin).
Open holds work only. What is not there, and why, is explained below.
Proposal or finding
Not everything the import writes down is a task.
| Voorstel (proposal) | There is something in your data that needs putting right, and you are the one who can do it: a customer record called "Demo Demo", a brand without a name, a menu without a price. This is what the orange dot counts. |
| Bevinding (finding) | A notice from the import. There is nothing to put right, because the cause does not lie in your data: a till receipt that stays at Optios, a brush that does not appear in your supplier's catalogue. Does not count. |
The difference is not "is there a button". A re-import clash carries no Toepassen and is a proposal all the same: you have to choose which version you keep, and nobody else can.
If you take over the Optios version, or your version reaches Optios through the write-back round, both sides say the same thing again and the next round closes the clash by itself: it moves to Afgewezen (dismissed), without anyone clicking. If the two drift apart again later, it is reopened. A clash you dismissed yourself stays dismissed.
The findings do not disappear. They sit under the Bevindingen tab, with a grey number next to them — grey and not orange, because it is not a backlog.
Why it works this way. At the first salon 1,493 proposals stood open. Nearly a thousand of them were the report of the price list round: products that are not in Wella's catalogue, because they are not Wella products — Denman brushes, Olivia Garden, OPI. Those figures are already on the price list screen itself. Showing them a second time as open tasks makes you feel a year behind while there is nothing to do — and then you learn to ignore the dot.
The columns
| Column | Contents |
|---|---|
| Waar het over gaat (what it is about) | the name, with the type and the Optios number underneath: klant · Optios 12345 (client · Optios 12345). For a client the name is a link to the record, in a new tab |
| Wat er mis lijkt (what appears to be wrong) | the import's finding |
| Voorstel (proposal) | in one sentence: what happens if you click Toepassen (Apply) |
| Zekerheid (certainty) | Hoog (high), Middel (medium) or Laag (low) |
| Aard (nature) | Voorstel (proposal) or Bevinding (finding). Hidden by default; switch it on under Alles, where the two are mixed together |
| Status and Afgehandeld (handled) | hidden by default |
Filters: Soort (type), Zekerheid (certainty) and Aard (nature).
The types
| Type | What it means | Proposal |
|---|---|---|
| Geen echte klant (not a real client) | the record is really a delivery, a training course, a supplier or keyboard noise | Klantfiche archiveren — afspraken blijven bewaard (Archive client record — appointments are kept) |
| Telefoonnummer (phone number) | the number cannot be normalised: too short, too long or without digits. If one field holds two numbers ("0468 35 44 13 09", "051237070 of 0512370"), the import takes the first valid one and no proposal is created | Onbruikbaar nummer wissen (Erase unusable number). If there is nothing on the record to erase, the proposal reads Niets over te nemen: de waarde bij Optios is geen telefoonnummer, en de fiche hier heeft al een geldig gsm-nummer (Nothing to take over: the value at Optios is not a phone number, and the record here already has a valid mobile number — or … heeft geen nummer, has no number): you can reject such a row. If the value has become readable in the meantime, the proposal says the next Optios round will take it over — leave that row alone |
| Adresveld (address field) | there is free text in the postcode field, usually a municipality name — or the postcode sits in the municipality field and the municipality in the postcode field, or one of the two is missing; postcode and municipality name come from bpost's official list, and street and house number are checked in the Flemish address register | Overnemen: postcode 9040 en gemeente Sint-Amandsberg (Adopt: postcode 9040 and municipality Sint-Amandsberg) |
| Naamspelling (name spelling) | the first or last name is spelled differently from the client's email address — Eeic with eric.snick@…, Kthleen with lutgen.kathleen@… | Overnemen uit e-mailadres: voornaam Eric (nu Eeic) (Adopt from email address: first name Eric (now Eeic)) |
| Merk zonder naam (brand without a name) | a brand came out of Optios without a name, with products attached to it | check manually |
| Menu zonder prijs (package without a price) | Optios gives no package price for this package, so none has been filled in | set the price yourself under Salon → Menu's |
| Menu dienst onbekend (package service unknown) | a service from this package is not in your service list; the package is linked incompletely | check and link it yourself |
| Kennis: dienst niet gevonden (knowledge: service not found) | a service is ticked for this staff member at Optios, but does not exist here under that name | check and link it yourself under Team → Medewerkers, tab Wat ze kan |
| Kennis: regel op de Optios-pagina niet gelezen (knowledge: row on the Optios page not read) | the Kennis page of this staff member contained a row we could not read | compare with Optios yourself and fill in what is missing |
| Menu bestaat niet meer (package no longer exists) | this package no longer appears as a package at Optios — often an intermediate folder that an earlier import mistakenly took over as an empty package | check it yourself and delete it if need be |
Why the email address wins for a name
A name is typed once at the desk; an email address the client made themselves and has used for years. If one of the two names sits literally in the address and the other is written differently there, HairConnect judges case by case, with the logic a person uses too:
- the address wins when it holds a full name: Eeic with eric.snick@… becomes Eric, Boonaerd with bonard.colle@… becomes Bonard, Rudy with rudidesie@… becomes Rudi;
- the record wins when the address is an abbreviation — no vowels (bkkr, gwn), a piece of the name (pete, chern), a single letter (v driessche) — or when the name on the record carries an accent (Hödl); then there is no proposal;
- swapped fields are swapped back: a first name starting with De, Van, Vander… is a surname (De tanck / k francine becomes Francine De Tanck), and a "surname" that is a first name for dozens of clients too;
- a missing surname comes from the address: Rudy without a surname with rudidesie@… becomes Rudy Desie;
- if one spelling occurs for five or more clients and the other for none, the known one wins (Janssen over jansenss).
Every proposal has certainty Hoog (high) and goes along with Een hele soort toepassen. The shape of the record is kept: capitals, spaces and hyphens do not come from the address, only the letters do. A proposal applied earlier while the address turned out to be an abbreviation is revised in the next round: the original name then returns as a new proposal.
Where the postcode comes from
If the municipality is in the postcode field and there is no digit to be found anywhere, HairConnect looks up the matching postcode — but only when it is certain. Two sources, both of which can be checked:
- a short list of municipalities the salon has confirmed itself;
- your own client file: if at least two clients share the same municipality and the same postcode, and no other client contradicts them, that postcode is a measurement and not a guess.
- the Flemish government's address register: if the record holds a street with a house number, HairConnect submits it to the official address register, together with the municipality or the postcode. If that address exists there down to the house number, street, postcode and municipality go into the proposal in their official spelling — Overnemen: straat Baarleveer 15, postcode 9031 en gemeente Drongen — nagekeken in het adresregister (Adopt: street Baarleveer 15, postcode 9031 and municipality Drongen — checked in the address register). A typo in the municipality (Dronge) or in the street (Baerleveer) is corrected that way without guessing. If the register does not find the address, or two addresses fit, the proposal says nothing about it. The register covers Flanders only; a Brussels or Walloon address stays as it is.
This check runs again on every import from Optios. A proposal whose record has meanwhile been corrected by hand closes by itself — it then sits under Toegepast (applied), with no name attached. A proposal you dismissed or applied is never reopened: an address in Berlin will never get a Belgian postcode, and leave this as it is still holds after the next round.
If HairConnect is not certain, no postcode is added. You then read, for instance, Overnemen: gemeente Munkzwalm — postcode onbekend, vul die zelf aan (Adopt: municipality Munkzwalm — postcode unknown, fill it in yourself). A postcode is never invented: a wrong postcode on a record is never noticed again, an empty field is.
If the free text is not a municipality at all — in some salons that field literally contains EDUCATION MANAGER — the proposal reads Geen gemeente herkend in dit veld — enkel afvinken, het adres blijft zoals het is (No municipality recognised in this field — just tick it off, the address stays as it is).
Invoicing details and the VAT register
Five types concern the invoicing details of business clients — see also Creating a client record.
| Type | What it means | Proposal |
|---|---|---|
| Facturatiegegevens: anders in het btw-register (VIES) (invoicing details: different in the VAT register) | the name or address on the record differ from how the VAT number is registered; Wat er mis lijkt shows both versions side by side | Overnemen uit het btw-register: naam … en adres … (één regel). Here the button is called Overnemen (take over) |
| Btw-nummer: bestaat niet volgens VIES (does not exist according to VIES) | the register does not know the number; nothing has changed | check the number with the client and correct it yourself |
| Btw-nummer: de facturen uit Optios dragen een ander nummer (the Optios invoices carry a different number) | the record already has a different number, or two invoices to the same client contradict each other; nothing has been overwritten | check yourself which number is right |
| Btw-nummer: factuur uit Optios zonder klantfiche (Optios invoice without a client record) | the invoice carries a VAT number but is not linked to any client; HairConnect does not look a client up by name | put the number on the right record yourself |
| Btw-nummer: op de factuur uit Optios klopt de vorm niet (the form is not right) | the number on the invoice is not a valid VAT number | ask the client for the right number |
Overnemen only changes the client record, and only after your click. The name goes to Naam op de factuur, the address line unsplit to Adres; postcode and town stay. A field you changed yourself in the meantime is not overwritten.
Invoices that have already gone out keep their details. They are tax documents; what you take over applies from the next invoice. Correcting a sent invoice takes a credit note and a new invoice — that is your decision. The proposal says so every time.
If VIES does not answer, no proposal is made: the next round asks again. A proposal you rejected does not reopen in a later round.
Applying
The Toepassen (Apply) button only appears for a proposal that can be carried out automatically. You get the question Voorstel toepassen (Apply proposal), containing exactly the same sentence as in the Voorstel column — the button never does anything other than what was on the screen.
After that: Voorstel toegepast (Proposal applied).
Rejecting
The Afwijzen (Reject) button, without confirmation. The record stays unchanged; the proposal was not right. You read Voorstel afgewezen (Proposal rejected).
Deleting, and how that differs from rejecting
The two buttons sit next to each other and mean different things:
| Afwijzen (Reject) | "This is right, leave the row as it is." A judgement about your data. The proposal stays readable under Afgewezen — it is a decision you will want to be able to look back on. |
| Wissen (Delete) | "I do not want to look at this proposal any more." A judgement about the proposal itself. It disappears from the list; nothing changes on the client record. |
Deleting is allowed in any state — including a proposal you have already applied or rejected. You get the question Voorstel wissen (Delete proposal):
Het voorstel verdwijnt uit de lijst. Aan de klantfiche verandert er niets — daarvoor is Afwijzen. Je kan het 90 dagen terughalen onder Prullenmand.
(The proposal disappears from the list. Nothing changes on the client record — that is what Reject is for. You can retrieve it for 90 days under Bin.)
After that: Voorstel gewist — Terug te halen onder Prullenmand, nog 90 dagen. (Proposal deleted — retrievable under Bin, 90 days left.)
The bin
The fifth tab. It holds what you have deleted, with per row the date, who deleted it, and how much time you have left: 29/08/2026 · nog 87 dagen te herstellen (87 days left to restore).
Herstellen (Restore) puts the proposal back in the list, in exactly the state it was in.
After ninety days that window has passed. The row stays visible a little longer, with hersteltermijn verstreken (restore window expired) in red, but Herstellen is gone; a nightly cleanup task then removes it for good. Ninety days, because a wrongly deleted proposal is rarely missed that same week — but it is the first time that client sits in your chair again.
Two things the bin does not do:
- It does not touch your client records. Deleting is about the proposal, never about the client.
- It restores nothing by itself. If the import runs again and finds the same issue, the deleted row is updated but stays in the bin. What you have put aside stays aside until you retrieve it.
The Alles (all) tab shows everything except the bin.
In bulk
Select several rows and use Toepassen (Apply), Afwijzen (Reject) or Wissen (Delete) in the bulk bar. In the bin you will find Herstellen (Restore) there.
When applying it says: Elk voorstel doet wat er in de kolom Voorstel staat. Klantfiches gaan naar de prullenmand, niets wordt definitief verwijderd. (Every proposal does what is in the Voorstel column. Client records go to the bin, nothing is permanently deleted.) When rejecting: De records blijven ongewijzigd. (The records stay unchanged.) When deleting: De voorstellen verdwijnen uit de lijst; aan de klantfiches verandert er niets. Ze blijven 90 dagen terug te halen onder Prullenmand. (The proposals disappear from the list; nothing changes on the client records. They stay retrievable for 90 days under Bin.)
Afterwards you read 12 toegepast (12 applied), or for example 8 toegepast, 4 overgeslagen (al afgehandeld of geen automatische actie) (8 applied, 4 skipped — already handled or no automatic action).
A whole type in one go
Ticking works per page, and with two hundred and fifty address proposals that means ten times twenty-five checkboxes. That is why Een hele soort toepassen (Apply a whole type) sits at the top: you pick the type, you see how many there are, you confirm, and afterwards you read what happened.
The dropdown shows per type what is ready: Adresveld — 237 open, hoogstens 214 gaan mee (alleen zekerheid Hoog) (Address field — 237 open, at most 214 will go along, certainty High only). "At most", because whether there is actually anything to change on a record only becomes clear when applying.
Two limits, both there for the same reason — what happens in one click has to be mechanical:
- Certainty Hoog (high) only. Applying one proposal you do with the name and the reason in front of you; a whole type at once you do not. For Geen echte klant, High is exactly the record with no email address and no phone number. If there is a number on it, it may be a real customer who happens to be called "delivery" — and you take that decision row by row.
- Only where there is something to change. If the address is already filled in correctly, that proposal is not ticked off. It stays open, because you have not looked at it yet.
What stays behind as a result is therefore not a mistake: it is precisely what a human should judge. You apply it row by row as always.
Afterwards you read for example Adresveld: 198 toegepast (Address field: 198 applied), with underneath 16 overgeslagen omdat er op die fiche niets meer te wijzigen viel. Die voorstellen staan nog open. (16 skipped because there was nothing left to change on that record. Those proposals are still open.) That message stays until you dismiss it.
The button only appears when something is actually ready. And nothing happens by itself: there is no task that cleans up at night — a human presses the button.
Every round leaves a line in the logboek (log; Instellingen → Logboek): Kris paste alle voorstellen van de soort adresveld in één keer toe — 198 toegepast, 16 overgeslagen (Kris applied all proposals of type adresveld in one go — 198 applied, 16 skipped). The archived customer records each appear there separately.
Two rules that are never departed from
- Nothing is hard-deleted. A client record goes to the bin, so that eight years of appointment history stay in place. You find it back under Klanten (Clients), with Deze fiche is gearchiveerd via het migratie-overzicht. (This record was archived through the migration overview.) at the top of the record.
- A field that already holds a good value is never overwritten. Of the two phone fields, only the one that demonstrably is not a valid number is erased — blindly clearing both would wipe a mobile number that is in fact fine. And an address is only completed when the target field currently contains something that demonstrably is not a postcode or a municipality name.
A proposal may tidy up, not destroy.
When the list is empty
Niets meer na te kijken — Elk opkuisvoorstel uit de Optios-import is toegepast of afgewezen. Nieuwe voorstellen verschijnen hier zodra de import opnieuw draait.
(Nothing left to check — Every cleanup proposal from the Optios import has been applied or rejected. New proposals will appear here as soon as the import runs again.)
Frequently asked questions
Can I adjust a finding myself? No. There is deliberately only a list and no form: the source is the import, and a form would suggest that you can change the finding. If the proposal is not right, you reject it and adjust the record yourself under Klanten (Clients).
I archived a client record by mistake. Open it through the link in the list and click Herstellen (Restore) on the edit page.
I deleted a proposal by mistake. Go to the Prullenmand (Bin) tab and click Herstellen (Restore). That is possible up to ninety days after deleting; after that it says hersteltermijn verstreken (restore window expired) and the button is gone.
Why does my address proposal have no postcode? Because HairConnect does not know it with certainty. Fill it in yourself on the client record — that is better than a digit that looks plausible and is wrong.