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.
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 does this prompt do?
- 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 do I need to use this?
- 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 can I 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
FAQs
Does anything get sent to the client automatically?
What stops the same email being filed twice?
Will the confirmation stay in the same email conversation?
What happens to emails that are not real requests?
Does the formatting from the email survive in Basecamp?
Related templates
A calibration board that lines up every candidate's answer to the same question, hides names until your panel has scored, and writes the agreed rating back.
Search three months of global coverage on your topic, rank the outlets actually writing about it, and draft a tailored pitch for each one.
Open one board every morning to see every outstanding quote by age and value, decide on each one, and send follow-ups only after you approve them.
See every HoneyBook project's booked revenue next to what actually landed in your bank, chase what is late, and bill the next payment in one click.
Paste a customer email or license key and see every purchase, license, and membership in one place, then refund or reset a key right from the row.
See every contractor's paperwork, bank details and year to date pay in one table, then run and fund this cycle's payment batch from the same screen.
Stop retyping client emails into Basecamp.
Set your intake desk up once, then file every request in a couple of clicks with the client told it is logged and when it is due.