Cross-Provider Workflow

Slack Search Mentions to Airtable and SendGrid Alert

Version 1.0.0

Search Slack for brand mentions, log them to Airtable, then email an alert via SendGrid.

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

Providers Orchestrated

slack airtable sendgrid

Workflows

slack-mentions-to-airtable-alert
Search Slack mentions, log to Airtable, email a SendGrid alert.
Searches Slack messages for a query, records the match count in Airtable, then emails the community team an alert referencing the new record.
3 steps inputs: baseId, query, tableIdOrName, teamEmail outputs: emailStatus, recordId, totalMatches
1
search-mentions
$sourceDescriptions.slackSearchApi.getSearchMessages
Search Slack messages for brand mentions.
2
log-to-airtable
$sourceDescriptions.airtableApi.createRecords
Record the mention search results in Airtable.
3
email-alert
$sourceDescriptions.sendgridApi.SendMail
Email the community team an alert via SendGrid.

Source API Descriptions

Arazzo Workflow Specification

soc-slack-search-mentions-to-airtable-sendgrid-alert-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Slack Search Mentions to Airtable and SendGrid Alert
  summary: Search Slack for brand mentions, log them to Airtable, then email an alert via SendGrid.
  description: >-
    A social-listening workflow that searches Slack messages for brand mentions,
    records a summary in an Airtable base, and emails the community team an alert
    through SendGrid Mail Send. Demonstrates monitoring team conversations and
    escalating findings to a database and email in one Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: slackSearchApi
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-search-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
  - name: sendgridApi
    url: https://raw.githubusercontent.com/api-evangelist/sendgrid/refs/heads/main/openapi/tsg_mail_v3.yaml
    type: openapi
workflows:
  - workflowId: slack-mentions-to-airtable-alert
    summary: Search Slack mentions, log to Airtable, email a SendGrid alert.
    description: >-
      Searches Slack messages for a query, records the match count in Airtable,
      then emails the community team an alert referencing the new record.
    inputs:
      type: object
      properties:
        query:
          type: string
        baseId:
          type: string
        tableIdOrName:
          type: string
        teamEmail:
          type: string
    steps:
      - stepId: search-mentions
        description: Search Slack messages for brand mentions.
        operationId: $sourceDescriptions.slackSearchApi.getSearchMessages
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          matches: $response.body#/messages/matches
          totalMatches: $response.body#/messages/total
      - stepId: log-to-airtable
        description: Record the mention search results in Airtable.
        operationId: $sourceDescriptions.airtableApi.createRecords
        requestBody:
          contentType: application/json
          payload:
            records:
              - fields:
                  Query: $inputs.query
                  TotalMatches: $steps.search-mentions.outputs.totalMatches
                  Source: Slack
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          recordId: $response.body#/records/0/id
      - stepId: email-alert
        description: Email the community team an alert via SendGrid.
        operationId: $sourceDescriptions.sendgridApi.SendMail
        requestBody:
          contentType: application/json
          payload:
            personalizations:
              - to:
                  - email: $inputs.teamEmail
                subject: New Slack mentions detected
            from:
              email: [email protected]
            content:
              - type: text/plain
                value: Mentions for $inputs.query logged to Airtable record $steps.log-to-airtable.outputs.recordId
        successCriteria:
          - condition: $statusCode == 202
        outputs:
          emailStatus: $statusCode
    outputs:
      totalMatches: $steps.search-mentions.outputs.totalMatches
      recordId: $steps.log-to-airtable.outputs.recordId
      emailStatus: $steps.email-alert.outputs.emailStatus