Skip to main content

With the August 2024 release, you can associate all types of CTAs to a Success Plan, not just objectives. If you want to do this via rule, it appears you need to use the API for now but it is possible.

  • The Success Plan I tested this with was configured to allow Risk Type CTAs associated with it. While I haven’t tested, I think you probably would need to allow that association for this to work, but I don’t know. So keep that in mind when filtering for what Success Plan types land in your rule query before passing to the API call.
  • My use case also involved creating the CTA with a Linked Object from Salesforce. If you don’t need it, that can be removed.
  • Playbook is also optional
  • I created a Risk Type CTA, so the required fields might vary slightly depending on what type you’re trying to create

Here is the JSON I used in a POST request:

{
"requests": [
{
"record": {
"referenceId": "1",
"Name": "{{CTA_Name_Token}}",
"SfdcAccountId": "{{SFDC_Account_Id_Token}}",
"OwnerEmail": "{{Owner_Email_Token}}",
"DueDate": "{{YYYY-MM-DD}}",
"type": "{{Objective_Type_Name_Token}}",
"reason": "{{Reason_Name_Token}}",
"status": "{{Status_Name_Token}}",
"priority": "{{Priority_Name_Token}}",
"playbook": "{{playbook_Name_token}}",
"Comments": "{{comments_token}}",
"CtaGroupId": "{{Success_Plan_GSID_Token}}"
},
"linkedObjects": [
{
"id": "{{Linked_Object_RecordID_Token}}",
"store": "SFDC",
"objectName": "Opportunity"
}
]
}
],
"lookups": {
"OwnerId": {
"fields": {
"OwnerEmail": "Email"
},
"lookupField": "Gsid",
"objectName": "gsuser",
"multiMatchOption": "FIRSTMATCH",
"onNoMatch": "ERROR"
},
"CompanyId": {
"fields": {
"SfdcAccountId": "SfdcAccountId"
},
"lookupField": "Gsid",
"objectName": "company",
"multiMatchOption": "FIRSTMATCH",
"onNoMatch": "ERROR"
}

}
}

I have yet to test any other CRUD actions but Create seems good to go which seems like a good sign.

This is great, thank you for sharing @bradley! I may have some follow up questions for you if I get the chance to test this out myself 😄


Thanks ​@bradley! That works like a charm.

I’ll just add that for relationship level, it wants to have both company and relationship fields (and not just relationships). This is what I’ve used, without the OwnerId lookup as we’ll parse the User GSID directly:

{
"requests": [
{
"record": {
"referenceId": "1",
"Name": "{{CTA_Name_Token}}",
"RelationshipId": "{{Relationship_GSID_Token}}",
"CompanyId": "{{Company_GSID_Token}}",
"OwnerId": "{{Owner_GSID_Token}}",
"DueDate": "{{YYYY-MM-DD}}",
"type": "{{Objective_Type_Name_Token}}",
"reason": "{{Reason_Name_Token}}",
"status": "{{Status_Name_Token}}",
"priority": "{{Priority_Name_Token}}",
"Comments": "{{comments_token}}",
"CtaGroupId": "{{Success_Plan_GSID_Token}}"
}
}
],
"lookups": {
"RelationshipId": {
"fields": {
"Gsid": "GSID"
},
"lookupField": "Gsid",
"objectName": "relationship",
"multiMatchOption": "FIRSTMATCH",
"onNoMatch": "ERROR"
},
"CompanyId": {
"fields": {
"Gsid": "GSID"
},
"lookupField": "Gsid",
"objectName": "company",
"multiMatchOption": "FIRSTMATCH",
"onNoMatch": "ERROR"
}
}
}