Cross-Provider Workflow

Airtable Record to Asana Task to Slack Notification

Version 1.0.0

Create an Airtable record, open an Asana task from it, then post to Slack.

1 workflow 3 source APIs 3 providers
View Spec View on GitHub ArazzoWorkflowsCross-Provider

Providers Orchestrated

airtable asana slack

Workflows

record-to-task-to-slack
Create an Airtable record, create an Asana task, then notify Slack.
Creates a record in an Airtable table, uses the resulting record id to create an Asana task with the same name, and posts a message to a Slack channel announcing the new task.
3 steps inputs: asanaProjectId, baseId, itemName, slackChannel, tableIdOrName outputs: messageTs, recordId, taskId
1
create-record
$sourceDescriptions.airtableApi.createRecords
Create a tracking record in the Airtable table.
2
create-task
$sourceDescriptions.asanaTasksApi.createTask
Create an Asana task to track the new work item.
3
notify-slack
$sourceDescriptions.slackChatApi.postChatPostmessage
Post a Slack message announcing the new task.

Source API Descriptions

Arazzo Workflow Specification

prod-airtable-record-to-asana-task-to-slack-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Airtable Record to Asana Task to Slack Notification
  summary: Create an Airtable record, open an Asana task from it, then post to Slack.
  description: >-
    A productivity and internal-ops workflow that captures a new work item as an
    Airtable record, creates a corresponding Asana task to track the work, and
    posts a notification to a Slack channel so the team is aware. Demonstrates
    chaining a database provider, a task-management provider, and a messaging
    provider in a single Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: airtableApi
    url: https://raw.githubusercontent.com/api-evangelist/airtable/refs/heads/main/openapi/airtable-airtable-api-openapi.yml
    type: openapi
  - name: asanaTasksApi
    url: https://raw.githubusercontent.com/api-evangelist/asana/refs/heads/main/openapi/asana-tasks-api-openapi.yml
    type: openapi
  - name: slackChatApi
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-chat-openapi.yml
    type: openapi
workflows:
  - workflowId: record-to-task-to-slack
    summary: Create an Airtable record, create an Asana task, then notify Slack.
    description: >-
      Creates a record in an Airtable table, uses the resulting record id to
      create an Asana task with the same name, and posts a message to a Slack
      channel announcing the new task.
    inputs:
      type: object
      properties:
        baseId:
          type: string
        tableIdOrName:
          type: string
        itemName:
          type: string
        asanaProjectId:
          type: string
        slackChannel:
          type: string
    steps:
      - stepId: create-record
        description: Create a tracking record in the Airtable table.
        operationId: $sourceDescriptions.airtableApi.createRecords
        parameters:
          - name: baseId
            in: path
            value: $inputs.baseId
          - name: tableIdOrName
            in: path
            value: $inputs.tableIdOrName
        requestBody:
          contentType: application/json
          payload:
            records:
              - fields:
                  Name: $inputs.itemName
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          recordId: $response.body#/records/0/id
      - stepId: create-task
        description: Create an Asana task to track the new work item.
        operationId: $sourceDescriptions.asanaTasksApi.createTask
        requestBody:
          contentType: application/json
          payload:
            data:
              name: $inputs.itemName
              projects:
                - $inputs.asanaProjectId
              notes: $steps.create-record.outputs.recordId
        successCriteria:
          - condition: $statusCode == 201
        outputs:
          taskId: $response.body#/data/gid
      - stepId: notify-slack
        description: Post a Slack message announcing the new task.
        operationId: $sourceDescriptions.slackChatApi.postChatPostmessage
        requestBody:
          contentType: application/json
          payload:
            channel: $inputs.slackChannel
            text: $inputs.itemName
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          messageTs: $response.body#/ts
    outputs:
      recordId: $steps.create-record.outputs.recordId
      taskId: $steps.create-task.outputs.taskId
      messageTs: $steps.notify-slack.outputs.messageTs