Client email intake desk that files requests into Basecamp
Work a queue of client emails, pick the project, list, owner and due date, then file each request as a Basecamp to-do and confirm it with the client.
Integrations
Basecamp
Gmail
Type
Categories
- Operations
- Customer Support
Build me an intake desk where client emails turn into Basecamp to-dos, so requests stop living in someone's inbox. I open it, work the queue, and file each real request into the right project. Deciding which email is a genuine client request, which project it belongs to, and what the due date should be is the actual work, so this is a screen a person sits in rather than something that runs on its own.
The main screen is a Queue tab with a thread list on the left and a reading pane on the right. Build the list from Gmail List Messages, filtered by a label or a search query I choose in the app: give me a label dropdown built from Gmail List Labels plus a free text search box, and remember my choice between visits. Sort oldest first so the longest waiting request sits at the top, and show sender, subject, a snippet, and how long it has been waiting. Selecting a row loads the whole conversation with Gmail Get a Thread and renders every message in order with sender, date and body, so I can read the full back and forth before deciding anything.
Next to the email put a filing panel. A project dropdown from Basecamp List Projects. When I pick a project, call Basecamp Get a Project and read the dock it returns to find the todoset id, then fill a to-do list dropdown from Basecamp List To-Do Lists. An assignee dropdown from Basecamp List People, scoped to the selected project. A due date picker with a configurable default, such as five working days out. A to-do title prefilled from the email subject and a description prefilled with the client's request, both editable before I file.
One File button does the work. Create the item with Basecamp Create a To-Do in the selected list, with my title, the chosen assignee, the due date, and a description that carries the client's request plus a link back to the Gmail conversation (https://mail.google.com/mail/u/0/#all/THREAD_ID). Basecamp rich text fields accept only a limited HTML subset (div, h1, br, strong, em, strike, a with href, pre, ol, ul, li, blockquote) and silently strip everything else, so sanitise the email HTML down to that subset before it goes into the description. Drop styles, inline images, tables and tracking markup rather than passing them through, and keep paragraph breaks readable.
Straight after the to-do is created, send a short confirmation on the same email thread with Gmail Reply to a Message, telling the client the request is logged and when it is due. That reply needs the In-Reply-To and References headers plus the threadId so it stays inside the same conversation rather than starting a new one. Show me the reply text before it sends so I can edit it, and keep a default wording I can change in settings.
Track filed state app side, keyed on the Gmail thread id, so nothing is converted twice. Store the thread id, subject, sender, the filed at timestamp and who filed it, the Basecamp project id and name, the to-do list name, the created to-do id and its URL, the assignee, and the due date. Threads that have been filed or skipped drop out of the Queue. If a filed thread turns up again, show a banner linking to the to-do it already became instead of offering a File button. Guard the File button against double clicks so one thread can never produce two to-dos.
Add a Filed tab listing every request that has been filed, newest first, showing the email subject and sender, the Basecamp project and the to-do it became with a link that opens it in Basecamp, the assignee, the due date, and who filed it. Let me search that list by client or subject and filter it by project. In the Queue, also give me a Skip action for threads that are not real requests: it removes the thread from the queue, records it as skipped so it never returns, sends no reply to the client, and can be undone from a Skipped filter.
Handle the practical failures. If the to-do is created but the Gmail reply fails, keep the filing recorded and offer a retry for the reply alone, never recreating the to-do. Show a clear inline message when a project has no to-do lists, when the chosen label or search returns nothing, or when a Basecamp call is rate limited. Page the queue rather than loading an entire mailbox at once.
What it does
- Puts every client email from the label or search you choose into an oldest first queue, so the longest waiting request is always at the top.
- Shows the full email conversation next to a filing panel where you pick the Basecamp project, the to-do list, the owner and the due date.
- Files the request as a Basecamp to-do that carries the client's own words and a link back to the email, then replies on the same email thread so the client knows it is logged and when it is due.
- Keeps a Filed tab showing which email became which to-do, plus a Skip action for messages that are not real requests, so nothing ever gets filed twice.
What you’ll need
- A Gmail account for the inbox your client requests arrive in, whether that is your own or a shared team inbox
- A Basecamp account with access to the projects you file client work into
- A Gmail label or saved search that picks out client requests, for example a shared "Requests" label
- Your team already added to the Basecamp projects, so there is someone to assign each request to
How to customize it
- Change which label or search feeds the queue, or point the desk at a different shared mailbox
- Edit the wording of the confirmation reply that goes back to the client, including how the due date is phrased
- Set a default due date, such as five working days out, that you can still override on any individual request
Use cases
- Email Automation
- Feedback Triage