Koppelingen
Praat met de diensten die je al gebruikt
Betalingen, domeinregisters, DNS, Google Workspace en AI: elke koppeling draait op jouw eigen account en jouw eigen sleutels, per organisatie ingesteld. Niets loopt via ons, want er is geen "ons": je draait de installatie zelf.
- 21
- te koppelen
- 10
- categorieën
- 4
- op de roadmap
Betalen
Laat klanten je factuur online betalen; de betaling landt als betaalregel op de factuur zelf.
In voorbereiding
Stripe Op de roadmap
De betaallaag in schakl. noemt geen leverancier: er is een protocol dat elke provider invult, een eigen accountzoeker per provider en een meldingsadres dat zijn eigen organisatie benoemt. Stripe wordt daardoor een pakket erbij en geen verbouwing van het deel dat geld raakt. Vandaag valt er niets in te stellen; Mollie is de enige provider die er staat.
Adyen Op de roadmap
Bureaus met enterprise-klanten vragen om Adyen, en dat is geen betaalmethode maar een andere provider. Precies daarom noemt de betaallaag in schakl. geen leverancier: er ligt een protocol, een accountzoeker per provider en een meldingsadres dat zijn eigen organisatie benoemt. Vandaag is er niets in te stellen; Mollie is de enige koppeling die er staat.
Nog niet te koppelen. Ze staan hier omdat het pad ernaartoe al in de code zit, niet omdat er een datum bij hoort.
Boekhouding
Je facturen doorzetten naar het pakket waar je accountant in werkt.
In voorbereiding
Exact Online Op de roadmap
Er is nog geen live koppeling met Exact Online. Wat er vandaag wel is: elke definitieve factuur en creditfactuur download je als UBL 2.1, precies het bestand dat Exact Online importeert. De aansluiting waar een echte koppeling later in klikt ligt er, maar er is nog geen adapter geïnstalleerd.
Nog niet te koppelen. Ze staan hier omdat het pad ernaartoe al in de code zit, niet omdat er een datum bij hoort.
Domeinen & DNS
Het register weet wie een domein betaalt, de zone weet waar het heen wijst. schakl leest allebei.
Cloudflare
Zones, DNS en een omleiding die bestaat
Koppel per klant een Cloudflare-account en beheer de zone vanaf het domein zelf: nameservers, de live DNS-tabel, export en één domeinbrede omleiding die schakl. aanmaakt en terugleest. Een domein dat op omleiding staat, is nu ook echt een Redirect Rule bij Cloudflare. De Registrar-lijst vertelt daarnaast welke domeinen je zelf verlengt, en dus mag factureren.
- Een bestaande zone wordt overgenomen, pas daarna aangemaakt
- DNS live uitlezen en bewerken, export als zonebestand of CSV
- Wijzigt iemand de omleiding in het Cloudflare-dashboard, dan meldt schakl. dat
OXXA
Het register: vervaldatum, slot, nameservers
Leest je OXXA-resellerregister uit en zet vervaldatum, verhuisslot, automatisch verlengen, DNSSEC, de gedelegeerde nameservers en de houder op de domeinpagina. Eén actie schrijft terug: de nameservers van een domein omzetten, waarmee de overstap naar Cloudflare klaar is. De eerste sync laat bovendien zien welke domeinen je verlengt zonder dat schakl. ze kent.
- Markeert op de domeinpagina wat aandacht vraagt: nog 60 dagen, verhuisslot uit, automatisch verlengen uit. Geen mail, geen melding
- Nameservers omzetten vanaf het domein, met het Cloudflare-paar één klik ernaast
- De eerste sync legt naast elkaar wat je verlengt en wat schakl. kent, dus wat je betaalt zonder het te weten valt op
Websites & monitoring
Wat er op de site van een klant draait, en of hij overeind staat. Allebei hangen ze aan de website, niet aan het domein.
WordPress
Eén wachtwoord per website, vier deuren
Eén WordPress-applicatiewachtwoord per website opent vier oppervlakken op dezelfde host: de gewone REST-API, de Abilities-API van WordPress 6.9, de MCP-server als die plugin er staat, en de eigen route van Rank Math voor AI-zichtbaarheid. Die laatste levert de vijfde marketingbron: hoe vaak een merk in AI-antwoorden genoemd en gelinkt wordt.
- De koppeling hangt aan de website, niet aan de organisatie: elk klantsite heeft zijn eigen wachtwoord
- Vijf losse proeven bij het controleren, en geen daarvan bepaalt de uitslag van de andere
- Rank Math AI-zichtbaarheid als marketingbron: score, vermeldingen, bronvermeldingen, sentiment en gemiddelde plaats
Uptime Kuma
Ligt de site eruit, en sinds wanneer
Uptime Kuma is de open-source monitor die de meeste bureaus al draaien. Koppel hem en een monitor wordt een echt record: met een klant, een website, een profiel, een wijzigingsspoor en een plek op de klantpagina naast het domein en het hostingaccount waar hij van afhangt. Draait de Kuma van de klant achter een firewall, dan werkt het nog steeds: dan komt het verkeer de andere kant op.
- Twee soorten koppeling: eentje die wij beheren, en eentje die alleen naar ons meldt
- Profielen in plaats van driehonderd keer dezelfde instellingen overtypen
- Wat wij besloten en wat we voor het laatst zagen staan apart, dus afwijking is zichtbaar in plaats van stilletjes overschreven
Google Workspace
Agenda, Drive, Gmail en Contacten, per organisatie gekoppeld met je eigen OAuth-gegevens.
Marketing & analytics
De cijfers waarmee je een klant laat zien wat het werk heeft opgeleverd.
Google Analytics 4
Sessies, kanalen en conversies per klant
Je koppelt per klant een GA4-property op de klantpagina zelf. Elke nacht worden de dagcijfers opgehaald en in je eigen database bewaard, zodat het paneel, het tabblad en het overzicht laden zonder Google aan te roepen. De koppeling loopt over de Google-verbinding die iemand van je team al gelegd heeft; er komt geen tweede login bij.
- Sessies, gebruikers, nieuwe gebruikers, sleutelgebeurtenissen, betrokkenheid en omzet, per dag bewaard
- Bij de eerste koppeling wordt ongeveer 13 maanden historie opgehaald
- Uitsplitsingen naar toppagina's, kanalen, apparaten, sleutelgebeurtenissen en verwijzende bronnen
Google Search Console
Kliks, vertoningen en posities per klant
Je koppelt per klant een Search Console-property op de klantpagina, een domeinproperty of een URL-prefix. Kliks, vertoningen, CTR en gemiddelde positie worden per dag bewaard, en de tabel met stijgers en dalers laat zien welke zoektermen ten opzichte van de vorige periode bewogen zijn. Dezelfde Google-toestemming als Analytics en Ads, dus geen extra login.
- Kliks, vertoningen, CTR en gemiddelde positie, per dag bewaard
- Topzoektermen, toppagina's en de grootste stijgers en dalers
- Search Console maakt cijfers twee tot drie dagen later definitief; de nachtelijke run haalt de laatste week opnieuw op
SE Ranking
Posities, audit en AI-zichtbaarheid
SE Ranking is de eerste marketingbron die niet van Google komt, en dat is aan de koppeling te zien: hij draait op één API-sleutel voor het hele bureau in plaats van een grant per medewerker. Uit een gekoppeld SE Ranking-project bewaart schakl. dagelijkse positiecijfers voor het dashboard, en haalt het per rapportage de zoekwoorden, de laatste website-audit en de zichtbaarheid in AI-zoekresultaten op.
- Eén sleutel voor het bureau, versleuteld opgeslagen in Instellingen → Marketing
- Per dag bewaard: gem. positie, top 3, top 10, top 30 en het aantal scorende zoekwoorden
- Drie rapportagehoofdstukken: Zoekwoordposities, Zichtbaarheid in AI-zoekresultaten en de interne Website-audit
Google Ads
Uitgaven, kliks en conversies per klant
Je koppelt per klant een Google Ads-account en ziet uitgaven, kliks, vertoningen, conversies en conversiewaarde naast de cijfers van Analytics en Search Console. Werk je vanuit een beheerdersaccount (MCC), dan worden de klantaccounts eronder uitgeklapt in de kiezer. Google Ads vraagt naast de Google-koppeling één ontwikkelaarstoken van je bureau.
- Uitgaven, kliks, vertoningen, conversies en conversiewaarde, per dag bewaard
- Campagne-uitsplitsing: de tien duurste campagnes van de periode
- MCC-hiërarchieën worden uitgeklapt, tot 500 klantaccounts per beheerdersaccount
Google Tag Manager
De container van de klant, hier
De helft van het marketingwerk is zorgen dát er gemeten wordt: een conversie op een nieuw formulier, een event op een offerteaanvraag, een tag voor de campagne die maandag begint. Dat gebeurde tot nu toe in een browsertabblad waar schakl. niets van wist. Koppel de container van een klant en je ziet wat er live staat, wie wat wanneer heeft neergezet, en welke wijziging al drie weken klaarstaat zonder gepubliceerd te zijn.
- Bewerken en publiceren zijn twee losse rechten: een sleutel mag de meting klaarzetten zonder hem uit te zenden
- schakl. schrijft in een eigen werkruimte, dus half werk komt nooit in de conceptversie van de klant terecht
- Wat je hier hebt aangemaakt blijft vastgelegd: welke tag en trigger samen 'offerte aangevraagd' zijn, opgezet vanaf hier, op een datum, door een persoon
AI & assistenten
Jouw sleutel, jouw aanbieder, jouw rechten. Zonder ingestelde aanbieder is er nergens een AI-knop.
Anthropic
Claude achter je AI-functies, op jouw sleutel
Je zet je eigen Anthropic-sleutel in Instellingen → AI; die wordt versleuteld opgeslagen en nooit teruggetoond. Vier functies staan los van elkaar aan of uit: Assistent, Schrijfhulp, Urenhulp en Briefing & rapporten. Een maandelijks tokenbudget met een meter houdt zichtbaar wat het kost.
- Eigen sleutel, versleuteld per organisatie, nooit teruggetoond
- Vier functies apart te schakelen; standaardmodel claude-opus-5
- Het verbruik telt aantallen, nooit de tekst van een prompt of antwoord
OpenAI
GPT-5, plus spraak naar tekst op Uren
Dezelfde kern als elke aanbieder: je eigen sleutel versleuteld per organisatie, vier functies die los aan of uit gaan en één maandbudget met meter. Het ingebouwde standaardmodel is gpt-5. OpenAI is daarnaast de aanbieder die spraak naar tekst kan doen, dus hiermee werkt ook de microfoon naast Snel toevoegen op Uren.
- Eigen sleutel, versleuteld opgeslagen, standaardmodel gpt-5
- Kan ook spraak naar tekst: inspreken in Snel toevoegen op Uren
- Audio heeft een eigen maandbudget in seconden, los van het tokenbudget
OpenAI-compatibel
Je eigen model, op je eigen server
Alles wat de chat-API van OpenAI spreekt op een basis-URL van jezelf: Azure OpenAI, Mistral, of een Ollama of vLLM in je eigen rack. Het veld Basis-URL is bij deze aanbieder verplicht; opslaan zonder levert een validatiefout op precies dat veld. Verder werken de vier functies, het budget en de meter exact hetzelfde als bij een aanbieder in de cloud.
- Azure OpenAI, Mistral, een lokale Ollama of vLLM: alles wat de OpenAI chat-API spreekt
- Basis-URL is hier verplicht, bijvoorbeeld https://ai.example.com/v1
- Kan ook spraak naar tekst, als jouw server dat endpoint implementeert
Inloggen & identiteit
Inloggen met het account dat je bureau al heeft, met tweestapsverificatie erbovenop.
Single sign-on (OIDC)
Inloggen met je eigen identiteitsprovider
Je team logt in met het account dat je bureau al heeft: Google Workspace, Microsoft Entra ID, Authentik, Keycloak of Auth0. Je stelt de koppeling volledig in de app in, zonder omgevingsvariabelen en zonder herstart. Wil je verder gaan, dan zet je inloggen met wachtwoord voor de hele organisatie uit.
- Discovery-URL, client-ID en clientgeheim per organisatie; PKCE staat altijd aan
- Verbinding testen voordat je iets verplicht stelt
- Break-glass voor de beheerder van de installatie, zodat een kapotte provider je niet buitensluit
Sms-gateway
Sms-codes als vangnet naast je authenticator
Tweestapsverificatie werkt uit zichzelf: een authenticator-app en tien eenmalige back-upcodes, zonder dat je iets hoeft te koppelen. Alleen het vangnet per sms vraagt om een gateway, en die zet de beheerder van de installatie aan met één omgevingsvariabele. Staat die niet, dan bestaat de sms-optie nergens in het product.
- TOTP en back-upcodes hebben geen koppeling nodig; iedereen zet ze zelf aan
- Eén vaste JSON-POST naar een gateway van jezelf; voor Twilio, MessageBird of Spryng zet je er een klein doorgeefluik voor
- Sms komt er altijd bovenop, nooit in plaats van de authenticator-app
Opslag & verzending
Waar je bestanden staan en langs welke server je e-mail de deur uitgaat.
E-mailbezorging
Elke mail onder je eigen merk de deur uit
Je kiest de verzender die je toch al betaalt: je eigen SMTP-server, of Brevo, SendGrid of SMTP2GO via hun eigen HTTP-API. Alles wat de app verstuurt (uitnodiging, wachtwoordherstel, factuur, offerte, herinnering, maandrapport) vertrekt verpakt in jouw logo, merknaam en kleur, met jouw handtekening eronder. De naam schakl. staat nergens in.
- Eigen SMTP, of Brevo, SendGrid en SMTP2GO over hun HTTP-API
- Eén HTML-handtekening, op het verzendpunt onder elke uitgaande mail geplakt
- Factuur, offerte, herinnering en rapport in je eigen woorden, per taal
S3-opslag
Een volume of je eigen S3-bucket
Bestanden staan standaard op een Docker-volume naast de database. Zet je de opslag-backend op s3, dan schrijft de app nieuwe bestanden naar elke S3-compatibele bucket: Hetzner Object Storage, MinIO, Scaleway of AWS. Identieke bytes kosten per organisatie één object, dus hetzelfde handtekeninglogo op 500 binnengekomen mails is één object en geen 500.
- Named volume of S3-compatibele bucket, gekozen bij het uitrollen
- Bestanden worden op hun inhoud geadresseerd: duplicaten kosten niets na de eerste
- Een nachtelijke taak vouwt oude duplicaten samen en ruimt losse bytes op
Automatisering & API
Alles wat de app kan, kan een script ook: één API, getypt, met rechten per sleutel.
MCP (Model Context Protocol)
Je eigen API als toolset voor AI-clients
schakl. draait een MCP-server op /mcp. Elke operatie van /api/v1 is daar een tool, gegenereerd uit de OpenAPI-spec van je eigen instance en in-process teruggeproxied naar diezelfde API. Een tool-aanroep gaat dus door precies dezelfde poort als het web: hostname naar organisatie, RLS gebonden, rechten opgelost.
- Elke /api/v1-operatie is een tool, met de naam van de operatie: list_companies, create_task, team_time_summary
- Sleutels zijn tenant-gebonden, intrekbaar en dragen precies de scopes die je aanvinkt
- Aansluiten in één regel met claude mcp add --transport http
REST API & API-sleutels
Eén getypte API, rechten per sleutel
Alles wat de app doet, loopt over /api/v1: de webapp praat nooit rechtstreeks met de database, dus er is geen achterdeur die een script mist. De interactieve referentie staat op je eigen host onder /api/docs, met het OpenAPI-document op /api/openapi.json. Je authenticeert met een API-sleutel die precies de rechten draagt die je aanvinkt.
- Swagger UI op /api/docs, ReDoc op /api/redoc, het document op /api/openapi.json
- Persoonlijke sleutels per medewerker, service-accounts voor koppelingen die blijven draaien
- n8n is precies dit: een API-sleutel plus HTTP-nodes, geen aparte koppeling nodig
In voorbereiding
Webhooks Op de roadmap
Je abonneren op gebeurtenissen, waarbij schakl. bij elke wijziging een payload naar jouw URL stuurt, kan nog niet. Wat er vandaag wel is: een automatiseringsregel kan op acht triggers een webhook aanroepen, en een meldingskanaal kan berichten naar een webhook-URL sturen. Wil je op iets anders reageren, dan pol je de API of gebruik je MCP.
Nog niet te koppelen. Ze staan hier omdat het pad ernaartoe al in de code zit, niet omdat er een datum bij hoort.
Jouw eigen sleutels
Elke koppeling wordt per organisatie ingesteld en versleuteld opgeslagen. Je bureau gebruikt zijn eigen account; een klant die zijn eigen Cloudflare of registrar meebrengt, krijgt zijn eigen rij. Niets wordt voor je gekozen.
Geen lock-in
Een koppeling uitzetten haalt niets weg wat al vastligt. Betalingen die binnen zijn blijven op de factuur staan, gesynchroniseerde domeinen blijven in je register. schakl bewaart wat het besloot én wat het als laatste zag, apart, zodat "iemand heeft dit in het dashboard van de leverancier veranderd" een zichtbaar verschil is in plaats van een stille overschrijving.
Iets missen?
De koppellaag is een naadje in de code, geen lijstje: een tweede betaaldienst of registrar is één bestand, geen verbouwing. Laat weten wat je nodig hebt.