Emissão de ingressos

How to Create a Ticketing System with Google Forms

William Westerlund
June 25, 2025
Read time

Build Your Own Ticketing System with Google Forms

Transform Google's free tools into a functional support system. We'll show you exactly how to create, automate, and scale your ticketing workflow using Forms, Sheets, and Apps Script.

💡 What You'll Build
By the end of this guide, you'll have a complete ticketing system that automatically generates unique IDs, sends email notifications, tracks ticket status, and provides real-time dashboards. We'll also show you when it makes sense to upgrade to a professional solution.

Your Journey to a Complete Ticketing System

1
Basic Setup
2
Add Formulas
3
Automate
4
Scale Up

Phase 1: Building Your Basic Ticketing System

Let's start with the foundation. A ticketing system needs three core components: a way to collect requests (Google Forms), a place to store them (Google Sheets), and a method to track their status. We'll build this step by step.

Creating Your Intake Form

Interactive Form Builder

Click on fields to add them to your ticketing form

👤
Requester Name
Who's submitting the ticket
📧
Email Address
For updates and communication
📁
Issue Category
IT, HR, Facilities, etc.
🚨
Priority Level
Low, Medium, High, Critical
📝
Issue Description
Detailed explanation of the problem

Support Ticket Form

Preview of your form

Click fields on the left to build your form

Setting Up Your Google Form

Create Form
Add Sections
Add Logic
Connect Sheet

Step 1: Create Your Form

  1. Go to forms.google.com
  2. Click the "+" button to create a blank form
  3. Name it "Support Ticket System" or similar
  4. Add a description explaining response times
⚠️
File Upload Limitation
If you add a file upload field, users must be signed into a Google account. This can be a barrier for external customers.

Step 2: Create Sections for Better Flow

Sections help organize your form and enable conditional logic. Create these three sections:

  1. Section 1: "What would you like to do?" (Create or Close ticket)
  2. Section 2: "Create a New Ticket" (All ticket fields)
  3. Section 3: "Close an Existing Ticket" (Ticket ID and resolution)

To add a section, click the icon that looks like two rectangles on the right toolbar.

Step 3: Add Conditional Logic

Make your form smart by showing only relevant sections:

  1. On your first question, click the three dots menu
  2. Select "Go to section based on answer"
  3. Link "Create new ticket" → Section 2
  4. Link "Close existing ticket" → Section 3

Step 4: Connect to Google Sheets

This creates your ticket database:

  1. Click the "Responses" tab in your form
  2. Click the green Sheets icon
  3. Select "Create a new spreadsheet"
  4. Name it "Ticket Database"
Automatic Sync
Every form submission will automatically appear as a new row in your sheet!

Enhancing Your Spreadsheet

Your Google Sheet now captures form responses, but it needs additional columns to function as a proper ticketing system. Here's what to add:

🔢
Ticket ID: A unique identifier for each ticket (we'll automate this)
📊
Status: New, Open, In Progress, Pending, Closed
👤
Assigned To: Which team member owns this ticket
💬
Resolution Notes: How the issue was resolved
Closed Date: When the ticket was completed
⏱️
Time to Resolution: How long it took to close

Phase 2: Automating with Formulas

Manual ticket management becomes overwhelming quickly. Let's add automation using Google Sheets formulas to eliminate repetitive tasks and create live dashboards.

Automatic Ticket ID Generation

Ticket ID Formula Google Sheets
// Place this in cell A2 (assuming A1 is your header)
=ARRAYFORMULA(IF(ISBLANK(B2:B),, 
  "TID-" & TEXT(SEQUENCE(COUNTA(B2:B)), "0000")
))
💡 Pro Tip
This formula creates IDs like TID-0001, TID-0002 automatically. The SEQUENCE function ensures unique numbering even if rows are deleted. Never manually edit the response sheet to maintain data integrity!

Building a Dynamic Dashboard

Create a new sheet tab called "Dashboard" and add these powerful formulas to track your tickets in real-time:

Open Tickets Filter Google Sheets
// Shows all open tickets with their details
=FILTER('Form Responses 1'!A2:J, 
  'Form Responses 1'!H2:H="Open"
)
Average Resolution Time Google Sheets
// Calculates average time to close tickets (in hours)
=AVERAGE(FILTER(
  ('Form Responses 1'!K2:K - 'Form Responses 1'!B2:B) * 24, 
  'Form Responses 1'!H2:H="Closed"
))

Live Dashboard Preview

Your automated dashboard will look like this:

Ticket Dashboard - Google Sheets
24
Open Tickets
156
Closed This Month
4.2h
Avg. Resolution Time

Recent Tickets

ID Subject Status Assigned
TID-0024 Laptop won't connect to WiFi In Progress Sarah M.

Phase 3: Advanced Automation with Google Apps Script

While formulas enhance your system, Google Apps Script transforms it into a truly automated workflow. We'll add automatic email notifications, dynamic form updates, and event-driven actions.

⚠️
Technical Complexity Ahead
This section requires basic JavaScript knowledge. While powerful, these scripts need maintenance and debugging. Consider if this complexity is worth it for your use case.

Automatic Email Notifications

This script sends confirmation emails to users and notifies your support team instantly when tickets are created:

Email Notification Script JavaScript
function onFormSubmit(e) {
  // Configuration
  const supportEmail = "support@yourcompany.com";
  const formResponse = e.namedValues;
  
  // Generate unique ticket ID
  const ticketId = "TID-" + Utilities.getUuid().substring(0, 8);
  
  // Get submitted data
  const userEmail = formResponse['Email Address'][0];
  const subject = formResponse['Subject'][0];
  const priority = formResponse['Priority Level'][0];
  const description = formResponse['Description'][0];
  
  // Update spreadsheet with ticket ID
  const sheet = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName("Form Responses 1");
  const lastRow = sheet.getLastRow();
  sheet.getRange(lastRow, 1).setValue(ticketId);
  
  // Email templates
  const userEmailHtml = `
    <div style="font-family: Arial, sans-serif; max-width: 600px;">
      <h2 style="color: #303adc;">Ticket Received</h2>
      <p>Thank you for contacting support. We've received your request.</p>
      
      <div style="background: #f8f9fa; padding: 20px; border-radius: 10px; margin: 20px 0;">
        <p><strong>Ticket ID:</strong> ${ticketId}</p>
        <p><strong>Subject:</strong> ${subject}</p>
        <p><strong>Priority:</strong> ${priority}</p>
      </div>
      
      <p>We'll respond within 24 hours. For urgent issues, please call our hotline.</p>
    </div>
  `;
  
  // Send emails
  MailApp.sendEmail({
    to: userEmail,
    subject: `Ticket Created: ${ticketId}`,
    htmlBody: userEmailHtml
  });
  
  // Notify support team
  MailApp.sendEmail({
    to: supportEmail,
    subject: `New ${priority} Priority Ticket: ${subject}`,
    htmlBody: `New ticket submitted. <a href="${SpreadsheetApp.getActiveSpreadsheet().getUrl()}">View in Sheet</a>`
  });
}

Setting Up Script Triggers

Access Script Editor
Add Code
Create Trigger
Test & Debug

Access Google Apps Script

  1. Open your ticket spreadsheet
  2. Click Extensions → Apps Script
  3. Delete any existing code in the editor
  4. Give your project a name like "Ticket Automation"

Add Your Automation Code

  1. Copy the email notification script above
  2. Paste it into the script editor
  3. Update the supportEmail variable with your email
  4. Click the save icon (or Ctrl+S)

Create Form Submit Trigger

  1. Click the clock icon (Triggers) in the left sidebar
  2. Click "+ Add Trigger"
  3. Choose function: onFormSubmit
  4. Event source: "From spreadsheet"
  5. Event type: "On form submit"
  6. Click "Save" and authorize the script

Test Your Automation

  1. Submit a test ticket through your form
  2. Check your email for the confirmation
  3. Verify the ticket ID appears in your sheet
  4. If errors occur, check Executions in the script editor
🎉
Congratulations!
You now have an automated ticketing system that sends instant notifications!

Skip the Complexity with Suptask

While building your own system is educational, maintaining scripts and handling edge cases becomes a full-time job. Suptask gives you enterprise-grade ticketing directly in Slack, with zero setup complexity.

Try Suptask Free →

Phase 4: When to Upgrade Your System

Your DIY ticketing system can serve you well, but there are clear signals when it's time to consider professional alternatives.

The True Cost of "Free"

🔨

DIY Google System

What you're really paying

  • Zero license fees
  • Complete customization control
  • Hours of setup and maintenance
  • Script debugging nightmares
  • No SLA tracking
  • Manual collision detection
  • Limited scalability
Recommended

Google Workspace Add-ons

Enhanced functionality

  • Professional features
  • Stays in Google ecosystem
  • Form Approvals for workflows
  • Awesome Table for reporting
  • Vendor support included
  • Multiple subscriptions needed
  • Still requires coordination
🚀

Professional Helpdesk

When you've outgrown DIY

  • Enterprise-grade features
  • SLA management built-in
  • Multi-channel support
  • Advanced analytics
  • Team collaboration tools
  • Scales to thousands of tickets
  • Professional support

Signs You Need to Upgrade

🚨
Time to Upgrade When...
  • You're spending more time fixing scripts than helping customers
  • Your team has grown beyond 3-5 people
  • You need SLA tracking and compliance reporting
  • Customers expect professional support experiences
  • You're handling more than 50 tickets per week
  • The spreadsheet is becoming slow and unwieldy

Recommended Upgrade Path

1️⃣
For Email-Centric Teams: Try Hiver or Drag to manage tickets directly in Gmail without leaving your inbox
2️⃣
For Slack Users: Suptask transforms Slack into a professional helpdesk with zero learning curve
3️⃣
For Growing Teams: Zoho Desk or Freshdesk offer full-featured helpdesks with Google Workspace integration
4️⃣
For Enterprise: ServiceNow or Zendesk provide unlimited scalability and compliance features

Choose Your Path Wisely

Building a ticketing system with Google Forms teaches valuable lessons about workflow automation and system design. For very small teams or personal projects, it can be a perfectly adequate solution.

However, as your needs grow, the hidden costs of maintenance, debugging, and missing features quickly outweigh the "free" price tag. The time you spend maintaining scripts could be better spent serving customers.

💡 Our Recommendation
Start with the basic Google Forms setup to understand your needs. If you find yourself constantly tweaking scripts or your team is growing, graduate to a professional solution. Your future self (and your customers) will thank you.

Ready for Professional Ticketing?

If you're using Slack, skip the DIY headaches entirely. Suptask provides enterprise-grade ticketing that lives where your team already works, with powerful automation, SLA tracking, and zero maintenance required.

Start Free with Suptask →
William Westerlund

Get started with Suptask

14 Days Free Trial
No Credit Card Required
Get Started Easily
A Add to Slack
Experimente o Sistema de Emissão de Tickets do Slack Hoje
Não é necessário cartão de crédito