New to Kestra?
Use blueprints to kickstart your first workflows.
Turn won Pipedrive deals into delivery handoffs with Kestra. A webhook fetches full deal context, celebrates in Slack, and kicks off onboarding.
The moment a deal is marked won is the moment it leaves everyone's queue: sales is done, delivery has not started, and the customer is waiting. This blueprint gives that gap an owner. A webhook fires on the won event, io.kestra.plugin.pipedrive.deals.Get pulls the complete deal record so downstream steps work from full context rather than a bare id, Slack gets the celebration, and a clearly marked kickoff task shows exactly where your provisioning and onboarding subflows plug in.
won_deal_webhook trigger (io.kestra.plugin.core.trigger.Webhook) receives a JSON body carrying dealId, sent by a Pipedrive webhook or your billing system when a deal is marked won.get_deal (io.kestra.plugin.pipedrive.deals.Get, fetchType: FETCH_ONE) fetches the full record, exposing it as {{ outputs.get_deal.deal }} with fields such as title, value, and currency.celebrate posts the win to Slack with the title and closed value, announced from data the CRM confirmed rather than whatever the webhook happened to carry.kickoff_onboarding is a deliberate placeholder built on io.kestra.plugin.core.log.Log. In production you replace it with one or more io.kestra.plugin.core.flow.Subflow tasks that start provisioning, billing setup, and onboarding, passing the deal fields as subflow inputs so every downstream team receives the same facts.errors block posts a distinct Slack alert naming the deal whose handoff failed, and why that matters: a won deal that never reaches delivery is churn with a head start.The won-deal handoff is a workflow that crosses team boundaries, which is exactly where informal processes fail. Kestra makes it an executable contract: the event, the context fetch, the announcement, and the kickoff are one execution, and each downstream process is a subflow with its own history and retries. When onboarding asks what they were told about the deal, the answer is in the execution outputs.
dealId field.PIPEDRIVE_API_TOKEN: Pipedrive API token.SLACK_WEBHOOK_URL: Slack incoming webhook URL.key with a strong random value.{"dealId": 1} to the webhook URL using an existing deal id.kickoff_onboarding with Subflow tasks pointing at your provisioning flows.io.kestra.plugin.core.flow.Subflow tasks for provisioning, billing, and onboarding, passing {{ outputs.get_deal.deal.title }} and related fields as inputs.io.kestra.plugin.core.flow.If on the fetched deal status, so only genuinely won deals trigger delivery.io.kestra.plugin.pipedrive.deals.Update after kickoff to record that delivery has started.