Skip to main content

Syncing Salesforce Tasks with Planhat Conversations (Notes) and Tasks

Learn about your options when syncing planned and logged activities

Written by Carly Hammond
Updated today

Summary

  • In Planhat, planned activities are Tasks, and logged activities are Conversations (Notes), whereas Salesforce uses the Task object for both

  • You can sync Planhat Conversations (of type "note" or custom Conversation Types) to your choice of Salesforce object, e.g. Task (functionality introduced in April 2026)

  • If you are syncing from Salesforce Tasks to Planhat Tasks, and from Planhat Conversations (Notes) to Salesforce Tasks, we copy Salesforce IDs between Planhat Task/Conversation records to prevent duplicate Tasks being created in Salesforce

Who is this article for?

  • Anyone who would like an overview of syncing Planhat Conversations (Notes) to your choice of Salesforce object

  • Planhat users who would like further technical details on this process (e.g. CS Ops)

Series

We have a series of articles on the Salesforce integration:


Article contents

πŸš€ Tip

This article focuses on specific functionality to sync Salesforce Tasks with both Planhat Tasks and Conversations (Notes).

If you would simply like an overview of the Salesforce integration as a whole, please go to our main article here.

We also have an article that deep-dives into the topic of Tasks and Notes in further detail, which you can read here.


Introduction


For any organization, it's important to record "activities", both those that are planned and those that have been completed. Typical examples could be:

  • A call a Salesperson has with a prospect

  • A Sales-to-CS handover task, where a Salesperson shares information about a prospect to the CSM who will be managing them as a customer

  • A training session that the Onboarding team run for a new customer

  • A to-do for a customer, where they configure their account in your product

  • And so on

Planhat's Salesforce integration is fully compatible with Salesforce Tasks, allowing you to sync them bidirectionally with both Planhat Tasks ("planned activities") and Conversations/Notes ("logged activities").

In the diagram above, the blue arrows represent possible syncing via Planhat's Salesforce integration, and the orange arrow represents how Planhat Conversations can be created from Planhat Tasks when they are marked as completed/done.

Even though in Planhat a single activity can be represented by both a Task record (before it happens) and a Conversation (Note) record (after it happens), if you are syncing both to Salesforce, we prevent duplicates being created in Salesforce by tracking IDs, also shown in the diagram above (and discussed in more detail below).

The sync of the Conversation model includes both the "note" standard Conversation Type and also custom Conversation Types, but excludes standard Conversation Types associated with other integrations ("email", "chat", "ticket" and "call").


How to set up the sync


πŸš€ Tip

Remember, for general instructions on how to set up the Salesforce integration as a whole, including all the main principles and options, see our main article here.

Planhat's Salesforce integration has a standard (pre-built) sync section for Planhat Task to Salesforce Task.

πŸ“š Further reading

If you would like to read more about the standard Task-Task sync, see here and here.

To sync Planhat Conversation to Salesforce Task, you use a custom (extended mapping) sync section at the bottom of the integration. This means you click "Add New Section" at the bottom ...

... and then select "Conversation" as the Planhat model on the left, and "Task" as the Salesforce object on the right. (Be aware that this must be "Conversation" on the Planhat side; "Note" isn't available as an option.)

As usual, you choose the sync direction ("Send to Salesforce", "Receive from Salesforce", "Both Directions" or "Not Syncing").

If you're syncing from Salesforce Tasks to Planhat Tasks, and also syncing from Planhat Conversations to Salesforce Tasks (like in the diagram below) ...

... we automatically copy the Source ID from each Planhat Task (which is the Salesforce Task record ID) into the External ID field of its child Conversation, so the Conversation can be synced back to the right Task in Salesforce rather than creating a duplicate Task. We describe this in more detail here.

You can see when this process has been activated, by the "Notes to inherit Task sourceId" toggle switch that appears at the top of the Salesforce integration.


Further details


Activities background information: Planhat models and Salesforce object

In Planhat, data is organized in data models (the equivalent of Salesforce objects), and planned and logged activities are represented by two different models:

  • The "Task" data model is used for to-dos: activities due to happen in the future

  • The "Conversation" data model is used for activities that have been completed

    • "Note" is the default type of Conversation

Typically what happens in Planhat is that:

  • you start with a Task record,

  • and when it's marked as completed ("Done" or "Ignored"), it's automatically archived,

  • and for a "Done" task, a "note is logged", which means a Conversation record is created to represent the logged activity.

In Salesforce, the structure is slightly different, because the Salesforce "Task" object is used for both planned and logged activities, rather than using two different objects like in Planhat.


Further details on ID inheritance to avoid duplicates in Salesforce

Background: data flow and potential issue we solve

Let's summarize the typical setup:

  • In Planhat, planned activities are recorded on the Task model ...

  • ... and logged activities are recorded on the Conversation model, with "Note" (or technically "note" - lowercase) being the default type

  • There is an interaction between these two models, as Conversations can be generated automatically for Tasks when they are completed (represented by the orange arrow in the diagram below), with data automatically copied over

  • In Salesforce it's slightly different, as both planned and logged activities are recorded on the Task object

  • With the Salesforce integration functionality described in this article, you can set things up so you have both:

    • Planhat Task syncing with Salesforce Task (represented by the the top blue arrow in the diagram below)

    • Planhat Conversation syncing with Salesforce Task (the bottom blue arrow)

  • For example, let's say that in Planhat you have a "QBR" (Quarterly Business Review) Task record syncing with a corresponding Task record in Salesforce. That QBR meeting then happens and so you mark the Task as complete in Planhat, which automatically archives the Planhat Task record and creates a Planhat Conversation record for the QBR. This Conversation record is then also synced to the Salesforce Task object

Because in this setup you are syncing from two different models on the Planhat side into the same single object on the Salesforce side, there is theoretically a risk of creating duplicate records on the Salesforce side (one for the Planhat Task record and one for the Planhat Conversation record, even though they are referring to the same activity in Planhat), unless the Planhat Task record and Conversation record can both be associated with the same Task record in Salesforce.

IDs

Fortunately, Planhat has a solution for this: the Planhat Conversation created from a Planhat Task (the orange arrow in the diagrams) inherits the value of the Salesforce record ID. This means this Conversation record can be linked back to the same Salesforce Task record as the Planhat Task.

Considering the precise technical details in terms of fields:

  • In the Planhat Task model, the Salesforce record ID is saved in the "Source ID" field - Source ID being the usual Planhat field on most models where the corresponding CRM record ID is stored

  • The Planhat Conversation model is an exception in that it doesn't have a Source ID field, so the Salesforce record ID is saved in its "External ID" field

The process will therefore be:

  1. A planned activity - Task - is synced between Salesforce and Planhat

    • As part of this, the Salesforce Task record ID is synced into the Planhat Task "Source ID" field

  2. In Planhat, the Task is marked as "Done", and a corresponding Conversation record ("Note") is created

    • If the Salesforce integration is configured as discussed below, the ID in the Task "Source ID" field (i.e. the Salesforce Task record ID) is copied into the corresponding Conversation (Note) "External ID" field

  3. When this Conversation (Note) record is synced back to Salesforce Task, from the ID in the External ID field it is matched up with the associated Task record in Salesforce, rather than creating a new Task record in Salesforce (which would be a duplicate)

So for example, with the boxes now representing individual records rather than models/objects:

When the Task-to-Conversation ID inheritance is activated

This process (of copying the Planhat Task Source ID into the Planhat Conversation External ID) does not always happen for every Task/Conversation record pair in Planhat, but rather the functionality is initiated when the Salesforce integration is set up to sync both the Planhat Task and Conversation to the Salesforce Task - specifically when:

  • There's an enabled sync section fetching Salesforce Tasks and syncing them to Planhat Tasks (green arrow 1 in the diagram above)

  • And there's an enabled sync section sending Planhat Conversations (Notes) to Salesforce Tasks (green arrow 3 in the diagram above)

  • So, for example, if you set Task-to-Task and Conversation-to-Task sync sections both to bidirectional syncing ("Both Directions", as shown by the blue arrows above), that would count

You can see in the Planhat app when this has been automatically enabled because there will be a toggle switch appear near the top of the integration - "Notes to inherit Task sourceId" - as shown in the example screenshot below:

Disabling the Task-to-Conversation ID inheritance

You will notice that this toggle switch is not editable in the integration - you can't click on it here to turn it off. This is because in the vast majority of situations, it shouldn't be turned off, or there would be the risk of duplicate Tasks being created in Salesforce, as discussed above.

However, if you have an edge case where you definitely don't want Conversation records to inherit this ID from the Task they were created from, you can ask a Planhat staff member ("Super Admin") to disable it for you, which they can do in the "Settings" Global Tool > "Admin Settings" > "Task and Events" > "Notes to inherit Task sourceId".

Be aware that after this toggle switch has been disabled by a Planhat staff member (Super Admin), it could still be automatically enabled in the integration in future if the integration configuration was later changed and went from not meeting the trigger conditions to then meeting the conditions, e.g. a sync direction was changed to "Both Directions".


Conversation (Note) sync background information: historical setup with standard sync section

Historically, in Planhat's Salesforce integration, if you wanted to sync Planhat Conversations, you could only use the standard (pre-built) sync section that was labelled "Note" on the Planhat side, and was only possible to sync with either:

  • "Legacy Notes" - corresponding to the Note object in Salesforce

  • "Note Taking Tool" - corresponding to the ContentNote object in Salesforce

It wasn't possible to sync Planhat Notes (Conversations) with Salesforce Tasks.

In April 2026, we released functionality meaning you can sync Planhat Notes (Conversations) with your choice of Salesforce object - which will typically be Task, as we describe throughout this article.

If you set up the Conversation-to-Task sync as described here, you can just leave the old Note sync section as "Not Syncing".

In both cases (the default sync section with "Note" on the left-hand side, and the custom sync section with "Conversation" on the left-hand side), it's actually the Planhat Conversation model that is syncing, and specifically:

  • Custom Conversation Types, such as "QBR" or "Training" or "Sales Handover" etc.

  • The standard "note" type

Conversations of the other standard types ("ticket", "chat", "email" or "call") are not included in the Salesforce sync, because they are associated with other integrations (e.g. Zendesk, Intercom or Gmail).

For other exceptions and further technical details of Note syncing, see here.


Troubleshooting - questions and answers (Q&As)


  • Q: I am looking at a sync section for the Planhat Note model - why can't I select the Salesforce Task object?

    • A: In the standard (pre-configured) Note sync section, you can only sync to Salesforce Notes or Content Notes

    • To sync between Planhat Notes and Salesforce Tasks, set up a custom sync section between Planhat Conversations and Salesforce Tasks

  • Q: Why can't I see a sync section in the integration for the "Conversation" model?

    • A: This isn't a pre-configured sync section. You need to click on "Add New Section" at the bottom, and select "Conversation" in the Planhat model dropdown in the left-hand side

  • Q: Why can't I see the Planhat "Note" model in the dropdown when configuring a custom sync section?

    • A: You need to select "Conversation" as the Planhat model dropdown, rather than Note

  • Q: Are all Conversation Types included in the sync with Planhat Conversation?

    • A: The sync of the Conversation model includes both the "note" standard Conversation Type and also custom Conversation Types ...

    • ... but excludes standard Conversation Types associated with other integrations ("email", "chat", "ticket" and "call")

  • Q: Can I sync between the Planhat Conversation model and a different Salesforce object rather than Task?

    • A: Yes, you can select any Salesforce object from the dropdown menu in the custom sync section - Task is not the only option

  • Q: What does "Notes to inherit Task sourceId" (toggle switch) mean at the top of the Salesforce integration?

    • A: This means that when a Planhat Note (Conversation) is created from a Planhat Task, and the Planhat Task has a Salesforce record ID in its Source ID field, that ID is copied into the External ID field of the Conversation

    • This is done so that the Planhat Conversation can sync back to the original Salesforce Task, rather than creating a new Salesforce Task (a duplicate)

    • This functionality is automatically enabled when:

      • There's an enabled sync section fetching Salesforce Tasks and syncing them to Planhat Tasks

      • And there's an enabled sync section sending Planhat Conversations (Notes) to Salesforce Tasks

      • So, for example, if you set Task-to-Task and Conversation-to-Task sync sections both to bidirectional syncing ("Both Directions"), that would count

  • Q: Why can't I disable the "Notes to inherit Task sourceId" toggle switch in the Salesforce integration?

    • A: It's not recommended for this functionality to be disabled if it has been activated, because its purpose is to prevent duplicate records being created in Salesforce

    • If in your specific case you do definitely want to turn it off, speak to a Planhat staff member ("Super Admin"), as they can disable it within your Planhat tenant's Admin Settings

Did this answer your question?