The reason partners go quiet is rarely that nobody knew. The signal is usually sitting in a query somewhere: this deal has not moved in three weeks, this certification lapsed, this order form was never signed. What is missing is a way to turn that signal into a nudge that reaches the partner without somebody writing the message.The Create a comment endpoint is that path. One call posts a comment on a partner, a deal, a task, a submission, or a payout, and the partner is notified through whichever channel they already use, email, Slack, or Microsoft Teams. Ten thousand partners is ten thousand calls, not ten thousand emails.
What you’ll achieve
Any system, script, or agent in your stack able to follow up with partners on the record itself, attributed to a real person on your team, notifying the partner where they already work, and with the reply landing back in the same thread.Before you start
Create a key with collaborate:write
Decide who the comment is from
Check your notification setup
Watch it
- Video
- Click through
Steps
Post your first comment
Choose what to comment on
crmObjectId + crmObjectType), a task (taskId), a form submission (formSubmissionId), a commission payout (commissionPayoutId), or the partner alone (partnerId). Pass at least one.Send the call
Use your CRM's own object names
crmObjectType is case-insensitive and takes whatever your CRM calls the object, so a Salesforce query can forward Opportunity, Account, or Case straight through and a HubSpot one can send Deal, Company, or Ticket. Introw resolves them to the same records, which means no type mapping in your script. Only custom objects need their exact API name, such as Partner_Program__c, because there is no standard equivalent to translate to.Write it like a person would
comment accepts Markdown, and the formatting carries onto the partner portal timeline: **bold**, *italic*, [links](url), blank-line paragraphs, and - or 1. lists. HTML fragments are accepted too, so content you already generate can be forwarded as-is. A short, specific ask outperforms a templated reminder, and Markdown is what lets you write one.Keep the threadId
threadId. Pass it back as threadId on your next call and the follow-up joins the same thread instead of starting a new one, so a chase sequence reads as one conversation rather than four disconnected pings.Attribute it to the right partner
Use the id you already store
partnerId accepts the Introw partner id or the partner’s CRM external id, so you can drive the loop straight off your CRM export without a mapping table.Let a linked deal resolve the partner
partnerId entirely. If the object is not attributed, the call returns 422 CRM_OBJECT_NOT_LINKED, so pass partnerId explicitly for those.Keep a comment to your own team
Set isInternal
"isInternal": true and the comment stays on the record for your team only: hidden from every partner-facing surface and silent on notifications. Use it when your systems should annotate a record without talking to the partner, for example writing a risk score or a churn signal onto the deal.authorEmail to be one of your team members. A partner portal member can never author one. A comment on a payout the partner cannot see yet is kept internal automatically, whatever you send, so figures never leak ahead of the release.Patterns worth copying
Stalled-deal sweep on your own rules
Stalled-deal sweep on your own rules
crmObjectId. Because the nudge lands on the deal, the partner opens the deal to reply, not an inbox. When your rule is simply “days in stage”, the no-code Sleeping deal notification already does this without any code, so reach for the API when the rule is yours.Let an agent do the chasing
Let an agent do the chasing
Acknowledge intake instantly
Acknowledge intake instantly
formSubmissionId and comment with what happens next and by when. Partners stop asking whether the registration arrived, and the SLA is on the record.Close the loop from finance and provisioning
Close the loop from finance and provisioning
commissionPayoutId), and your provisioning system comment on the deal when the account goes live. The partner hears it from the record they already track, instead of a status email from a system they have never heard of.Onboarding and enablement follow-up
Onboarding and enablement follow-up
taskId to chase an overdue onboarding step, or partnerId to reach a partner whose certification is about to lapse. Same call, different target.Verify it worked
Open the partner in Partners and check their timeline: the comment is there, attributed to the person inauthorEmail, with your Markdown rendered. On the partner side it appears on the record in their portal and arrives on their configured channel. A comment sent with isInternal shows on your timeline marked internal and nowhere partner-facing.
Limits & gotchas
Troubleshooting
403 Forbidden- the key lackscollaborate:write.422 AUTHOR_NOT_FOUND- the email is not a team member, nor a portal member of the partner being commented on.422 INTERNAL_AUTHOR_FORBIDDEN-isInternalwas set for a partner-side author.422 CRM_OBJECT_NOT_LINKED- the deal or ticket is not attributed to a partner. SendpartnerIdtoo.422 VALIDATION_ERROR- no target was sent, orcrmObjectIdcame withoutcrmObjectType.- The partner never heard about it - check whether the comment came back with
isInternal: true, and confirm their notification channel in Channels.