Cross-Provider Workflow

Slack Message to Airtable Record

Version 1.0.0

Read recent Slack messages, then log one as an Airtable record.

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

Providers Orchestrated

slack airtable

Workflows

message-to-record
Fetch Slack conversation history, then log a message to Airtable.
Retrieves the recent history of a Slack channel and creates an Airtable record capturing the most recent message text and timestamp.
2 steps inputs: baseId, slackChannel, tableIdOrName outputs: messageText, recordId
1
fetch-history
$sourceDescriptions.slackConversationsApi.getConversationsHistory
Fetch recent messages from the Slack channel.
2
log-record
$sourceDescriptions.airtableApi.createRecords
Log the latest Slack message as an Airtable record.

Source API Descriptions

Arazzo Workflow Specification

prod-slack-message-to-airtable-record-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Slack Message to Airtable Record
  summary: Read recent Slack messages, then log one as an Airtable record.
  description: >-
    A productivity and internal-ops workflow that pulls the recent history of a
    Slack conversation and logs the latest message as an Airtable record for
    triage and tracking. Demonstrates chaining a messaging provider and a
    database provider in a single Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: slackConversationsApi
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-conversations-openapi.yml
    type: openapi
  - name: airtableApi
    url: https://raw.githubusercontent.com/api-evangelist/airtable/refs/heads/main/openapi/airtable-airtable-api-openapi.yml
    type: openapi
workflows:
  - workflowId: message-to-record
    summary: Fetch Slack conversation history, then log a message to Airtable.
    description: >-
      Retrieves the recent history of a Slack channel and creates an Airtable
      record capturing the most recent message text and timestamp.
    inputs:
      type: object
      properties:
        slackChannel:
          type: string
        baseId:
          type: string
        tableIdOrName:
          type: string
    steps:
      - stepId: fetch-history
        description: Fetch recent messages from the Slack channel.
        operationId: $sourceDescriptions.slackConversationsApi.getConversationsHistory
        parameters:
          - name: channel
            in: query
            value: $inputs.slackChannel
          - name: limit
            in: query
            value: 1
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          messageText: $response.body#/messages/0/text
          messageTs: $response.body#/messages/0/ts
      - stepId: log-record
        description: Log the latest Slack message as an Airtable record.
        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:
                  Message: $steps.fetch-history.outputs.messageText
                  Timestamp: $steps.fetch-history.outputs.messageTs
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          recordId: $response.body#/records/0/id
    outputs:
      messageText: $steps.fetch-history.outputs.messageText
      recordId: $steps.log-record.outputs.recordId