🎫 Turn support calls into Zendesk tickets with WayinVideo, GPT-4o-mini, and Google Sheets

⚑ 10 views · 🎫 Ticket Management & Triage

Description

Description

Submit any customer support call recording URL along with the agent name, customer details, issue category, call date, and product name and the workflow transcribes and analyzes the full call automatically. WayinVideo’s Transcription API returns a speaker-labeled timestamped transcript which GPT-4o-mini reads to extract 10 structured fields β€” ticket subject, issue summary, root cause, resolution given, follow-up actions, key customer quotes, sentiment, priority, CSAT prediction, and tags. A Zendesk ticket is created via the REST API with the customer as the requester and the full structured summary as the ticket body, and every call is logged to Google Sheets with the Zendesk Ticket ID and URL. Built for customer support teams, customer success managers, and QA teams who record support calls and want structured tickets created automatically without manually listening to recordings after every call.


What This Workflow Does


Setup Requirements

Tools Needed

Credentials Required

> ⚠️ WayinVideo API key appears in 2 steps β€” replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo β€” Submit Transcription and 4. WayinVideo β€” Get Transcript Results. Missing either one will cause the workflow to fail.

> ⚠️ Three Zendesk placeholders in node 11 β€” replace YOUR_ZENDESK_SUBDOMAIN in both the URL and the Ticket URL column, YOUR_ZENDESK_EMAIL, and YOUR_ZENDESK_API_TOKEN in the Authorization header of 11. HTTP Request β€” Create Zendesk Ticket.

Estimated Setup Time: 25–30 minutes


Step-by-Step Setup

  1. Import the workflow β€” Open n8n β†’ Workflows β†’ Import from JSON β†’ paste the workflow JSON β†’ click Import

  2. Get your WayinVideo API key β€” Log in to your WayinVideo account β†’ go to Account Settings β†’ copy your API key

  3. Add your WayinVideo API key to node 2 β€” Open node 2. WayinVideo β€” Submit Transcription β†’ find the Authorization header value Bearer YOUR_WAYINVIDEO_API_KEY β†’ replace YOUR_WAYINVIDEO_API_KEY with your actual key

  4. Add your WayinVideo API key to node 4 β€” Open node 4. WayinVideo β€” Get Transcript Results β†’ find the same Authorization header β†’ replace YOUR_WAYINVIDEO_API_KEY with the same key

  5. Connect OpenAI β€” Open node 9. OpenAI β€” GPT-4o-mini Model β†’ click the credential dropdown β†’ add your OpenAI API key β†’ test the connection

  6. Get your Zendesk API token β€” Log in to Zendesk Admin Center β†’ go to Apps and Integrations β†’ APIs β†’ Zendesk API β†’ click Add API token β†’ give it a name β†’ copy the token (you can only see it once)

  7. Get your Zendesk subdomain β€” Your Zendesk subdomain is the part before .zendesk.com in your Zendesk URL β€” for example if your URL is mycompany.zendesk.com then your subdomain is mycompany

  8. Configure Zendesk credentials in node 11 β€” Open node 11. HTTP Request β€” Create Zendesk Ticket β†’ in the URL, replace YOUR_ZENDESK_SUBDOMAIN with your actual subdomain β†’ in the Authorization header value, replace YOUR_ZENDESK_EMAIL with the email address of your Zendesk agent account, replace YOUR_ZENDESK_API_TOKEN with the token you copied in step 6

  9. Create your Google Sheet tab β€” Open your Google Sheet β†’ add a tab named exactly Support Call Log β†’ add these 19 column headers in row 1: Call Date, Agent Name, Customer Name, Customer Email, Product, Issue Category, Issue Summary, Root Cause, Resolution Given, Follow-up Required, Sentiment, Priority, CSAT Prediction, Tags, Zendesk Ticket ID, Zendesk Ticket URL, Call Duration (min), Recording URL, Created On

  10. Get your Google Sheet ID β€” Open your Google Sheet in a browser β†’ copy the string between /d/ and /edit in the URL

  11. Connect Google Sheets β€” Open node 12. Google Sheets β€” Log Support Record β†’ click the document field β†’ replace YOUR_GOOGLE_SHEET_ID by selecting your spreadsheet or entering the Sheet ID manually β†’ also replace YOUR_ZENDESK_SUBDOMAIN in the Zendesk Ticket URL formula in this step β†’ click the credential dropdown β†’ add Google Sheets OAuth2 β†’ authorize access

  12. Activate the workflow β€” Toggle the workflow to Active β†’ copy the Form URL from node 1. Form β€” Support Call + Details β†’ open it in a browser to submit your first call


How It Works (Step by Step)

Step 1 β€” Form: Support Call + Details Your support agent opens the form URL and fills in seven fields: the call recording URL (Zoom, Loom, Google Meet, or any direct link), the agent name, the customer name, the customer email, the issue category (e.g. Billing, Technical Issue, Onboarding), the call date, and the product or service name. Submitting the form starts the workflow.

Step 2 β€” HTTP: WayinVideo β€” Submit Transcription The call recording URL is sent to WayinVideo’s Transcription API using the /v2/transcripts endpoint. WayinVideo accepts the job and returns a task ID. The transcription returns speaker-labeled segments β€” each with a speaker name, start time, end time, and spoken text.

Step 3 β€” Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to transcribe the full call.

Step 4 β€” HTTP: WayinVideo β€” Get Transcript Results A GET request checks the transcription results endpoint using the task ID from step 2. It returns the current status and, once complete, the full transcript array with each speaker-labeled segment.

Step 5 β€” IF: Transcription Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the transcript is ready and the workflow moves forward to formatting. If still processing (NO path), the workflow routes to 6. Wait β€” 30 Seconds Retry which pauses 30 seconds then loops back to step 4. This repeats until SUCCEEDED.

Step 6 β€” Wait: 30 Seconds Retry When the transcript is not yet ready, the workflow waits 30 seconds then returns to step 4 for another check.

Step 7 β€” Code: Format Transcript Each transcript segment is formatted as [Speaker | MM:SS] Spoken text and joined into a single readable block. Total call duration in minutes, unique speakers, and transcript word count are also calculated. All seven form inputs are packaged alongside the formatted transcript for the GPT prompt.

Step 8 β€” AI Agent: Extract Support Summary GPT-4o-mini receives the full formatted transcript as the main input and the call context (agent, customer, product, category, date, duration, recording URL) in the system prompt. It extracts 10 labeled sections: TICKET_SUBJECT (a specific 60–80 character subject line), ISSUE_SUMMARY (2–3 sentences of what the customer reported), ROOT_CAUSE (why it happened or β€œUnder investigation”), RESOLUTION_GIVEN (what was done or β€œUnresolved β€” escalation required”), FOLLOW_UP_REQUIRED (specific actions or β€œNone”), KEY_QUOTES (the most important things the customer said), SENTIMENT (one of five levels), PRIORITY (one of four levels based on tone and severity), CSAT_PREDICTION (a number 1–5), and TAGS (5–8 lowercase comma-separated tags).

Step 9 β€” OpenAI: GPT-4o-mini Model This is the language model powering the support analysis.

Step 10 β€” Code: Parse Support Output All 10 labeled sections are extracted from the GPT output using regex. The priority text is mapped to the exact Zendesk API priority value using a lookup table (urgent β†’ urgent, high β†’ high, normal β†’ normal, low β†’ low). A structured Zendesk ticket body is assembled with clear section headers β€” SUPPORT CALL SUMMARY, ISSUE SUMMARY, ROOT CAUSE, RESOLUTION GIVEN, FOLLOW-UP REQUIRED, KEY QUOTES FROM CUSTOMER, CALL INTELLIGENCE (sentiment, priority, CSAT), and TAGS β€” each on separate lines so the ticket is immediately readable in Zendesk.

Step 11 β€” HTTP: Create Zendesk Ticket A POST request creates the ticket in Zendesk via the REST API. The ticket includes the subject, the structured body, the customer’s name and email as the requester, the mapped Zendesk priority, the type set to β€œproblem”, and the tags array parsed from the GPT output. Zendesk returns the new ticket’s ID and other metadata.

Step 12 β€” Google Sheets: Log Support Record One row is appended to your Support Call Log tab with all 19 columns. The Zendesk Ticket ID comes from the API response. The Zendesk Ticket URL is constructed directly in the sheet formula as https://YOUR_ZENDESK_SUBDOMAIN.zendesk.com/agent/tickets/TICKET_ID so every row has a clickable link to the ticket. All other fields come from the parsed GPT output and form inputs.


Key Features

βœ… Speaker-labeled transcript passed to GPT β€” Each segment includes the speaker name and timestamp so GPT can distinguish between what the customer said and what the agent said when extracting quotes and sentiment βœ… CSAT prediction per call β€” Every ticket includes a predicted satisfaction score based on how the call ended β€” allowing your team to prioritize follow-ups before survey results come in βœ… Structured ticket body with section headers β€” The Zendesk ticket body is formatted with labeled sections so any agent opening the ticket can read the summary, root cause, and follow-up in seconds βœ… Customer set as ticket requester automatically β€” The ticket is opened with the customer’s email as the requester β€” not the agent’s β€” so Zendesk email threading works correctly from the first reply βœ… Priority mapped to Zendesk API values β€” GPT’s priority label is automatically converted to the exact lowercase value Zendesk expects in the API body β€” no manual conversion needed βœ… Zendesk Ticket URL in every sheet row β€” The log row includes a direct clickable link to the Zendesk ticket so QA and managers can jump from the sheet to the ticket in one click βœ… Tags parsed from GPT output and sent to Zendesk β€” The tags field from GPT is split, trimmed, and sent as a proper array in the Zendesk API body β€” making the ticket filterable immediately


Customisation Options

Add a retry limit to stop infinite polling β€” Before node 6. Wait β€” 30 Seconds Retry, add a Set step that increments a poll counter, then add a second IF check to stop after 15 polls and send a Gmail error notification to the agent instead of looping indefinitely.

Send a Slack notification when a high-priority ticket is created β€” After node 11. HTTP Request β€” Create Zendesk Ticket, add an IF check that triggers only when priority equals β€œurgent” or β€œhigh”, then add a Slack step that posts the ticket subject, customer name, and Zendesk URL to a #support-escalations channel.

Send a confirmation email to the agent β€” After node 12. Google Sheets β€” Log Support Record, add a Gmail step that sends the agent a plain-text email with the Zendesk ticket subject, ID, URL, and predicted CSAT so they have a record without opening the sheet.

Add a Zendesk assignee β€” In the JSON body of node 11. HTTP Request β€” Create Zendesk Ticket, add "assignee_id": YOUR_ZENDESK_AGENT_ID inside the ticket object to automatically assign every created ticket to a specific agent or team β€” get the agent ID from your Zendesk Admin Center.

Change the ticket type β€” In node 11. HTTP Request β€” Create Zendesk Ticket, change "type": "problem" to "type": "incident", "question", or "task" depending on the nature of the support calls you are logging β€” this affects how Zendesk categorizes and reports on the tickets.


Troubleshooting

Form submission not starting the workflow:

WayinVideo API key errors:

Workflow stuck in the polling loop:

Zendesk ticket not being created:

Google Sheets not saving the row:


Support

Need help setting this up or want a custom version built for your team or agency?

πŸ“§ Email: info@isawow.com 🌐 Website: https://isawow.com/

πŸ”— Nodes Used

Google Sheets, HTTP Request, AI Agent, OpenAI Chat Model, n8n Form Trigger

πŸ“₯ Import

Download workflow.json and import into n8n: Workflow menu β†’ Import from File

πŸ“– Importing guide Β· πŸ”‘ Credential setup