Cross-Provider Workflow

Ticket Resolved to Satisfaction Survey Email

Version 1.0.0

Resolve a Zendesk ticket, record a satisfaction rating, and email a survey.

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

Providers Orchestrated

zendesk sendgrid

Workflows

resolved-to-survey
Solve a ticket, rate it, and email a satisfaction survey.
Updates a Zendesk ticket to solved, creates a satisfaction rating record for it, then emails the requester a satisfaction survey via SendGrid.
3 steps inputs: fromEmail, requesterEmail, surveyComment, ticketId outputs: emailStatus, ratingId, ticketStatus
1
solve-ticket
$sourceDescriptions.zendeskTickets.UpdateTicket
Update the Zendesk ticket to a solved status.
2
rate-ticket
$sourceDescriptions.zendeskTickets.CreateTicketSatisfactionRating
Create a satisfaction rating record for the resolved ticket.
3
email-survey
$sourceDescriptions.sendgridMail.SendMail
Email the requester a satisfaction survey via SendGrid.

Source API Descriptions

Arazzo Workflow Specification

itsm-ticket-resolved-survey-email.yml Raw ↑
arazzo: 1.0.1
info:
  title: Ticket Resolved to Satisfaction Survey Email
  summary: Resolve a Zendesk ticket, record a satisfaction rating, and email a survey.
  description: >-
    A cross-provider ITSM workflow that marks a Zendesk ticket solved, attaches a
    satisfaction rating record, and emails the requester a follow-up satisfaction
    survey via SendGrid. Demonstrates orchestrating a support desk and a
    transactional email provider across the ticket resolution lifecycle in a
    single Arazzo workflow.
  version: 1.0.0
sourceDescriptions:
  - name: zendeskTickets
    url: https://raw.githubusercontent.com/api-evangelist/zendesk/refs/heads/main/openapi/tickets-openapi-original.yml
    type: openapi
  - name: sendgridMail
    url: https://raw.githubusercontent.com/api-evangelist/sendgrid/refs/heads/main/openapi/tsg_mail_v3.yaml
    type: openapi
workflows:
  - workflowId: resolved-to-survey
    summary: Solve a ticket, rate it, and email a satisfaction survey.
    description: >-
      Updates a Zendesk ticket to solved, creates a satisfaction rating record
      for it, then emails the requester a satisfaction survey via SendGrid.
    inputs:
      type: object
      properties:
        ticketId:
          type: integer
        requesterEmail:
          type: string
        fromEmail:
          type: string
        surveyComment:
          type: string
    steps:
      - stepId: solve-ticket
        description: Update the Zendesk ticket to a solved status.
        operationId: $sourceDescriptions.zendeskTickets.UpdateTicket
        requestBody:
          contentType: application/json
          payload:
            ticket:
              status: solved
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          ticketId: $response.body#/ticket/id
          ticketStatus: $response.body#/ticket/status
      - stepId: rate-ticket
        description: Create a satisfaction rating record for the resolved ticket.
        operationId: $sourceDescriptions.zendeskTickets.CreateTicketSatisfactionRating
        requestBody:
          contentType: application/json
          payload:
            satisfaction_rating:
              score: good
              comment: $inputs.surveyComment
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          ratingId: $response.body#/satisfaction_rating/id
      - stepId: email-survey
        description: Email the requester a satisfaction survey via SendGrid.
        operationId: $sourceDescriptions.sendgridMail.SendMail
        requestBody:
          contentType: application/json
          payload:
            personalizations:
              - to:
                  - email: $inputs.requesterEmail
                subject: How did we do?
            from:
              email: $inputs.fromEmail
            content:
              - type: text/plain
                value: Your ticket is resolved. Please rate your support experience.
        successCriteria:
          - condition: $statusCode == 202
        outputs:
          emailStatus: $statusCode
    outputs:
      ticketStatus: $steps.solve-ticket.outputs.ticketStatus
      ratingId: $steps.rate-ticket.outputs.ratingId
      emailStatus: $steps.email-survey.outputs.emailStatus