Voor de webbouwer van een klant van ADM-Concept. Je contactformulier stuurt vandaag een mail; met deze koppeling verschijnen dezelfde gegevens rechtstreeks als lead in de toepassing die je klant gebruikt. Je hebt geen kennis van ADM One nodig — één adres en één sleutel volstaan.
Je contactformulier stuurt vandaag een mail. Post dezelfde gegevens ook naar dit adres, en ze verschijnen rechtstreeks in de toepassing van je klant.
Eén API-sleutel, die je van ADM-Concept krijgt. Die sleutel hoort bij één website van één klant.
⚠️ De sleutel hoort op je server, niet in de pagina. Stuur de aanvraag vanaf je backend — daar waar je nu ook de mail verstuurt. Zet hem nooit in JavaScript, in de HTML of in een publieke repository: wie hem leest, kan leads in de toepassing van je klant schrijven.
POST https://platform.digitalcloud.be/api/v1/leads
X-Api-Key: <de sleutel die je kreeg>
Content-Type: application/json
{
"name": "Jan Peeters", // aanbevolen
"email": "jan@peeters.be", // aanbevolen — hierop wordt ontdubbeld
"phone": "0475 12 34 56",
"company": "Peeters Dakwerken",
"message": "Graag een offerte voor een plat dak van 80 m².",
"subject": "Offerteaanvraag",
"externalRef": "form-2026-08-11-00427", // jouw eigen referentie — zie hieronder
"pageUrl": "https://bavo-saunabouw.be/contact",
"locale": "nl",
"botcheck": "", // honeypot: laat leeg (zie verderop)
"fields": { // álle andere velden van je formulier, vrij te kiezen
"aantal m²": "80",
"gewenste startdatum": "september",
"hoe ken je ons": "Google"
}
}
Geen enkel veld is verplicht behalve dat er íets bruikbaars in staat: minstens één van email, phone of
message. Een volledig lege inzending wordt geweigerd.
Vorm je formulier niet naar dit schema. Heb je velden die hier niet in passen — en dat heb je — zet ze dan
gewoon in fields. Die map gaat ongewijzigd mee tot in de toepassing. Je hoeft niets weg te laten en niets te
hernoemen.
externalRef — stuur er één meeJe eigen referentie voor deze inzending: een volgnummer, een uuid, wat je maar wil, zolang hij uniek is per
inzending. Stuur je dezelfde externalRef twee keer (een hertry na een time-out, een dubbelklik van de
bezoeker), dan krijg je hetzelfde antwoord terug en komt er geen tweede lead. Zonder externalRef maken we
er zelf een op basis van de inhoud, maar dat is minder betrouwbaar.
Je hoeft — en kán — geen bron mee te sturen. Elke inzending draagt automatisch de naam van je sleutel als bron: heet je sleutel "contactformulier hoofdsite", dan ziet je klant dat bij elke lead die er doorheen komt.
Waarom zo? Anders zou dat veld ingevuld worden door wie post, en dan is de vraag "welk kanaal levert klanten op" niet meer betrouwbaar te beantwoorden. Eén formulier dat per ongeluk iets verkeerds meestuurt, en de hele rapportering klopt niet meer.
Heb je meerdere formulieren? Vraag dan een sleutel per formulier — hoofdsite, campagnepagina, offerteaanvraag. Dat is precies waarvoor dit bedoeld is, en het kost niets extra. Je klant ziet dan per lead waar hij vandaan komt, en een sleutel intrekken raakt enkel dat ene formulier.
Stuur je toch een veld source of bron mee, dan belandt het gewoon in fields — het overschrijft de bron niet.
| Code | Betekenis | Wat te doen |
|---|---|---|
202 |
Aangenomen | Toon je bezoeker de gewone bedankboodschap |
400 |
Inhoud onbruikbaar (alles leeg, of geen geldige JSON) | Nakijken; opnieuw sturen helpt niet |
401 |
Sleutel ontbreekt of klopt niet | Controleer de header X-Api-Key |
413 |
Te groot (meer dan 64 KB) | Kort het bericht in; bijlagen kunnen niet |
429 |
Te veel aanvragen | Wacht en probeer opnieuw (zie Retry-After) |
5xx |
Bij ons iets mis | Later opnieuw proberen mag |
// 202
{ "accepted": true, "id": "9f1c…" }
Zeker de eerste maanden. Ligt onze dienst er even uit of klopt de sleutel niet, dan is die inzending anders gewoon weg — en dat merkt niemand, want een lead die er niet is vraagt niet waarom hij ontbreekt. Laat je formulier de mail versturen zoals vandaag, en beschouw deze aanroep als een aanvulling. Als het maanden vlot loopt, kan de klant beslissen om de mail te laten vallen.
Laat je verzending ook nooit de bedankpagina blokkeren: mislukt de aanroep, toon de bezoeker dan gewoon je normale bevestiging. Hij kan er niets aan doen.
Zet in je formulier een veld dat een mens nooit invult (verborgen met CSS, niet met type="hidden") en stuur
de inhoud mee als botcheck. Staat er iets in, dan is het een bot: wij antwoorden dan gewoon 202 maar maken
geen lead aan. Een bot mag niet leren wanneer hij betrapt is.
$payload = [
'name' => $_POST['naam'] ?? '',
'email' => $_POST['email'] ?? '',
'phone' => $_POST['tel'] ?? '',
'message' => $_POST['bericht'] ?? '',
'botcheck' => $_POST['website'] ?? '', // het verborgen veld
'externalRef' => bin2hex(random_bytes(12)),
'pageUrl' => 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
'fields' => ['gewenste startdatum' => $_POST['startdatum'] ?? ''],
];
$ch = curl_init('https://platform.digitalcloud.be/api/v1/leads');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'X-Api-Key: ' . LEADS_API_KEY],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5, // kort: de bezoeker mag hier niet op wachten
]);
curl_exec($ch); // resultaat mag mislukken — de mail hieronder blijft
curl_close($ch);
mail($ontvanger, $onderwerp, $tekst); // blijf dit voorlopig doen
curl -i -X POST https://platform.digitalcloud.be/api/v1/leads \
-H "X-Api-Key: <sleutel>" -H "Content-Type: application/json" \
-d '{"name":"Test","email":"test@example.be","message":"Test vanaf de website","externalRef":"test-1"}'
Verwacht 202. Stuur dezelfde externalRef nog eens: opnieuw 202, en in de toepassing staat er nog steeds
maar één lead.
Wat je doorstuurt zijn persoonsgegevens van een bezoeker. Stuur enkel wat in het formulier stond — geen IP-adressen, geen cookie-id's, geen trackinggegevens. ADM One bewaart de inzending tijdelijk: zodra de toepassing van je klant ze opgehaald heeft, wordt ze bij ons gewist. Vanaf dat moment is je klant de enige die ze bijhoudt — bevestigde inzendingen worden bij ons na 30 dagen gewist. Een inzending die het platform nooit ophaalt blijft wél staan; die is nog van niemand. Vermeld het formulier in de privacyverklaring van de website.
Neem contact op met ADM-Concept via support@adm-concept.be. Vermeld om welke klant en welke website het gaat; de sleutel is aan die ene website gebonden.
Deze pagina beschrijft de koppeling zoals ze vandaag live staat. Er komt geen versie van dit document in omloop die kan verouderen — bookmark de link in plaats van de tekst te kopiëren.
ADM-Concept · support@adm-concept.be