Turn support emails into triaged Linear tickets
When a customer emails support, file a categorized Linear ticket, ping your support Slack channel, and reply with a reference number, all automatically.
Build an agent workflow that turns every inbound customer support email into a triaged Linear ticket with an automatic acknowledgement reply.
Trigger: a Postmark inbound webhook. The workflow should fire whenever Postmark's inbound parsing forwards a new message that hit our support inbox (for example, support@ourcompany.com). The webhook payload includes the From address, FromName, Subject, TextBody, HtmlBody, StrippedTextReply, and any Attachments.
Skip rules. Before doing anything else, stop and exit cleanly if any of these are true: the Subject starts with 'Auto:', 'Out of office', 'Automatic reply', or 'Auto-reply'; the message has an 'Auto-Submitted' header that is not 'no'; or Postmark already matched the sender against a blocked inbound rule. These should produce no ticket, no Slack message, and no reply.
Classification. Read the From, Subject, StrippedTextReply (prefer this over TextBody so we don't include quoted thread history), and any attached error logs. Pick exactly one category from: bug, billing, feature_request, account_access, other. Pick exactly one priority from: urgent, high, normal, low. Use language cues: words like 'down', 'broken', 'cannot log in', 'charged twice', 'data loss', or attached stack traces push priority to urgent or high. Generic questions and feature ideas sit at normal or low. Map priority to Linear's numeric priority field: urgent=1, high=2, normal=3, low=4.
Create the Linear ticket. Use Linear's Create Issue against our Support team. Title should be a clean one-liner derived from the Subject (strip 'Re:', 'Fwd:', and any ticket prefixes). Description should be Markdown and include: a header line with the sender's name and email, the category and detected priority, then the StrippedTextReply as the body. If attachments are present, list their filenames at the bottom. Set the Linear priority field from the mapping above. Capture the returned issue identifier (like SUP-482) and URL.
Post to Slack. Use Slack Bot's Send a Message to post a one-line summary in #support-inbox. Format it as: priority emoji, category label, sender name, ticket identifier as a clickable link to the Linear issue, and a short snippet of the subject. Example: ':red_circle: bug | Jane Doe | <https://linear.app/...|SUP-482> | Dashboard not loading after login'.
Send the acknowledgement. Use Postmark's Send Email with Template to reply to the original sender. Use TemplateAlias 'support_ack'. Pass a TemplateModel that includes: ticket_id (the Linear identifier), category, priority, sender_name, and expected_response_window. Set expected_response_window from priority: urgent = within 1 hour, high = within 4 hours, normal = within 1 business day, low = within 3 business days. Set the From to our verified support sender, the To to the original From address, and ReplyTo to support@ourcompany.com so customer replies stay threaded.
Error handling. If Linear's Create Issue fails, still post a Slack message in #support-inbox flagging the failure so a human can pick it up, and do not send the acknowledgement (we don't want to promise a ticket we didn't create). If only the Slack post fails, still send the acknowledgement. Log every skipped auto-reply with the From address and Subject so we can audit later.
Additional information
What does this prompt do?
- Watches your support inbox through Postmark and runs on every new customer email.
- Sorts each message by type (bug, billing, feature request, account access, other) and urgency, then files a Linear ticket on your support team.
- Posts a one-line summary in your Slack support channel with a link to the new ticket so the team sees it instantly.
- Sends the customer an automatic acknowledgement email with their reference number and an expected response window based on priority.
- Quietly skips out-of-office replies, auto-responders, and senders you have already blocked in Postmark.
What do I need to use this?
- A Postmark account with inbound email set up on your support address, and a saved acknowledgement template you want sent back to customers.
- A Linear workspace with a Support team where new tickets should land.
- A Slack workspace and a channel like #support-inbox where the team watches incoming tickets.
How can I customize it?
- Change the categories or priority labels to match how your team already triages (for example, swap 'billing' for 'invoicing' or add a 'security' bucket).
- Adjust the response-time language in the acknowledgement email so it matches your real SLAs.
- Point the Slack notification at a different channel, or split it: bugs go to engineering, billing to finance.
- Tweak the skip rules to ignore additional auto-responder patterns or noisy domains.
Frequently asked questions
Do I have to use Postmark for this, or will any inbox work?
Will customers see the reference number when they reply?
What stops out-of-office replies from creating tickets?
How does the workflow decide what is urgent?
Can I send the auto-reply from my own domain instead of a Postmark address?
Stop letting support emails pile up in a shared inbox.
Connect Postmark, Linear, and Slack once, and Geni triages every new support email the moment it arrives.