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.
- 24
- te koppelen
- 12
- 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.
Tijdregistratie
Uren die elders geschreven worden gelijk houden met de uren hier, zolang een overstap duurt.
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: cijfers, inhoud en agents
Eén WordPress-applicatiewachtwoord per website opent dezelfde host op meerdere manieren: 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 een marketingbron: hoe vaak een merk in AI-antwoorden genoemd en gelinkt wordt. Onder hetzelfde wachtwoord leest en bewerkt een agent via de MCP-sectie wordpress de pagina's, media, formulieren en abilities van elke gekoppelde site, met de site als parameter in plaats van als eigen gereedschap.
- De koppeling hangt aan de website, niet aan de organisatie: elke klantsite heeft zijn eigen wachtwoord
- Zes 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.
Microsoft 365
Outlook-agenda, OneDrive en Outlook-mail, per organisatie gekoppeld met je eigen Entra-app-registratie.
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. Los van het dashboard is Analytics ook een eigen integratie: zeventien leesroutes over beide GA4-API's, als eigen MCP-sectie voor een AI-assistent.
- 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, posities en AI-overzichten 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. Vertoningen in AI-overzichten en AI-modus geeft Google niet via de API terug; die komen binnen via de export van het Generatieve AI-rapport. En los van het dashboard is Search Console een eigen leesoppervlak, ook voor een AI-assistent: sitemaps, URL-inspectie, uurcijfers en een vrije query. 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
- Vertoningen in AI-overzichten en AI-modus via de exportknop van Google, als tegel, trend en rapporthoofdstuk
SE Ranking
Posities, audit en zichtbaarheid in AI-antwoorden
SE Ranking is de eerste marketingbron die niet van Google komt, en dat is aan de koppeling te zien: hij draait op een API-sleutel van 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 AI Result Tracker op. Daarnaast leest het uit de Data API van SE Ranking het AI-zoekoverzicht van een klant: hoe vaak ChatGPT, Perplexity, Gemini en de AI-antwoorden van Google het merk noemen en naar de site linken, vorige maand tegen de maand ervoor.
- Eén sleutel voor het bureau, versleuteld opgeslagen in Instellingen → Marketing, met een optionele tweede sleutel voor de Data API
- Per dag bewaard: gem. positie, top 3, top 10, top 30 en het aantal scorende zoekwoorden
- AI-zoekoverzicht: merkvermeldingen, links naar de site, gemiddelde positie en potentieel AI-verkeer, vorige maand tegen de maand ervoor
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. Daarnaast is Google Ads een eigen werkscherm: campagnes, zoektermen, uitsluitingen en budgetten lezen en wijzigen, met een beleid per klant als vangrail, vanaf hier of vanuit een AI-assistent. Google Ads vraagt naast de Google-koppeling één ontwikkelaarstoken van je bureau.
- Uitgaven, kliks, vertoningen, conversies en conversiewaarde, per dag bewaard
- Conversies worden 30 dagen lang opnieuw opgehaald, zodat een maand pas vergeleken wordt als Google hem heeft afgerond
- Een werkscherm met campagnes, zoekwoorden, zoektermen, uitsluitingen, apparaten, locaties en aanbevelingen
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. Elke AI-functie staat los aan of uit, van de assistent en de schrijfhulp tot e-mail in taak en vergaderverslagen, en een maandelijks tokenbudget met een meter houdt zichtbaar wat het kost. Voor spraak naar tekst kies je er een tweede aanbieder bij, want Anthropic transcribeert niet.
- Eigen sleutel, versleuteld per organisatie, nooit teruggetoond
- Acht functies apart te schakelen, elk met een eigen model als je wilt; standaardmodel claude-opus-5
- Het verbruik telt aantallen, nooit de tekst van een prompt of antwoord
OpenAI
GPT-5, plus spraak naar tekst voor inspreken en vergaderingen
Dezelfde kern als elke aanbieder: je eigen sleutel versleuteld per organisatie, functies die los aan of uit gaan en één maandbudget met meter. Het ingebouwde standaardmodel is gpt-5. OpenAI kan daarnaast spraak naar tekst doen, dus hiermee werkt ook de microfoon: bij Snel toevoegen op Uren, bij een nieuwe taak, in de assistent en bij het opnemen van een vergadering.
- Eigen sleutel, versleuteld opgeslagen, standaardmodel gpt-5
- Kan ook spraak naar tekst: uren, taken en de assistent inspreken, vergaderingen opnemen
- Voor vergaderingen gpt-4o-transcribe-diarize, dat aangeeft wie er sprak
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 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; voor de transcriptie van Mistral is er een eigen spraakaanbieder
Mistral (Voxtral)
Spraak naar tekst met sprekers, drie uur in één keer
Mistral is in schakl. een spraakaanbieder: Voxtral zet een opname om in tekst, in het Nederlands, met per fragment wie er sprak en wanneer. Het neemt drie uur audio in één verzoek, en daarom is het de aanbieder die we aanraden voor vergaderingen: een opname die in één keer past houdt één set sprekerslabels. Dezelfde sleutel werkt ook voor inspreken op Uren, bij een taak en in de assistent. Voor de chatfuncties kies je een andere aanbieder, of de chat-API van Mistral via OpenAI-compatibel.
- Sprekerslabels en tijdstempels per fragment, in het Nederlands
- Drie uur in één verzoek: een vergadering van twee uur wordt niet in stukken geknipt
- Eigen sleutel, versleuteld opgeslagen, apart van de chatsleutel
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, met OAuth of een sleutel
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. Claude en ChatGPT koppelen met alleen het adres via OAuth 2.1; andere clients met een API-sleutel. Smallere adressen als /mcp/compact en /mcp/google-ads bieden een deel van de tools aan, voor clients die niet alles in hun context passen.
- Elke /api/v1-operatie is een tool, met de naam van de operatie: list_companies, create_task, team_time_summary
- OAuth 2.1 met zelfregistratie: Claude en ChatGPT koppelen met alleen de URL, de toestemming loopt over je gewone sessie
- Wat een koppeling mag kies je bij de toestemming: alles wat je zelf mag, alleen lezen, of zelf kiezen
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 (ingelogd, niet publiek)
- 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.