Webhook tasks

Workflow plans can be configured to POST data to Webhook endpoints, either your organization's custom infrastructure, or other cloud apps that provide Incoming Webhook support.

Overview

Workflows can include Webhook tasks, that once available, will send an out-bound contextual payload to a pre-configured URL. These tasks can be included in any of your Workflow plans (onboarding, offboarding, vendor workflows, etc).

Tasks in a workflow are available if it is past their "Start after" date, or when all the tasks they depend upon have been completed, unblocking them from execution. This allows you to more carefully time when your Webhook tasks can fire. Otherwise, they will fire by default the moment your Workflow is launched.

Use Cases

🎉 Announce new hires in Slack.

Want to socialize when you are kicking off an employee onboarding, offboarding, or vendor renewal/termination? Follow our Triggering Zapier guide for a practical walk through. You can use Zapier to invite newly onboarded employees to specific Slack channels too!

✉️ Send additional instructions to new hires via email.

Using Zapier as a middleman, send additional forms of emails to new hires to sign via DocuSign.

🎟️ Create tickets/tasks in service desks or support systems.

This can be really useful to bridge to existing processes and create tickets in other key business systems. Using Zapier as an intermediary you can use a webhook in Blissfully to:

  • Create tickets in JIRA, Zendesk, or Freshservice

  • Create and/or update tasks in Asana

  • Create cards or add onboarded employees to cards in Trello

👤 Automatically provision users into internal/external systems.

Either directly communicate to your internal APIs and/or bridge to external APIs, you can use Webhook tasks in Onboarding Workflows to trigger the creation of new users. Certain apps can be triggered via Zapier as well.

📫 Post new vendor information to an external asset tracker.

Record vendor approval workflow events in other systems, or even a partner's system.

📅 Add compliance events to an external calendar.

Using Zapier, you create new calendar events to record when certain actions were taken.

📣 Socialize new tools as they are adopted

Announce life-cycle events for vendors to the broader organization so folks can keep a pulse on the tech inventory changes.

Adding a Webhook Task to a Plan

To use Webhook Tasks, you must configure a Webhook integration. If you have done so, please see the Webhook Integration instructions.

From any Workflow Plan, you may add a Webhook Task. (Note: if you haven't yet configured a Webhook Integration, you'll be asked to set one up first. Learn how to create an Outbound Webhook here.)

A Webhook Task needs only be told which particular named Webhook you wish to send a payload to. You may then choose to configure which other tasks in the plan block the Webhook task - it will only execute after those tasks are completed. Additionally, you can specify a "Start after" date, anchored around a workflow-relevant event. The Webhook task will not execute before this date.

Blissfully's Webhook tasks can be used with Zapier or with custom code to trigger actions in other applications as a part of any of Blissfully's workflow types.

Payload Format (v1)

Webhook Tasks will send an HTTPPOST request with a JSON body at the moment of execution.

post
Webhook Task - Execute

https://webhook-integration-url/path
A Webhook Task will send the following request with a JSON body at the moment of execution. The status code your Webhook URL responds with determines how Blissfully
Request
Response
Request
Headers
X-Signature
optional
string
If the Webhook being posted too has a Secret configured, this header will contain a hash value confirming Blissfully produced the payload
Body Parameters
task
required
object
Key information concerning the task, and the workflow it belongs to.
action
required
string
The action being taken on the entity described by the payload
entity
required
string
The type of Blissfully entity the payload describes
version
required
string
The payload version
Response
200: OK
If your endpoint returns this status, the Workflow Task will successfully be marked "Completed". (Any other status will place the task in a state of error, notifying all interested parties of the problem by email)

Example payloads:

Onboarding
Offboarding
Vendor
Simple
App Access
Onboarding
{
"version": "v1",
"entity": "task",
"action": "execute",
"task": {
"id": "abcd-1234",
"dependencies": [],
"workflow": {
"id": "xyz-098",
"type": "Onboarding",
"title": "Onboarding Saasha Bliss",
"launchedAt": "2020-04-14T21:35:44.774Z",
"viewUrl": "https://app.blissfully.com/#/workflow/xyz-098",
"ticket": {
"id": "xyz-099",
"launchedAt": "2020-04-14T21:35:44.774Z",
"viewUrl": "https://app.blissfully.com/#/ticket/xyz-099",
"requestedBy": {
"id": "efgh-5678",
"primaryEmail": "sbliss@blissfully.com",
"fullName": "Saasha Bliss"
}
}
"details": {
"subject": {
"onboardee": {
"id": "efgh-5678",
"primaryEmail": "sbliss@blissfully.com",
"fullName": "Saasha Bliss",
"startDate": "2020-04-14T21:35:44.774Z"
}
},
"teams": [
{
"id": "orne-2842",
"name": "IT Team",
"lead": {
"fullName": "Ariel Diaz",
"primaryEmail": "ariel@blissfully.com"
}
}
]
}
}
}
}
Offboarding
{
"version": "v1",
"entity": "task",
"action": "execute",
"task": {
"id": "abcd-1234",
"dependencies": [],
"workflow": {
"id": "xyz-098",
"type": "Offboarding",
"title": "Offboarding Saasha Bliss",
"launchedAt": "2020-04-14T21:35:44.774Z",
"viewUrl": "https://app.blissfully.com/#/workflow/xyz-098",
"ticket": {
"id": "xyz-099",
"launchedAt": "2020-04-14T21:35:44.774Z",
"viewUrl": "https://app.blissfully.com/#/ticket/xyz-099",
"requestedBy": {
"id": "efgh-5678",
"primaryEmail": "sbliss@blissfully.com",
"fullName": "Saasha Bliss"
}
}
"details": {
"offboardee": {
"id": "efgh-5678",
"primaryEmail": "sbliss@blissfully.com",
"fullName": "Saasha Bliss",
"lastDate": "2020-04-14T21:35:44.774Z"
},
"teams": [
{
"id": "orne-2842",
"name": "IT Team",
"lead": {
"fullName": "Ariel Diaz",
"primaryEmail": "ariel@blissfully.com"
}
}
]
}
}
}
}
Vendor
{
"version": "v1",
"entity": "task",
"action": "execute",
"task": {
"id": "abcd-1234",
"dependencies": [],
"workflow": {
"id": "xyz-098",
"type": "Vendor Approval", //Vendor Renewal, Vendor Termination
"title": "Vendor Approval for AcmeCorp",
"launchedAt": "2020-04-14T21:35:44.774Z",
"viewUrl": "https://app.blissfully.com/#/workflow/xyz-098",
"ticket": {
"id": "xyz-099",
"launchedAt": "2020-04-14T21:35:44.774Z",
"viewUrl": "https://app.blissfully.com/#/ticket/xyz-099",
"requestedBy": {
"id": "efgh-5678",
"primaryEmail": "sbliss@blissfully.com",
"fullName": "Saasha Bliss"
}
}
"details": {
"subject": {
"vendor": {
"id": "efgh-5678",
"name": "AcmeCorp"
"nextRenewalDate": "2020-04-14T21:35:44.774Z"
}
}
}
}
}
}
Simple
{
"version": "v1",
"entity": "task",
"action": "execute",
"task": {
"id": "abcd-1234",
"dependencies": [],
"workflow": {
"type": "Simple", //Vendor Renewal, Vendor Termination
"title": "My Simple Workflow",
"id": "xyz-098"
"viewUrl": "https://app.blissfully.com/#/workflow/xyz-098",
"ticket": {
"id": "xyz-099",
"launchedAt": "2020-04-14T21:35:44.774Z",
"viewUrl": "https://app.blissfully.com/#/ticket/xyz-099",
"requestedBy": {
"id": "efgh-5678",
"primaryEmail": "sbliss@blissfully.com",
"fullName": "Saasha Bliss"
}
}
}
}
}
App Access
{
"version": "v1",
"entity": "task",
"action": "execute",
"task": {
"id": "abcd-1234",
"dependencies": [],
"workflow": {
"id": "xyz-098",
"type": "App Access",
"title": "App Access for AcmeCorp",
"launchedAt": "2020-04-14T21:35:44.774Z",
"viewUrl": "https://app.blissfully.com/#/workflow/xyz-098",
"ticket": {
"id": "xyz-099",
"launchedAt": "2020-04-14T21:35:44.774Z",
"viewUrl": "https://app.blissfully.com/#/ticket/xyz-099",
"requestedBy": {
"id": "efgh-5678",
"primaryEmail": "sbliss@blissfully.com",
"fullName": "Saasha Bliss"
}
}
"details": {
"app": {
"id": "efgh-5678",
"name": "AcmeCorp"
}
"person": {
"id": "efgh-5678",
"primaryEmail": "sbliss@blissfully.com",
"fullName": "Saasha Bliss"
}
}
}
}
}