KognitaKognita.

Blog

The Zapier Workflow Routes Support Tickets. It's Wrong 40% of the Time.

8 min read

The Zapier workflow is running. "If ticket contains 'billing,' route to Payments." "If ticket contains 'API,' route to Platform." "If ticket contains 'login,' route to Auth." The obvious cases route correctly. The ticket about the billing export that's actually owned by the reports team routes to Payments. The ticket about login behavior that's actually an account management issue routes to Auth. Forty percent of tickets bounce before reaching the right team.

Rule-based routing fails at edge cases, and edge cases are where the interesting problems live. The ticket that arrives with ambiguous keywords — "it's not working," "something broke," "feature is broken" — hits none of the rules and lands in a catch-all queue with the lowest priority. The ticket that mentions two keywords routes to the first rule that matches, which may be the wrong team for the specific problem described.

Why keyword routing fails at scale

Keywords describe what the customer said, not what service is actually affected. A ticket about a "billing export failure" uses the word "billing" — but whether it belongs to the billing team, the export service, or the data pipeline depends on where in the flow the failure occurs, not on which keyword appeared in the subject line. Rule-based routing can't make this distinction because it has no model of service architecture.

The failure rate also compounds over time. When teams restructure, services change ownership, or new services are introduced, the keyword rules become stale. A rule that was accurate when it was written routes incorrectly after a reorg. The maintenance cost of keeping rules current with the actual team structure is a perpetual overhead that most teams don't invest in consistently.

How keyword rules fail on common edge cases
Where Zapier keyword routing fails:

Rule: "If ticket contains 'billing' → route to Payments team"
  Ticket: "Billing export to CSV is failing" → Payments team (WRONG: it's Reports)
  Ticket: "Can't access billing history" → Payments team (WRONG: it's Auth)
  Ticket: "Billing address not saving" → Payments team (CORRECT)

Rule: "If ticket contains 'login' or 'auth' → route to Auth team"
  Ticket: "Can't log in after password reset" → Auth (CORRECT)
  Ticket: "Login page is blank" → Auth (WRONG: it's Frontend)
  Ticket: "Can't log in — says account not found" → Auth (WRONG: it's Account mgmt)

Rule: "If ticket contains 'API' → route to Platform team"
  Ticket: "API returns 500 on /export" → Platform (WRONG: it's Export service)
  Ticket: "API docs don't match behavior" → Platform (WRONG: it's Docs team)

Keyword rules work for obvious cases and fail silently on edge cases.
Edge cases are where the interesting bugs live.

The maintenance decay problem

Keyword routing rules decay as the organization evolves. A rule that routes "API" tickets to Platform was accurate when Platform owned all API services. After the data team took ownership of the export API, the rule started routing export API tickets to Platform instead of Data. Nobody updated the rule because nobody noticed — the tickets still routed to an engineering team, just the wrong one.

CODEOWNERS, by contrast, updates automatically when teams take on new services or transfer ownership. When the data team added the export service to their CODEOWNERS, that change immediately reflects in any routing system that reads CODEOWNERS. No rule update required. The routing accuracy tracks with the actual organizational structure because the source of truth updates with it.

How Zapier routing rules decay as the org evolves
Why Zapier routing decays over time:
  Month 1: rules configured for current team structure → 90% accurate
  Month 3: Platform team splits into Platform + Data Infra → rules stale
  Month 6: Export service ownership moved to Data team → rules wrong
  Month 8: New Auth service introduced alongside legacy → routing ambiguous
  Month 12: Team names changed in reorg → some rules route to dead queues

  Rules require manual maintenance. Codebases self-document ownership.
  CODEOWNERS updates automatically when teams take on new services.
  Zapier rules update when someone remembers to update them.

Routing by service ownership, not keywords

Ticket routing without service ownership context routes by surface language. Service-ownership-based routing identifies the relevant service and queries who owns it — the answer is always current because CODEOWNERS is always current.

Kognita's webhook agent does this at ticket creation. The agent parses the ticket description, identifies the service or feature referenced, queries CODEOWNERS for current ownership, and routes to the correct team — without any keyword rules to configure or maintain. When ownership changes, routing changes automatically. When a new service is added, the agent routes based on whoever CODEOWNERS says owns it.

How codebase-grounded routing handles the same ambiguous tickets correctly
How codebase-grounded routing handles the same tickets:

  "Billing export to CSV is failing"
  → Checks which service handles CSV export: export-service
  → Checks CODEOWNERS for export-service: @reports-team
  → Routes to: Reports team ✓

  "Can't log in — says account not found"
  → "account not found" → checks account-service
  → CODEOWNERS: @account-mgmt-team
  → Routes to: Account Management ✓

  "API returns 500 on /export"
  → Checks /export route → export-controller in export-service
  → CODEOWNERS: @data-team
  → Routes to: Data team ✓

Routing based on service ownership, not keyword matching.
Accuracy: determined by current CODEOWNERS, not rule freshness.

The SLA impact of routing accuracy

Every mis-routed ticket consumes SLA time in re-routing. A ticket that routes to the wrong team and bounces to the right one has typically lost two to four hours before a qualified person sees it. For tickets with four-hour SLA windows, a single routing error is a guaranteed breach. Routing accuracy is not a nice-to-have — for teams with contractual SLAs, it's the primary determinant of whether those SLAs are achievable.

Final take

Zapier routing is the right tool for predictable, rules-based workflows with stable conditions. Support ticket routing with a complex service architecture and evolving team structure is neither predictable nor stable. A codebase-grounded agent routes based on who actually owns the affected service today — which is a different and better answer than who owned the keyword "billing" when the rule was written.

Keyword rules route to who probably owns it. CODEOWNERS routes to who actually owns it. In a product with more than a dozen services and a team that changes, those are different teams more often than you'd expect.