Triggers
Triggers determine when your routine runs. Each routine can have one or more triggers, and the routine will run whenever any of its triggers fire.
Trigger types
Manual
The simplest trigger — the routine only runs when you click Run in the web app.
Use cases:
- On-demand reports
- Testing new routines
- Routines you run occasionally
Incoming email
Runs every time a new email arrives in your inbox.
You can optionally limit this to a specific Gmail account if you have multiple accounts connected.
Use cases:
- Inbox organization, reply drafting, and scheduling help (Auto-inbox)
- Real-time notifications
- Immediate email processing
Incoming email triggers run on every email. Make sure your routine’s instructions handle high volume efficiently — for example, by quickly skipping emails that don’t match your criteria. If the routine only cares about some of your mail, the Smart email trigger below is the cheaper choice.
Smart email trigger
A cheaper version of the incoming-email trigger. Instead of starting the routine on every email, you write a condition in plain language — for example “the email is an invoice or receipt from a vendor” — and Town checks each incoming email against it, running the routine only when it matches.
You can also narrow it with the same optional filters before the condition is judged:
- From — only fire when the sender is one of the addresses you list (exact addresses, not domains)
- Sender domains — only fire when the sender is at one of the domains you list (subdomains included)
- Subject contains — only fire when the subject contains one of your phrases
Those filters cost nothing: they’re checked before anything else runs, so an email that doesn’t match them never reaches the condition. Judging a condition, and the run it may start, is where the work happens — so put anything that’s a literal sender or subject match into the filters, and save the condition for judgement they can’t express. A trigger with filters and no condition is fine too: it then fires on everything the filters allow, just like an incoming-email trigger.
Use cases:
- Routines that only care about some of your mail (invoices, order confirmations, mail from one client)
- Replacing a routine whose instructions start with “if this email isn’t about X, stop”
- Cutting the credit cost of an existing incoming-email routine
Nothing switches over on its own. Existing incoming-email routines keep running on every email until you change their trigger — you can ask your Townie to switch a specific routine to the smart email trigger, or edit the trigger yourself. Town’s own stock routines (like Auto-inbox) aren’t affected.
If Town can’t judge the condition for some reason, the routine runs anyway. That keeps a smart trigger from silently skipping mail you care about, so a routine may occasionally run on an email that didn’t match.
One smart email trigger per routine.
Outgoing email
Runs every time you send an email from a connected account — the mirror of the incoming email trigger. This includes emails Town helped you draft, as long as you reviewed and sent them yourself.
You can optionally limit this to a specific connected account if you have more than one.
Use cases:
- Logging or following up on the emails you send
- Kicking off a task after you send an email
- Keeping a record of outbound commitments
Outgoing email triggers run on every email you send. Make sure your routine’s instructions handle high volume efficiently — for example, by quickly skipping messages that don’t match the recipient or topic you care about.
Email to assistant
Runs when you send or forward an email to your assistant’s address (e.g., alex@town.com).
Use cases:
- Ask for help with tasks
- Forward threads for summarizing or processing
- On-demand analysis of specific emails
Schedule
Runs on a recurring schedule. When setting up a scheduled trigger, you choose:
- When to run — The time and frequency (e.g., every weekday at 8 AM, every Monday at 9 AM, daily at 6 PM)
- Timezone — Your local timezone so times are accurate for you
Common schedule examples:
| Schedule | Description |
|---|---|
| Every day at 6:00 AM | Daily morning routines |
| Weekdays at 9:00 AM | Business-day summaries |
| Every Friday at 6:00 PM | Weekly wrap-up reports |
| Every Sunday at midnight | Weekend batch processing |
| Every 2 hours | Frequent check-ins |
| First of each month at 8:30 AM | Monthly reports |
Use cases:
- Morning briefings
- Daily or weekly summaries
- Scheduled reports
Calendar triggers
Town supports four calendar triggers that let your routines react to events on your Google Calendar.
Calendar start
Runs before (or after) a calendar event starts. You can set how many minutes before the event you want the routine to run.
Timing options:
- 15 minutes before (default) — Great for quick meeting prep
- 1 hour before — Enough time for research and preparation
- 5 minutes after — For actions that should happen right as a meeting begins
Use cases:
- Pre-meeting prep (research attendees, summarize relevant emails)
- Send meeting reminders with context
- Prepare briefing documents
Calendar end
Runs after a calendar event ends. You can set how many minutes after the event you want the routine to run.
Use cases:
- Post-meeting follow-ups
- Summarize meeting notes and action items
- Send thank-you emails to attendees
Calendar RSVP
Runs when your RSVP status changes for an event — for example, when you accept, decline, or mark “maybe” on an invitation.
RSVP statuses that can trigger routines:
| Status | Meaning |
|---|---|
| Invited but not responded | You received an invite but haven’t replied yet |
| Accepted | You accepted the invite |
| Declined | You declined the invite |
| Maybe | You marked the invite as tentative |
Use cases:
- Prepare for newly accepted meetings
- Follow up after declining (suggest alternatives)
- Process meeting invites automatically
Calendar changed
Runs when a calendar event is created, updated, or cancelled.
Change types:
| Change | Description |
|---|---|
| Created | A new event was added to the calendar |
| Updated | Event details changed (time, location, attendees, etc.) |
| Cancelled | Event was cancelled or deleted |
Use cases:
- Get notified when meetings are cancelled
- Track when meeting times change
- Alert when attendees are added or removed
Voice recording
Runs when a voice recording has been transcribed. This works with recordings made through the Town iOS app.
Use cases:
- Automatically summarize voice notes
- Extract action items from meeting recordings
- Process and organize voice memos
Slack mention
Runs when someone @mentions your Town assistant in Slack. Requires the Slack integration to be connected.
Use cases:
- Answer team questions in Slack
- Process requests made in channels
- Trigger routines from Slack conversations
Webhook
Runs when an external system sends an authenticated HTTP request to a routine-specific webhook URL.
Webhook-triggered runs are configured from the routine’s settings page rather than the trigger picker. They are useful when you want another system, automation platform, or server to start a routine directly.
Use cases:
- Start a routine from Zapier
- Trigger a routine from your app or backend
- Pass structured event data into Town for processing
See Webhook Triggers for setup, security, and request examples.
Multiple triggers
Routines can have more than one trigger. For example, a routine might run:
- Every Monday at 9 AM (scheduled), and
- Whenever you click Run (manual)
This means you get the scheduled automation plus the ability to run it on demand whenever you want.
Triggers vs. modes
Triggers control when a routine runs. Modes control how it runs — specifically, whether actions require your approval or execute automatically. These are independent settings:
- A scheduled routine can require approval (it proposes actions and waits for your OK)
- An incoming-email routine can be autonomous (it acts immediately on every email)
Best practices
Match trigger frequency to routine complexity. Simple, fast routines work well with incoming email. Complex, slower routines are better on a schedule.
Test with manual first. Before enabling automatic triggers, use manual to verify the routine works correctly.
Set your timezone. When using scheduled triggers, always set your local timezone so “9 AM” means 9 AM for you.
Town