Create icon
Create icon
SlackIncomingWebhook icon
Webhook icon

Route Signup Leads into Pipedrive in Real Time with a Webhook

Capture signup form leads into Pipedrive in real time with a Kestra webhook. Create the person and a linked deal instantly and confirm each lead in Slack.

Categories
Business

Every minute between a signup and a CRM record is a minute nobody follows up. This blueprint replaces the usual point-to-point automation tool with a single Kestra flow: a webhook receives the form payload, io.kestra.plugin.pipedrive.persons.Create writes the contact, io.kestra.plugin.pipedrive.deals.Create opens a deal linked to that person through the task's personId output, and Slack confirms the routed lead with both ids. Zero polling, zero latency, and the whole chain is visible in one execution.

How it works

  1. The signup_webhook trigger (io.kestra.plugin.core.trigger.Webhook) exposes a URL your form backend POSTs to. The JSON body is available as {{ trigger.body }}.
  2. create_person (io.kestra.plugin.pipedrive.persons.Create) creates the contact. Null-coalescing fallbacks (??) on name and email mean a partial submission still produces a record instead of a failed execution.
  3. create_deal (io.kestra.plugin.pipedrive.deals.Create) opens an open-status deal titled after the company or contact, linked through personId: {{ outputs.create_person.personId }} so the person and deal are joined from the first second.
  4. notify posts the new personId and dealId to Slack, so the pipeline channel doubles as a live lead feed.
  5. The errors block posts a distinct Slack alert whenever routing fails, because a silently dropped signup is the most expensive kind of bug.

What you get

  • Lead routing measured in seconds, not sync intervals.
  • A person and a deal created atomically in one execution, always linked, never orphaned.
  • Fallback values that keep incomplete form payloads from blocking intake.
  • A full execution history of every lead that ever entered the pipeline, with the exact payload that created it.

Who it's for

  • Revenue operations teams replacing per-seat automation tools with orchestration they already run.
  • Growth teams whose signup forms feed sales and who need the handoff to be instant.
  • Anyone who has debugged a missing lead across three SaaS tools and wants one place to look instead.

Why orchestrate this with Kestra

A form-to-CRM zap hides its failures inside someone else's dashboard. Kestra makes the same integration a first-class flow: the webhook payload, the person creation, the deal creation, and the Slack confirmation are one auditable execution, with retries, error alerting, and the option to extend the chain with enrichment, scoring, or routing logic in plain YAML.

Prerequisites

  • A Pipedrive account and API token.
  • A form backend able to POST JSON with name, email, and optionally company and plan_value fields.
  • A Slack incoming webhook for confirmations and failure alerts.

Secrets

  • PIPEDRIVE_API_TOKEN: Pipedrive API token.
  • SLACK_WEBHOOK_URL: Slack incoming webhook URL.

Quick start

  1. Add both secrets to your Kestra namespace.
  2. Replace the webhook key with a strong random value.
  3. POST a test payload such as {"name": "Ada Lovelace", "email": "ada@example.com", "company": "Analytical Engines"} to the webhook URL.
  4. Check Pipedrive for the linked person and deal, and Slack for the confirmation message.

How to extend

  • Set stageId, userId, or orgId on create_deal to route leads to a specific pipeline stage or owner.
  • Add phone capture with the phones property on create_person, using the same value, primary, and label structure as emails.
  • Insert an enrichment or lead-scoring task between the webhook and the Pipedrive tasks, then set the deal value from its output.
  • Branch with io.kestra.plugin.core.flow.If on a form field to route enterprise leads differently from self-serve ones.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.