Asana Task from Email or Form Intake
When an email arrives at an intake address or a Microsoft Form is submitted, the flow creates an Asana task in the right project/section with the details mapped, attaches files to the task, sets assignee and due date, and confirms to the requester. Turns inbound requests into structured Asana work.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow turns inbound email requests into structured Asana tasks. When a new email lands in the configured intake mail folder, the flow creates an Asana task with the request details mapped, sets the assignee and a due date, archives any attachments to SharePoint, and emails the requester a confirmation referencing the new task.
Why it matters: Requests that arrive by email get lost in inboxes. Capturing them as trackable, assignable Asana tasks removes manual ticket entry and gives the team one place to manage incoming work.
Status: Built and published as an unmanaged solution. Ships Off — going live requires only authorizing the three connections and setting the environment variable values.
Use Case
A team that runs its work in Asana wants email requests (to a monitored mailbox/folder) captured automatically as tasks in the right project, with the requester confirmed and any attachments archived for the record.
Flow Architecture
When a new email arrives (V3)
Office 365 Outlook — OnNewEmailV3Polls the intake mail folder every 3 minutes (includeAttachments = true, splitOn = body/value so each email fires its own run).
Initialize variables
Initialize VariableBind each environment variable (workspace, project, assignee, SharePoint site, archive path, due-days) to a working variable. Keeps connector references portable.
Compose Due Date
Composeyyyy-MM-dd due date = today + the configured day offset.
Compose Task Notes
ComposeBuilds the task description from the email sender, received time, subject and body preview.
Create Asana Task
Asana — CreateTaskCreates the task in the destination workspace/project with name, notes, due date and assignee.
Archive Attachments to SharePoint
Apply to each → SharePoint — CreateFileLoops over body/attachments and uploads each file to the archive library (filename prefixed with the Asana task id for traceability).
Send Confirmation Email
Office 365 Outlook — SendEmailV2Replies to the requester confirming the request was logged, including the new Asana task id.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_IntakeMailFolder | String | Inbox | Mailbox folder the trigger polls for new requests. |
| flowlibs_AsanaWorkspaceGid | String | <configure> | Asana workspace GID that owns the project. |
| flowlibs_AsanaProjectGid | String | <configure> | Destination Asana project GID for new tasks. |
| flowlibs_AsanaDefaultAssignee | String | me | Default task assignee (email / user id, or me). |
| flowlibs_IntakeTaskDueDaysOffset | String | 3 | Days from receipt used to compute the task due date. |
| flowlibs_SharePointSiteURL | String | https://your-tenant.sharepoint.com | SharePoint site hosting the attachment archive library. |
| flowlibs_IntakeArchiveLibraryPath | String | /Shared Documents/Email Intake Attachments | Server-relative library/folder path for archived attachments. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Office 365 Outlook | shared_office365 | OnNewEmailV3 SendEmailV2 |
| Asana | shared_asana | CreateTask |
| SharePoint | shared_sharepointonline | CreateFile |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Routing
- Branch on the email subject or sender to create tasks in different projects (swap flowlibs_AsanaProjectGid for a lookup or a Switch).
- Priority
- Set priority/labels from subject keywords (note: the Asana connector cannot set native priority; use a custom field via HTTP if needed).
- SLA
- Change flowlibs_IntakeTaskDueDaysOffset, or vary the offset by request type.
- Shared intake mailbox
- To monitor a true shared mailbox instead of a folder in the connected account, swap the trigger to SharedMailboxOnNewEmailV2 and supply the mailbox address via an env var (e.g. flowlibs_IntakeMailbox).
- Attach to the Asana task
- Add a built-in HTTP multipart POST /tasks/{id}/attachments (Asana token from Key Vault) inside the archive loop if attachments must live on the task itself.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Task name
Asana task name from the email subject.
EXPR.02Due date
Due date from the configured offset.
EXPR.03Task notes
Task description built from email fields.
EXPR.04Archive file name
Attachment filename prefixed with the Asana task id.
EXPR.05Attachment binary
Decode the attachment content for SharePoint upload.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.