[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Follow up on stale Freshsales deals

> Find rotten deals in your Freshsales pipeline, skip the ones with recent activity and create a follow-up task on each of the rest. Runs weekly.

Source: https://cotlet.dev/integrations/freshsales-api-mcp-server/follow-up-stale-deals

Deals in your pipeline turn red once they pass the staling age, and then nothing happens: the card stays red until someone opens it, reads it and decides what to do.

Cotlet does it in your own Freshsales account with list\_rotten\_deals, get\_deal, list\_tasks, create\_task and add\_note, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=freshsales) [All Freshsales tools](https://cotlet.dev/integrations/freshsales-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Freshsales do this on its own?

Freshsales colours a deal red once it passes the staling age and lists such deals under Show only rotten Deals (checked 22 Oct 2026). A Workflow can add a task for a deal, but its date-based triggers need the Pro plan, it runs at most 5 actions, and its rule is fixed: it does not read the deal. Nothing in Freshsales writes a follow-up that fits each deal.

## How you do it in Freshsales today

1. An admin sets the limit per pipeline under Admin Settings > Deals & Pipelines > Pipelines: click the pencil icon, enter days in Deals go stale after, and click Save.
2. In the Deals module, a rep opens Open Deals, chooses Pipeline from the dropdown, clicks the three dots icon on a deal and picks Show only rotten Deals.
3. The rep opens each red deal, reads its page and decides whether it is dead, waiting on the customer or just forgotten.
4. For each deal worth saving, the rep goes to the Activities Dashboard, clicks Add task, types a title, picks a due date, and searches for the deal in Related to before clicking Save.
5. The red card is only a colour, and the help article describes no task or reminder that comes with it, so the list is easy to leave for next week.

## How to follow up on stale Freshsales deals

Prompt

```
List my rotten deals in the Sales pipeline. Skip any with an open task or activity in the last 7 days. For the rest, create a follow-up task for me and leave a note with the reason. Tell me which ones look dead.
```

1. 01  
### Pull the rotten list  
Your agent reads one pipeline at a time with list\_rotten\_deals and follows next\_cursor to the end. The staling age is set per pipeline, so the same age can mean a deal is late in one pipeline and on time in another. On the Free plan the call fails, because Freshsales has no rotten deals there.
2. 02  
### Separate dead from quiet  
The age counts from the day a deal was created, not from its last activity, so a red deal can still be active. get\_deal returns last\_activity\_date, and the agent skips deals with activity inside the window in your prompt.
3. 03  
### Skip deals already chased  
list\_tasks with deal\_id and the open filter shows whether a task is already waiting on that deal. A deal with an open task is left alone, so a weekly run does not stack a second task on the first.
4. 04  
### Create the task  
create\_task goes on the deal, owned by you or the deal owner, with the reason in the title, such as the age and the last activity date. Freshsales sets times in 30-minute steps, so the due time ends in :00 or :30\. A collaborator gets an email, so each task waits for your OK by default.
5. 05  
### Mark the dead ones  
Deals with no activity for far longer than your window are not moved to Lost by this job. add\_note leaves a one-line reason on the deal, and the agent lists those deals for you to close yourself.

### What you get back

Example data

```
Rotten deals in Sales pipeline: 6 (stale after 30 days)
Tasks created 3, e.g. Annual support plan, 11 days past the limit, last activity 02 Oct
Skipped 2 (open task already waiting)
Looks dead, left for you 1: Retail kiosk, no activity since 01 Sep
```

### Other ways to ask

- Every Monday at 8, list rotten deals in all my pipelines and create tasks for the ones over 14 days past the limit.
- Show me rotten deals worth more than 5,000 first, but create nothing yet.
- Create a task for each rotten deal, owned by the deal owner, and add me as a collaborator.

## What Freshsales allows, and what to know first

- Freshsales sets the staling age separately for each pipeline, in days, under the Deals go stale after setting.
- A deal's age is counted from its creation date, not from its last activity, so a deal with a call yesterday can still be rotten.
- Rotten deals are one of the features Freshsales removes when an account drops to the Free plan.
- Freshsales shows a task on a dashboard only to its owner and its collaborators, and a new collaborator gets an email.
- A task has to be marked completed by hand, except one created by a Workflow, which can be marked complete at creation.

create\_task and add\_note ask for your OK by default. To run it weekly without you, switch confirmation off for those tools in your dashboard.

Sources: [Freshsales Help: What are stale deals](https://crmsupport.freshworks.com/support/solutions/articles/50000002157-what-are-stale-deals-how-do-they-work-) · [Freshsales Help: How to add a new task](https://crmsupport.freshworks.com/support/solutions/articles/50000002423-how-to-add-a-new-task-) · [Freshsales Help: How to configure a Workflow](https://crmsupport.freshworks.com/support/solutions/articles/50000002143-how-to-configure-a-workflow-) · [Freshsales Help: Features you lose on downgrade](https://crmsupport.freshworks.com/support/solutions/articles/50000002466-what-are-the-features-you-tend-to-lose-on-downgrade-)

## Call create\_task from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/freshsales/tasks \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Follow up: Annual support plan (41 days old, last activity 02 Oct)","due":"2026-10-26T10:00:00","related_to_type":"Deal","related_to_id":7000388}'
```

Example response

```
{
"task_id": 8800140,
"title": "Follow up: Annual support plan (41 days old, last activity 02 Oct)",
"due": "2026-10-26T10:00:00",
"status": "open",
"owner": "Dana Reyes",
"related_to": {
"type": "Deal",
"id": 7000388,
"name": "Annual support plan"
},
"collaborators": []
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is freshsales\_write → create\_task. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/freshsales-api-mcp-server.md#automations)

## Freshsales tools this automation uses

__Cotlet Freshsales tools used to follow up on stale Freshsales deals__
| Tool | Parameters |
| ------------------- | --------------------------------------------------------------------------------- |
| list\_rotten\_deals | pipeline, cursor |
| get\_deal | deal\_id |
| list\_tasks | filter, deal\_id, contact\_id, cursor |
| create\_task | title, due, related\_to\_type, related\_to\_id, description, owner, collaborators |
| add\_note | record\_type, record\_id, body |

[All 11 Freshsales tools with descriptions](https://cotlet.dev/integrations/freshsales-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Freshsales to Cotlet?

Yes. You sign in to Freshsales yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Freshsales once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Freshsales automations

- [Move Freshsales deals to Won or Lost with a reason](https://cotlet.dev/integrations/freshsales-api-mcp-server/close-won-and-lost-deals.md)
- [Log call notes and the next step in Freshsales](https://cotlet.dev/integrations/freshsales-api-mcp-server/log-call-notes-and-next-steps.md)
- [Freshsales API and MCP server: every tool](https://cotlet.dev/integrations/freshsales-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Freshsales.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Freshsales.

[Sign up free](https://cotlet.dev/app/signup?app=freshsales)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
