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.
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.
FAQs
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?
Related templates
Pick a client and a date range to see sent, replies, meetings booked and the real deal value your cold email produced, campaign by campaign.
Work every partner tier decision from one board, with the revenue and commission numbers, clear promotion thresholds, and AI review briefs.
Open one board at month end to find every closed deal missing a commission, every commission with no deal behind it, and every amount that does not add up.
Open one board each morning to see which of your accounts are hiring, what they are building, and where your product fits the roles they just opened.
Open a live deal, see the market pay range for that role and city, set your markup, and write the agreed numbers straight back onto the deal.
Work every unanswered Instagram comment, Reel reply and Direct message from one queue, with claimed rows so two people never answer the same person.
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.