Customize marketing campaigns
A marketing campaign is a marketing workflow that automates interactions with a specific audience over a defined period to achieve a particular goal. Campaigns in Creatio are logic-driven processes that orchestrate how contacts are nurtured, notified, and engaged using multiple communication channels.
Campaigns are configured using the Campaign Designer, a no-code tool that enables the setup of multistep email threads, event triggers, conditional flows, and engagement tracking. These campaigns run automatically based on predefined rules and timelines. Learn more: Marketing campaigns (user documentation).
Campaign flow diagrams include campaign elements connected by flows. Each element performs a specific function in the campaign logic, such as adding participants, sending communications, updating data, or controlling the sequence of campaign steps.
A flow is a transition between campaign elements that determines how participants move through the campaign.
Flows define:
- the sequence of campaign steps
- conditions for transitions
- timing of campaign actions
They ensure that campaign participants follow the correct path according to the campaign logic. Learn more: Transitions between campaign elements (user documentation).
Use the Campaigns section to configure campaigns and design campaign flow diagrams. The Campaign Designer supports the following types of campaign elements and flows:
- Out-of-the-box elements and flows – predefined elements and transitions available in the platform. They define standard campaign actions and the sequence of steps. Learn more: Campaign element reference, Transitions between campaign elements (user documentation).
- Custom elements and flows – developer-implemented components and transitions that extend the standard campaign functionality and enable custom campaign logic.
Campaign element execution depends on element configuration and position in the campaign flow diagram. Audience-related elements, such as Adding event audience, typically define the campaign participants at the beginning of the flow, while elements such as Exit from campaign determine when participants leave the campaign.
Campaign execution supports the following call types:
- Synchronous call — executed according to the order specified in the flow diagram. The transition to the next element occurs only after the current element finishes executing.
- Asynchronous call — waits for the execution of external systems, asynchronous services, or user interactions. For example, waiting for a contact to click a link in a Bulk email element.
Campaign element groups
This functionality is available for Creatio 8.3.3 and later.
Campaign elements in the Campaign Designer are organized into functional groups. Each group and element has a predefined index that determines its position in the Elements area of the Campaign Designer. This grouping helps organize the Elements area and makes it easier for users to find the required campaign elements.
Example: Implement a custom campaign element.
The table below lists the out-of-the-box groups and standalone elements displayed in the Elements area of the Campaign Designer and shows their position in the panel, as well as the schemas that define them.
Group or standalone element | Index of group or element | Schema of group or element |
|---|---|---|
Triggered entry | 10 | "CampaignTriggeredEntryGroupSchema" ( |
Add audience | 20 | "AddCampaignParticipantSchema" ( |
Data management | 30 | "CampaignDataManagementGroupSchema" ( |
Flow logic | 40 | "CampaignFlowLogicGroupSchema" ( |
Bulk email | 50 | "MarketingEmailSchema" ( |
Outcomes | 60 | "CampaignOutcomesGroupSchema" ( |
Send audience to Google Ads (available in Creatio 8.3.4 and later) | 70 | "Google audience element schema" ( |
Send audience to Meta Ads (available in Creatio 8.3.4 and later) | 80 | "Facebook audience element schema" ( |
Landing page (deprecated in Creatio 8.3.3 and later) | — | "CampaignLandingSchema" ( |
Each group contains campaign elements that perform specific actions in a campaign flow. These elements are displayed inside their corresponding groups and are ordered by their index.
The table below lists the out-of-the-box campaign elements, the groups they belong to, their order within the group, and the schemas that implement their functionality.
Group | Element | Element index | Element schema |
|---|---|---|---|
Triggered entry | Triggered adding | 10 | "Campaign start signal schema" ( |
Add from landing (deprecated in Creatio 8.3.3 and later) | — | "Campaign start landing element schema" ( | |
Add from Creatio landing page (available in Creatio 8.3.4 and later) | 20 | "CampaignAddFromCreatioLandingPageSchema" ( | |
Add from external landing page (Add from web page in Creatio 8.3.3 and earlier) | 30 (20 in Creatio 8.3.3) | "Add from web page signal schema" ( | |
Add from Facebook form | 40 (30 in Creatio 8.3.3) | "Campaign Facebook form start element schema" ( | |
Add from event | 50 (40 in Creatio 8.3.3) | "Campaign start event element schema" ( | |
Data management | Eliminate duplicates | 10 | "Schema element for Deduplicate participants" ( |
Add data | 20 | "Campaign add object schema" ( | |
Modify data | 30 | "Campaign update object schema" ( | |
Flow logic | Timer | 10 | "CampaignTimerSchema" ( |
Random split | 20 | "Schema element for split gateway" ( | |
Form submitted on Creatio landing page? (available in Creatio 8.3.4 and later) | 30 | "Form submitted on landing page?" ( | |
Form submitted on external landing page? (Web page in Creatio 8.3.3 and earlier) | 40 | "CampaignWebPageSchema" ( | |
Add to event | 50 (30 in Creatio 8.3.3) | "Schema for campaign add to event element" ( | |
Outcomes | Exit from campaign | 10 | "ExitFromCampaignSchema" ( |
Add to event | 20 | "Schema for campaign add to event element" ( |
After you understand how campaign elements are organized in the Campaign Designer, you can implement your own custom group and reorder campaign elements.
Implement a custom campaign element
Example: Implement a custom campaign element.
Base classes for campaign elements
View a list of classes that let you implement a custom campaign element in the table below.
Class | Type | Description |
|---|---|---|
Terrasoft.manager.ProcessFlowElementSchema | JS | The base class for process flow element schemas. |
Terrasoft.manager.CampaignBaseCommunicationSchema | JS | The base schema class for campaign communication elements. |
Terrasoft.manager.CampaignBaseAudienceSchema | JS | The base schema class for campaign audience elements. |
BaseCampaignSchemaElementPage | JS | The base schema of the element property panel. Each custom element property panel extends the base schema. |
Terrasoft.manager.CampaignSchemaManager | JS | The manager class that handles campaign schema definitions and initialization. |
Terrasoft.Core.Campaign.CampaignProcessFlowElement | C# | The base class of the executable campaign element. |
Terrasoft.Core.Campaign.CampaignSchemaElement | C# | The base class for campaign element definitions in a campaign schema. |
Terrasoft.Configuration.CampaignStartSignalElement | C# | The class that implements the Triggered adding campaign element. |
Terrasoft.Configuration.CampaignStartSignalElement, | C# | The class that implements the Add from landing campaign element. The Add from landing element is deprecated in Creatio 8.3.3 and later. |
Terrasoft.Configuration.CampaignAddFromCreatioLandingPageElement, | C# | The class that implements the Add from Creatio landing page campaign element. Available in Creatio 8.3.4 and later. |
Terrasoft.Configuration.AddFromWebPageSignalElement | C# | The class that implements the Add from external landing page (Add from web page in Creatio 8.3.3 and earlier) campaign element. |
Terrasoft.Configuration.CampaignStartFacebookFormElement | C# | The class that implements the Add from Facebook form campaign element. |
Terrasoft.Configuration.CampaignStartSignalElement, | C# | The class that implements the Add from event campaign element. |
Terrasoft.Configuration.AddCampaignParticipantElement | C# | The class that implements the Add audience campaign element. |
Terrasoft.Configuration.ExcludeCampaignAudienceElement | C# | The class that implements the Eliminate duplicates campaign element. |
Terrasoft.Configuration.CampaignAddObjectElement | C# | The class that implements the Add data campaign element. |
Terrasoft.Configuration.CampaignUpdateObjectElement | C# | The class that implements the Modify data campaign element. |
Terrasoft.Configuration.CampaignTimerElement | C# | The class that implements the Timer campaign element. |
Terrasoft.Configuration.CampaignSplitGatewayElement | C# | The class that implements the Random split campaign element. |
Terrasoft.Configuration.CampaignLandingPageElement, | C# | The class that implements the Form submitted on Creatio landing page? campaign element. Available in Creatio 8.3.4 and later. |
Terrasoft.Configuration.CampaignWebPageElement | C# | The class that implements the Form submitted on external landing page? (Web page in Creatio 8.3.3 and earlier) campaign element. |
Terrasoft.Configuration.EventConditionalTransitionElement | C# | The class that implements the Add to event campaign element. |
Terrasoft.Configuration.MarketingEmailElement, | C# | The class that implements the Bulk email campaign element. |
Terrasoft.Configuration.ExitFromCampaignElement | C# | The class that implements the Exit from campaign element. |
Terrasoft.Configuration.CampaignAddToEventElement | C# | The class that implements the Send audience to Google Ads campaign element. Available in Creatio 8.3.4 and later. |
Terrasoft.Configuration.FacebookAudienceElement | C# | The class that implements the Send audience to Meta Ads campaign element. Available in Creatio 8.3.4 and later. |
Terrasoft.Configuration.CampaignStartSignalElement, | C# | The class that implements the Landing page campaign element. The Landing page element is deprecated in Creatio 8.3.3 and later. |
Handle campaign events
Use the event handler mechanism to implement campaign event handling. You can handle saving, copying, deleting, starting, and stopping campaign events.
To implement campaign event handling:
-
Create a
public sealedhandler class. -
Specify the
CampaignEventHandlerBaseclass as the parent class. -
Describe the event handler signatures in the class. To do this, implement the corresponding interfaces listed in the table below.
Interface
Description
IOnCampaignBeforeSave
Contains a method that is called before the campaign is saved.
IOnCampaignAfterSave
Contains a method that is called after the campaign is saved.
IOnCampaignDelete
Contains a method that is called before the campaign is deleted.
IOnCampaignStart
Contains a method that is called before the campaign is started.
IOnCampaignStop
Contains a method that is called before the campaign is stopped.
IOnCampaignValidate
Contains a method that is called when the campaign is validated. When you implement the interface, we recommend saving errors to the campaign schema using the
AddValidationInfo(string)method.IOnCampaignCopy
Contains a method that is called after the campaign is copied.
-
Implement a default accessible constructor in the class. The class does not need to be generalized.
-
Compile the configuration. Instructions: Compile the configuration.
-
Update the configuration library.
-
Include the created types in this library. Otherwise, the "Parameter 'type' cannot be null" error might occur when saving the campaign. To fix the error:
- Recompile the configuration.
- Clear the storage that contains cached data.
- Clear the application pool.
- Restart IIS.
Configure a custom action type
This functionality is available for Creatio 8.3.4 and later.
When a custom campaign element runs, Creatio logs a record in the Campaign Progress Check. Out of the box, custom elements write these records using a generic action type, which makes it difficult to understand what actually happened during campaign execution. Since version 8.3.4, Creatio lets you define a custom action type to log each execution under a specific action type. This is useful for troubleshooting, monitoring campaign behavior, and validating that custom logic works as expected.
To configure a custom action type:
-
Add a lookup based on the "Campaign log item type" (
CampaignLogItemTypecode) object that manages custom action types. -
Add the required action type to the lookup.
-
Bind the action type to the package. Instructions: "Data" type schema.
-
Reference the action type in the source code of the campaign element.
Example that uses the action type in the source code of the campaign element/* Define the ID of custom action type associated with this element. */protected override Guid Action {get {return new Guid("SomeCampaignLogItemTypeID");}}Where
SomeCampaignLogItemTypeIDis the ID of the custom action type in the lookup based on the "Campaign log item type" (CampaignLogItemTypecode) object.
Implement a custom flow for a campaign element
Use custom flows to extend the default campaign logic and implement additional transition conditions between campaign elements.
Example: Implement a custom flow for a campaign element.
View the classes you can use to implement a custom flow for a campaign element in the table below.
Class | Type | Description |
|---|---|---|
Terrasoft.Configuration.SequenceFlowElement | C# | The class that implements an unconditional flow. |
Terrasoft.Configuration.ConditionalSequenceFlowElement | C# | The class that implements a conditional flow. |
Terrasoft.Configuration.EmailConditionalTransitionElement | C# | The class that implements a response-based flow. |
See also
Marketing campaigns (user documentation)