· 4 min · TextMeFlow Team

WhatsApp-meldingen versturen vanuit ClickUp met webhooks

ClickUp heeft geen ingebouwde WhatsApp-integratie, maar wel een eigen webhook-API die bij vrijwel elke actie op een taak een HTTP-request kan afvuren: een statuswijziging, een nieuwe taak, een aangepaste deadline of een toegewezen teamlid. Combineer dat met de TextMeFlow API en je stuurt binnen enkele minuten een WhatsApp-bericht naar een klant of collega zodra er iets verandert in een taak.

Dit artikel toont de kortste weg: ClickUp → een eigen webhook-ontvanger → de TextMeFlow API. Geen Zapier of Make nodig, al kan je die tools gebruiken als je geen eigen endpoint wil onderhouden.

Een ClickUp-webhook aanmaken

ClickUp heeft geen knop in de UI om een webhook te registreren — dat moet via de API zelf. Je stuurt een POST naar https://api.clickup.com/api/v2/team/{team_id}/webhook met je ClickUp API-token, de URL van jouw ontvanger en de events waarop je wil reageren:

curl -X POST "https://api.clickup.com/api/v2/team/123456/webhook" \
  -H "Authorization: $CLICKUP_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "endpoint": "https://jouw-domein.be/webhooks/clickup",
    "events": ["taskStatusUpdated", "taskCreated", "taskDueDateUpdated"]
  }'

ClickUp antwoordt met een webhook_id en een secret. Bewaar dat secret — elke binnenkomende webhook-call bevat een X-Signature-header, een HMAC-SHA256 van de payload met dat secret als key. Verifieer die signature voor je de payload verwerkt, anders kan iedereen die de URL kent valse statuswijzigingen aanleveren.

// routes/api.php (Laravel)
Route::post('/webhooks/clickup', function (Illuminate\Http\Request $request) {
    $expected = hash_hmac('sha256', $request->getContent(), config('services.clickup.secret'));

    if (!hash_equals($expected, $request->header('X-Signature', ''))) {
        abort(401);
    }

    $event = $request->input('event');
    $taskId = $request->input('task_id');
    // ... verwerk de wijziging, zie onder

    return response()->json(['ok' => true]);
});

Van ClickUp-event naar WhatsApp-bericht

Elke webhook-call bevat het event-type en een task_id, maar niet altijd de volledige taakgegevens. Voor de nieuwe status of vervaldatum haal je er doorgaans een losse GET /task/{task_id}-call bij, of je gebruikt het history_items-veld dat bij sommige events al meegestuurd wordt. Koppel het telefoonnummer aan de taak via een custom field of een eigen mapping-tabel, en stuur dat door naar de TextMeFlow API:

$phone = Task::where('clickup_task_id', $taskId)->value('whatsapp_number');

if ($phone && $event === 'taskStatusUpdated') {
    $task = Http::withToken(config('services.clickup.token'))
        ->get("https://api.clickup.com/api/v2/task/{$taskId}")
        ->json();

    Http::withToken(config('services.textmeflow.api_key'))
        ->post('https://textmeflow.eu/api/v1/messages', [
            'to' => $phone,
            'type' => 'text',
            'text' => "Statusupdate: \"{$task['name']}\" staat nu op \"{$task['status']['status']}\".",
        ]);
}

Wil je geen eigen backend onderhouden, dan bouw je dezelfde twee stappen (signature-check + forward) ook in n8n of Make — zie onze gids over WhatsApp-berichten versturen vanuit n8n, Make.com of Zapier voor de opzet van zo'n flow.

Welke events zijn de moeite waard

ClickUp stuurt tientallen event-types; voor WhatsApp-meldingen zijn er maar een paar relevant:

  • taskStatusUpdated — klant of teamlid informeren zodra een taak naar "In review" of "Afgerond" verschuift.
  • taskCreated — intern escaleren wanneer een nieuwe urgente taak binnenkomt (filter op lijst of tag, anders krijg je een bericht per taak).
  • taskDueDateUpdated — een deadline-herinnering versturen wanneer een vervaldatum verschuift, in combinatie met een geplande cronjob die dagelijks checkt welke taken morgen vervallen.

Abonneer je alleen op de events die je ook echt verwerkt — elke extra event-type verhoogt het aantal calls naar je endpoint zonder nut.

Beveilig en begrens de flow

Naast de HMAC-verificatie van ClickUp zelf, geldt voor de TextMeFlow-kant van je integratie dezelfde regel: elke statusmelding die TextMeFlow terugstuurt (bijvoorbeeld "bezorgd" of "gefaald") komt met een eigen HMAC-signature in de header, die je moet verifiëren voor je ze verwerkt. De volledige uitleg staat in Verifying WhatsApp webhook signatures en in de webhooks-documentatie.

Houd ook rekening met de anti-spam-regels aan de verstuurkant: rate limits, een risicoscore per nummer en automatische STOP-verwerking zorgen ervoor dat je WhatsApp-nummer niet overbelast raakt, ook niet als een ClickUp-lijst plots tien statuswijzigingen per minuut doorstuurt.

Starten

Je hebt enkel een TextMeFlow API-key nodig om deze koppeling te bouwen. Het gratis plan geeft je 50 berichten per maand om de integratie te testen voor je overstapt naar een betaald plan.

Begin gratis met testen

Zelf WhatsApp-berichten versturen via API?

Gratis voor altijd tot 50 berichten/maand. QR scannen en binnen 5 minuten verstuur je je eerste bericht.

Gratis voor altijd