# 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.

- Workflow type: app
- Services: Basecamp, Gmail
- Categories: Operations, Customer Support
- Published: 2026-08-14

## 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

## Prompt

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.

## How to customize

- 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

## FAQ

### Does anything get sent to the client automatically?

No. Nothing is created and nothing is sent until you press File on a request you have read. You can edit the to-do title, the description and the confirmation reply before anything leaves.

### What stops the same email being filed twice?

The desk remembers every email conversation it has already handled. Filed and skipped conversations drop out of the queue, and if one reappears you see a banner linking to the to-do it already became instead of a File button.

### Will the confirmation stay in the same email conversation?

Yes. The confirmation is sent as a reply on the original thread, so the client sees it under the message they sent rather than as a separate email.

### What happens to emails that are not real requests?

Use Skip. The conversation leaves the queue, no reply is sent to the client, and it is recorded so it never comes back. You can undo a skip from the Skipped filter.

### Does the formatting from the email survive in Basecamp?

Basecamp only supports simple formatting, so the request is cleaned down to headings, bold, links and lists before it is filed. A link back to the original email is always included, so the full message is one click away.

Use this prompt in General Input: https://www.generalinput.com/prompts/client-email-intake-desk-that-files-requests-into-basecamp