Create a comment
Posts a comment on a partner’s timeline: the same comment your team and partners see in the partner portal, the CRM embed, and email/Slack notifications. This is the in-app comment composer over the API: plain-text, Markdown, or HTML comments (HTML is converted server-side), @Name / @email mentions (or an explicit mentions array), internal (org-only) visibility, and thread replies.
Where the comment lands is resolved from the targets you pass:
partnerId: the partner portal timeline. Accepts the Introw partner id or the partner’s CRM external id.crmObjectId+crmObjectType: a deal, ticket, or other CRM object. PasscrmObjectTypein your own CRM’s wording (OpportunityorDeal, whichever your CRM uses). See CRM object types. The partner is resolved from the object’s partner attribution (or passpartnerIdexplicitly). The comment is also synced as a note to your CRM.taskId: a partner portal task.formSubmissionId: a form submission (deal registration, shared lead, MDF request, …).commissionPayoutId: a commission payout. Comments on payouts the partner cannot see yet are automatically kept internal.threadId: reply to an existing comment (use thethreadIdfrom the create response).
Who it is posted as: authorEmail must match an organisation team member or a partner portal member of the target partner. Only team-member authors may set isInternal: true. Internal comments stay hidden from partner-facing surfaces and never trigger partner notifications.
Notifications, workflow triggers, and CRM note sync behave exactly as if the comment was posted in the app.
CRM object types
crmObjectType takes your CRM’s own name for the object, case-insensitively. Introw translates it, so there is nothing to look up or map on your side:
- Deal: Salesforce
Opportunity, HubSpotDeal - Company: Salesforce
Account, HubSpotCompany - Ticket: Salesforce
Case, HubSpotTicket - Contact:
Contactin both - Lead:
Leadin both
Introw’s own type names (DEAL, COMPANY, TICKET, CONTACT, LEAD) and HubSpot object type ids (0-3, 0-2, 0-5, 0-1, 0-136) resolve to the same objects.
Custom objects are the one case where the exact name matters: pass the object’s API name as your CRM shows it, for example Partner_Program__c in Salesforce or p_partner_application / 2-12345 in HubSpot. Custom types are used verbatim, not translated.
More payloads
Comment on a deal (the partner is resolved from the deal’s attribution):
curl -X POST "https://api.introw.io/api/v1/comments" \
-H "x-api-key: $INTROW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"comment": "Pricing approved on our side, over to you for the paperwork.",
"authorEmail": "[email protected]",
"crmObjectId": "9840193344",
"crmObjectType": "DEAL",
"isInternal": false
}'
Reply in an existing thread:
curl -X POST "https://api.introw.io/api/v1/comments" \
-H "x-api-key: $INTROW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"comment": "Signed order form is in the deal room, **we are good to go**.",
"authorEmail": "[email protected]",
"formSubmissionId": "fsub_01HVK6Y8Z8Q7J8J8J8J8J8J8J8",
"threadId": "cmt_01HVK6Y8Z8Q7J8J8J8J8J8J8J8"
}'
Mention people with @Name / @email in the body and/or an explicit mentions array:
curl -X POST "https://api.introw.io/api/v1/comments" \
-H "x-api-key: $INTROW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"comment": "Can you take a look at the pricing on this deal @Alex?",
"mentions": [
"[email protected]"
],
"authorEmail": "[email protected]",
"crmObjectId": "9840193344",
"crmObjectType": "DEAL"
}'
Authorizations
Introw API key shown once when the credential is created.
Body
Comment body as plain text or Markdown (**bold**, *italic*, [links](url), blank-line paragraphs, and - / 1. lists). HTML fragments are also accepted and converted to the same TipTap format. Use @Name or @email to mention people; unresolved or ambiguous mentions are rejected with a short list of candidates. Formatting is preserved on the partner portal timeline.
1 - 20000Email of the person the comment is posted as. Must match an organisation team member or a partner portal member in the API key's organisation.
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$People to @-mention on the comment, in addition to any @Name / @email tokens in comment. Each entry is an email or display name resolved against organisation team members and active partner portal members. Resolved mentions are appended to the comment and trigger mention notifications.
201 - 255When true, the comment stays hidden from partner-facing surfaces and never triggers partner notifications. Only allowed when authorEmail is an organisation team member.
Partner to comment on (partner portal timeline). Accepts the Introw partner id or the partner's CRM external id.
1Partner portal task to comment on.
x <= 9007199254740991Form submission (deal registration, shared lead, MDF request, …) to comment on.
1Commission payout to comment on. Comments on payouts that are not yet visible to the partner are automatically kept internal.
1Thread to reply in. Use the threadId returned when the parent comment was created.
1External CRM identifier of the object (deal, ticket, …) to comment on. Requires crmObjectType.
1Type of the object in crmObjectId, in your own CRM's wording. Introw translates it: Salesforce Opportunity, Account, Case, Contact, Lead and HubSpot Deal, Company, Ticket, Contact, Lead are all accepted (case-insensitive), as are Introw's own DEAL, COMPANY, TICKET, CONTACT, LEAD. For a custom object, pass its API name exactly as your CRM shows it (for example Partner_Program__c or p_partner_application). The object must be attributed to a partner (or pass partnerId explicitly).
1Response
Comment created successfully.