Create Todoist tasks for HubSpot deal stage changes
When a HubSpot deal moves stages, Geni drafts the right next step and adds it to your Todoist Sales project, with the deal link and a due date built in.
Build an agent workflow that turns HubSpot deal stage changes into Todoist next-step tasks. This is a direct replacement for HubSpot's native Todoist integration, which is being deprecated.
Trigger: an incoming webhook from a HubSpot workflow that fires when a deal's stage changes. The payload includes the deal's object ID, the new stage, and (when available) the previous stage and the HubSpot portal ID.
When the webhook fires, the agent should:
1. Look at the new stage. If it is closed-won, closed-lost, or any stage in my configured list of terminal stages, exit immediately without creating a task. Make the terminal-stage list editable in the workflow settings.
2. Call HubSpot Get Deal for the deal ID in the webhook payload. Request these properties at minimum: dealname, dealstage, pipeline, amount, closedate, hubspot_owner_id. Also include the associated contacts so we can find the primary contact.
3. Call HubSpot Get Contact for the primary associated contact and read firstname, lastname, and email.
4. Based on the new stage, draft the right next-step task. Use these defaults and let me edit the template per stage in settings:
- qualifiedtobuy: "Schedule discovery call with {contact name} for {deal name}"
- presentationscheduled: "Prep demo deck for {contact name} on {deal name}"
- decisionmakerboughtin: "Confirm decision criteria with {contact name} for {deal name}"
- contractsent: "Send mutual close plan to {contact name} for {deal name}"
- appointmentscheduled (proposal-sent equivalent): "Send pricing PDF to {contact name} for {deal name}"
For any other non-terminal stage, the agent should write a sensible next step that matches the stage's name and the typical sales motion for that stage.
5. Call Todoist Create Task to add the task to my Sales project (let me change the project name in settings). The task should have:
- content: the drafted next-step line with the deal name and primary contact name
- description: a one-line link back to the HubSpot deal at https://app.hubspot.com/contacts/{portalId}/deal/{dealId} plus the deal amount and close date for quick context
- due_date: two business days from now, skipping Saturday and Sunday. Make the day offset configurable.
- labels: a single label matching the new stage (use the stage's internal name, lower-kebab-case)
If the Sales project does not exist in Todoist, surface a clear error telling me to create it or change the project name in settings. If the deal has no associated contact, still create the task using just the deal name and skip the contact placeholder.
Settings I want to control: the Todoist project name, the list of terminal stage names to skip, the per-stage task template, and the due-date offset in business days.
Additional information
What does this prompt do?
- The moment a HubSpot deal moves to a new pipeline stage, a task lands in your Todoist Sales project with the right next step for that stage.
- Each task is pre-written with the deal name, the primary contact, a link back to the HubSpot deal, a label matching the new stage, and a due date two business days out.
- Closed-won, closed-lost, and any other terminal stages you list are skipped, so Todoist only fills up with work that actually needs doing.
- A direct replacement for HubSpot's native Todoist integration, which is being deprecated.
What do I need to use this?
- A HubSpot account with access to deals and the ability to send a webhook from a workflow when a deal stage changes.
- A Todoist account and a project where you want the tasks to land. We default to a project called Sales.
How can I customize it?
- Change the Todoist project, or send tasks to different projects based on which pipeline the deal is in.
- Edit the next-step template for each stage so the task content matches the language of your sales motion.
- Adjust the due-date offset. The default is two business days out, but you can use any number of days or skip weekends differently.
- Add or remove terminal stages so closed deals, paused deals, or any custom on-hold stage stays out of Todoist.
Frequently asked questions
Does this replace HubSpot's built-in Todoist integration?
Will this work on a HubSpot free plan?
Which stages get skipped?
Where do the tasks land in Todoist?
How does the contact get attached?
Stop manually writing sales follow-ups after every stage change.
Connect HubSpot and Todoist once, and Geni adds the right next step the moment a deal moves stages.