Connector · Tasks and projects
Asana, in every client’s workflows.
Create a task, update a task, or start when a task is added to a project, with the client’s own Asana account.
- Triggers
- 2start a workflow
- Actions
- 2steps in a workflow
Start a workflow when something happens in AsanaBeta
By webhook where Asana sends one, by checking where it does not. A webhook is checked once a day to see it is still on, and if Asana turns it off the alert carries a Reconnect button.
- A task is added to a projectPolledA new task in a project, checked every 5 minutes.
- A task is completedPolledA task in a project marked complete, checked every 5 minutes; once per task.
Do it in Asana
A step with its own fields: values from the run go in by name, and what Asana answers is there for the next step.
- Create a taskA task in a project.
- Update a taskComplete a task, rename it, change its notes, due date or assignee, found by id. Only the fields set are changed.
Connect the client’s Asana
On the client’s page in Thrum: Add credential, type Asana personal access token.
app.asana.com/0/my-apps → Create new token (signed in to the client’s Asana).
The key is stored encrypted and bound to that client: another client’s workflow cannot use it, and no template or pack copies it.
Via HTTP
Or by web request: create a task in a project
Each enquiry becomes a task in the client’s project, for whoever picks it up. The web request step, filled in: paste it, swap in the client’s ids, add their key.
01
Add the client’s credential
On the client’s page in Thrum: Add credential, type API key. Signed in to the client’s Asana: app.asana.com/0/my-apps → Create new token → copy.
{ "api_key": "2/…" }02
Add a web request step
Name it “Add an Asana task”, set it as here, and pick the credential. Values in double braces are read from the run: here, the lead the form brought in.
- PROJECT_ID
- The long number in the project’s address: app.asana.com/0/<project>/….
{ "method": "POST", "url": "https://app.asana.com/api/1.0/tasks", "headers": { "Authorization": "Bearer {{ credential.api_key }}" }, "body": { "data": { "name": "{{ lead.name }}: {{ lead.summary }}", "notes": "{{ lead.phone }} · {{ lead.email }}", "projects": [ "PROJECT_ID" ] } } }03
What goes out, and what comes back
The token acts as the person who made it: use an account that can see the project.
POST https://app.asana.com/api/1.0/tasks content-type: application/json authorization: Bearer •••••••• { "data": { "name": "Nadia Karim: Quote for a new bathroom, two basins and a shower", "notes": "+447700900222 · nadia@example.com", "projects": [ "PROJECT_ID" ] } }201 { "data": { "gid": "1208000000000001", "resource_type": "task", "name": "Nadia Karim: Quote for a new bathroom, two basins and a shower" } }
Watched like everything else
When Asana stops answering or refuses the client’s key, you hear about it, and your client does not.
- A failing request
- Tried 3 times, 5 seconds apart and doubling, only for errors a retry can fix
- A service that asks for a pause
- Given it, up to an hour
- Requests at once, per account
- 2, per worker; the rest wait their turn
- Timeout
- 15 seconds, unless the step sets its own
- Private and internal addresses
- Refused, on every redirect too
- The client’s key
- Encrypted, bound to the client, and kept out of every run record
- A step that keeps failing
- Marks the workflow Degraded and alerts you, not the client
More in Tasks and projects
Create a task, update a task, or start when a task is added to a list2 actions · 2 triggers
Create an issue, update an issue, or start when an issue is opened2 actions · 2 triggers
Create an item, change a column, or start when an item is added to a board2 actions · 2 triggers
Add a card to a list1 actionVia HTTP
Asana and its logo are trademarks of their owner, used here only to say what Thrum works with; no endorsement is implied.
Thrum is cooking.
Get early access and you’ll be among the first in. Early members get a launch perk.