Asana
Receive Asana task events in Plural
An Asana webhook delivers Asana tasks into Plural. Each task becomes an issue record in Plural that a workbench can act on.
You can deliver tasks in two ways:
- Through a relay (recommended). Your own integration receives Asana's webhooks, fetches each task from the Asana API, and forwards the full task to Plural. Plural then sees the task's name, notes, and completion state, so triggers can match on them.
- Directly from Asana. Point an Asana webhook at the Plural URL. Plural answers Asana's handshake and verifies Asana's signatures, but Asana's events carry only the task ID, so every task is recorded with a placeholder title. See Direct delivery for what that allows.
A task does not start a job by itself. A job starts only when a webhook trigger on a workbench matches the task, and only when the task has just become open: a new open task, or a completed task that was marked incomplete again. Edits to a task that is already open do not start another job, and the same task starts at most one job per workbench in an hour.
What Plural reads from the payload
Plural accepts two payload shapes. Send the full task whenever you can:
{
"task": {
"gid": "1209876543210",
"name": "Checkout is down",
"notes": "500s from the payments service",
"permalink_url": "https://app.asana.com/0/1201234567890/1209876543210",
"completed": false
}
}gidbecomes the issue ID. Later payloads with the samegidupdate the existing record instead of creating a new one.nameandnotesbecome the issue title and body. Missing notes are stored as{empty}, and bodies longer than 10,000 characters are truncated.permalink_urlbecomes the link back to the task.completedsets the status:trueis completed, andfalseor missing is open.
gid, name, and permalink_url are required. A task without them is not recorded.
Plural also accepts Asana's own compact event format, {"events": [...]}. It reads only the first event in the list: