There's a particular kind of anxiety that comes with running a shared support@yourcompany.com inbox. You never know if someone already replied to that customer's bug report. You have no idea if that critical production issue from Tuesday was ever actually resolved. You can't tell who's responsible for what, and there's no record of how long any of this took.
For early-stage teams, a Gmail inbox handles this okay — when there are three of you and two emails per day. But somewhere around ten team members and twenty inbound requests per week, the chaos becomes expensive. Issues slip through. The same customer emails three times. Engineers spend time triaging emails instead of writing code. There's no data to tell you whether your support is getting better or worse.
Email ticketing solves this by giving every inbound email a ticket number, an owner, a status, and a timestamp. It transforms a chaotic inbox into a structured queue where nothing gets lost, every request is accountable, and you can measure your team's responsiveness over time.
This guide walks through the complete setup — connecting Gmail, configuring routing and automation, building a canned response library, enabling CSAT surveys, and setting SLA rules. The examples use Resolvo, but the concepts apply to any ticketing system you choose. By the end, you'll have a production-ready email ticketing setup that took less than 30 minutes to build.
What Is Email Ticketing and Why Engineering Teams Need It
Email ticketing is the practice of converting inbound emails into structured support tickets that are tracked through a workflow from receipt to resolution. Instead of living as a thread in Gmail, each email becomes a record with a unique ID, assignee, priority, status, SLA clock, and audit trail.
Engineering teams in particular benefit from ticketing because their support requests are often technical and complex — a customer-reported bug might need to be reproduced, triaged, turned into a development issue, fixed in a branch, deployed, and confirmed. Without a structured ticket linking all these steps together, you lose the thread between "customer reported X" and "engineer deployed fix for X."
Here's what email ticketing gives you that a shared inbox cannot:
- No duplicate responses: When one agent opens a ticket, others see it's claimed. No more two people replying to the same email with conflicting information.
- Accountability: Every ticket has an owner. If something isn't resolved, it's clear whose queue it's sitting in.
- SLA tracking: You can set rules like "first response within 4 hours for priority bugs" and see in real time which tickets are at risk of breaching.
- Customer history: See every previous conversation with a customer in one timeline, not scattered across multiple thread views in Gmail.
- Metrics: First response time, resolution time, CSAT score — data that helps you improve support quality over time.
"We had 47 emails in our support inbox that were technically 'open' but nobody knew who was responsible for any of them. Setting up ticketing took us 20 minutes. We cleared the backlog in two days." — Engineering Lead, B2B SaaS startup
Step 1 — Connect Your Gmail Inbox
The foundation of email ticketing is the inbox connection. This is a one-time OAuth authorization that lets your ticketing system monitor a mailbox, create tickets from inbound emails, and send replies that appear to come from your support address.
Before you connect
Decide which email address will be your support inbox. The best setups use a dedicated address (support@yourcompany.com or help@yourcompany.com) rather than a personal address. If you don't have one yet, create a Google Workspace alias or a separate Gmail account before proceeding. This keeps your support volume separate from your personal email and makes it easier to hand off to team members later.
Connecting in Resolvo
- Go to Settings → Email Ticketing → Inboxes
- Click Connect Gmail
- Authorize with the Google account that owns your support inbox
- Select which labels to monitor (default: all mail; recommended: create a
Supportlabel in Gmail and filter support@yourcompany.com emails into it) - Set the default project that new tickets will be created in
- Click Save
Within about 60 seconds, you'll see existing unread emails from your inbox appear as new tickets in your queue. From this point on, any email to your support address will become a ticket automatically.
Create a Gmail filter that applies a Support-Ticketed label to all emails after they're ingested. This gives you a clean way to archive processed threads in Gmail while keeping the ticket as your source of truth in Resolvo.
What happens when an email arrives
When a new email lands in your connected inbox, the system does four things automatically:
- Creates a ticket with the email subject as the title and email body as the description
- Associates the sender's email address with a contact record (new or existing)
- Applies default priority (configurable — see Step 2)
- Sends an auto-acknowledgment to the customer with their ticket number
The auto-acknowledgment is important: it tells the customer their message was received and gives them a reference number they can use in follow-up emails. Customers who get an immediate acknowledgment are significantly less likely to send a follow-up "did you receive my email?" message — which saves you two touches per ticket.
Step 2 — Configure Smart Queue and Auto-Assignment
A connected inbox that dumps all tickets into an unassigned queue is better than a shared inbox, but it's not much better. Smart queue configuration is what turns raw ticket volume into an organized, actionable workflow.
Auto-assignment rules
Go to Settings → Email Ticketing → Assignment Rules. You can create rules based on:
- Keywords in subject or body: Tickets containing "billing" → assign to finance team; tickets containing "API" or "integration" → assign to the integrations engineer
- Sender domain: Emails from enterprise customers → assign to their dedicated account manager or senior engineer
- Round-robin: Distribute tickets evenly across all available agents in a group
- Sender history: If a customer has an open ticket, route their new email as a reply to that ticket rather than creating a duplicate
For most small teams, a simple round-robin rule for the general queue plus a few keyword-based escalation rules covers 90% of routing needs. Don't over-engineer this — you can always add rules as patterns emerge.
Priority auto-classification
Set default priority rules based on language patterns. Some useful starting rules:
- Email contains "urgent", "down", "outage", "broken", "can't login", "blocked" → High priority
- Email contains "question", "how do I", "where can I", "feature request" → Low priority
- All others → Normal priority
Resolvo's AI triage can do this automatically by analyzing the full semantic content of the email — not just keyword matching. Enable it under Settings → AI Features → Smart Priority. It's worth turning on even if you adjust the suggestions manually at first; it learns from your corrections.
Create a weekly 15-minute calendar block for queue review. Check for tickets older than 48 hours without a response, tickets assigned to people who are OOO, and tickets marked "waiting on customer" where the customer hasn't replied in 5+ days. This prevents queue rot before it becomes a problem.
Step 3 — Set Up Canned Responses for Fast Replies
Canned responses (also called macros or templates) are pre-written reply templates for common situations. They're one of the highest-leverage investments in email ticketing: a library of 15–20 good templates can reduce your average reply time from 8 minutes to 90 seconds.
The essential canned responses every engineering team needs
Go to Settings → Email Ticketing → Canned Responses → New Template. Start with these:
1. Initial triage acknowledgment
Template: "Ticket received — investigating"
Hi {{customer.first_name}},
Thanks for reaching out. I've received your report about {{ticket.subject}}
and I'm investigating now.
I'll have an update for you within {{sla.first_response_deadline}}.
Ticket reference: #{{ticket.id}}
— {{agent.name}}, {{company.name}} Engineering
2. Needs more information
Template: "Need more info to reproduce"
Hi {{customer.first_name}},
Thanks for the report. To investigate further, I need a few details:
1. Which browser/OS/app version are you seeing this on?
2. Steps to reproduce (what did you click, in what order)?
3. Does it happen every time, or intermittently?
4. Any error messages or screenshots you can share?
A screen recording is incredibly helpful if you can capture it.
— {{agent.name}}
3. Bug confirmed, fix in progress
Template: "Bug confirmed — fix in progress"
Hi {{customer.first_name}},
I've confirmed this is a bug on our end — thanks for the clear reproduction steps.
Our engineering team is working on a fix. I'll follow up as soon as it's deployed.
You can track progress here: {{ticket.url}}
Estimated resolution: {{custom.estimated_fix_date}}
Apologies for the disruption.
— {{agent.name}}
4. Resolution confirmation
Template: "Issue resolved — please confirm"
Hi {{customer.first_name}},
Good news — the fix for {{ticket.subject}} is now deployed.
Could you try again and let me know if everything is working as expected?
If you encounter any further issues, just reply to this email and we'll
reopen the ticket immediately.
— {{agent.name}}
Build your canned response library incrementally. After the first 50 tickets, you'll have a clear picture of the 5–6 most common request types — those are the ones worth templating. Don't build 40 templates up front; most will never get used.
Step 4 — Enable CSAT Surveys
CSAT (Customer Satisfaction) surveys are short post-resolution surveys sent automatically when you close a ticket. They typically ask one question: "How satisfied were you with the support you received?" with a thumbs up/down or 1–5 star scale.
CSAT data does two things: it tells you how your team is performing from the customer's perspective (which is often different from how your internal metrics look), and it surfaces individual tickets where the customer was unhappy so you can follow up proactively.
Setting up CSAT in Resolvo
- Go to Settings → Email Ticketing → CSAT
- Enable CSAT surveys and choose Send on ticket close
- Set a delay (recommend: 30 minutes after close, so the customer has time to confirm the fix works)
- Choose your rating scale (thumbs up/down for simplicity; 1–5 stars for more granularity)
- Add one optional follow-up text field: "What could we have done better?" — keep it optional
- Customize the survey email: use your brand colors, keep the message short, make the rating one click
Send CSAT surveys only on resolved tickets, not on every ticket close (some tickets are closed as "won't fix" or "duplicate" — those customers didn't get support, so a survey is inappropriate). Also suppress surveys if a customer has already received one in the past 14 days to avoid survey fatigue.
A CSAT response rate of 15–30% is typical for email-based surveys. Don't be discouraged by low response rates — even 20% of your ticket volume is enough to identify patterns. Focus on the negative responses first: reach out personally to unhappy customers and understand what went wrong. Those conversations are worth more than any data dashboard.
Step 5 — Set SLA Rules for Email Tickets
SLA (Service Level Agreement) rules define target response and resolution times for tickets, typically by priority. They're the mechanism that converts "we try to respond quickly" into a measurable, enforceable commitment.
Recommended SLA targets for engineering teams
These are reasonable starting points for a small B2B SaaS team. Adjust based on your customers' expectations and your team's capacity:
- High priority (production issues, security bugs): First response within 1 hour; resolution or workaround within 4 hours
- Normal priority (functional bugs): First response within 4 business hours; resolution within 2 business days
- Low priority (how-to questions, feature requests): First response within 1 business day; resolution within 5 business days
Configuring SLA in Resolvo
- Go to Settings → Email Ticketing → SLA Policies
- Create a policy for each priority level with first response time and resolution time targets
- Set business hours (SLA clocks can pause outside working hours, or run 24/7 for high priority)
- Configure breach notifications: "Email team lead when a ticket is 30 minutes from SLA breach"
- Assign the policy to your email ticketing inbox
Once SLA rules are active, your ticket queue will show a color-coded timer on each ticket: green (on track), yellow (at risk), red (breached). This visual signal is enough to change team behavior — most engineers, once they can see a clock ticking toward red, will prioritize accordingly.
The SLA clock measures time to first substantive response, not the auto-acknowledgment. Your ticketing system should not count the auto-acknowledgment email as fulfilling the SLA. Make sure this is configured correctly — it's a common mistake that makes your SLA metrics look better than they actually are.
Measuring Email Ticketing Success
Once your system has been running for two to four weeks, you'll have enough data to start measuring performance. Here are the metrics that matter most:
FRT (First Response Time)
This is the most actionable metric in the short term. If your FRT is high, the fix is usually structural: too many tickets in one person's queue, no clear rotation schedule, or tickets falling through the cracks during handoffs. Check your queue assignment rules and distribution before blaming individual capacity.
CSAT Score
Look at CSAT trends over time, not individual data points. A single bad survey is noise; a three-week decline in CSAT is a signal. Segment by agent and by ticket type to find patterns — you might discover that one specific request type consistently generates low satisfaction, pointing to a process or documentation gap rather than an individual performance issue.
Resolution Rate by Priority
What percentage of high-priority tickets are resolved within SLA? This number should be above 90%. If it's not, your SLA targets may be too aggressive for your current team size, or you have a structural bottleneck (all escalations routing to one overloaded engineer, for example).
Ticket Volume Trends
Track weekly ticket volume by category. A spike in a specific category — say, "authentication errors" or "CSV export bugs" — is often your first signal that a recent deployment introduced a regression. Ticket volume analytics is an under-appreciated form of production monitoring for small teams without dedicated observability tooling.
Common Mistakes to Avoid
The point of ticketing is to track work, not correspondence. A ticket should have a clear definition of done: "bug reproduced, fix deployed, customer confirmed." If your team is treating tickets as email threads that they reply to and close after one exchange, you're losing the tracking value. Make sure agents update ticket status and add internal notes as the issue progresses.
When a customer reports a bug and your engineer files a development issue to fix it, link them. Most ticketing systems support linking a ticket to an issue tracker entry. This creates a chain from "customer report" to "engineering task" to "deployed fix" — which lets you close the customer ticket the moment the fix ships, automatically. Without this link, engineers fix bugs while agents are still telling customers "we're looking into it."
Overly aggressive SLAs are worse than no SLAs. If you breach them constantly, the numbers become meaningless and your team learns to ignore the red indicators. Start with targets that represent your current best performance, not your aspirational performance. You can tighten them once you've consistently hit your initial targets for 30 days.
Customers who don't hear back within an hour often send follow-up emails — which creates duplicate tickets and extra work. An auto-acknowledgment with a ticket number takes two minutes to configure and eliminates a meaningful percentage of follow-up noise. Always turn this on.
Routing all tickets to a single queue with no assignment rules works at very low volume but breaks down quickly. When there's no clear ownership, everyone assumes someone else is handling it. Even a simple round-robin distribution — ticket 1 to Alice, ticket 2 to Bob, ticket 3 to Alice — dramatically improves accountability compared to a shared unassigned queue.
Closed tickets are a goldmine of operational intelligence. A monthly 30-minute review of the past month's closed tickets will surface recurring issues, documentation gaps, and onboarding friction that your product roadmap should address. Most teams skip this entirely because they're focused on the open queue — which is exactly why those recurring issues keep coming back.
Set Up Email Ticketing in 30 Minutes
Resolvo connects to Gmail, creates tickets automatically, and gives your team a shared queue with SLA tracking — all in one workspace alongside your engineering issue tracker.
Start free with Resolvo →Free plan includes Gmail integration, unlimited tickets, and 3 team members. No credit card required. See all features →