Skip to main content
Version: 8.3

Customize marketing campaigns

Level: advanced

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

note

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" (CampaignTriggeredEntryGroupSchema code)

Add audience

20

"AddCampaignParticipantSchema" (AddCampaignParticipantSchema code)

Data management

30

"CampaignDataManagementGroupSchema" (CampaignDataManagementGroupSchema code)

Flow logic

40

"CampaignFlowLogicGroupSchema" (CampaignFlowLogicGroupSchema code)

Bulk email

50

"MarketingEmailSchema" (MarketingEmailSchema code)

Outcomes

60

"CampaignOutcomesGroupSchema" (CampaignOutcomesGroupSchema code)

Send audience to Google Ads (available in Creatio 8.3.4 and later)

70

"Google audience element schema" (GoogleAudienceElementSchema code)

Send audience to Meta Ads (available in Creatio 8.3.4 and later)

80

"Facebook audience element schema" (FacebookAudienceElementSchema code)

Landing page (deprecated in Creatio 8.3.3 and later)

"CampaignLandingSchema" (CampaignLandingSchema code)

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" (CampaignStartSignalSchema code)

Add from landing (deprecated in Creatio 8.3.3 and later)

"Campaign start landing element schema" (CampaignStartLandingSchema code)

Add from Creatio landing page (available in Creatio 8.3.4 and later)

20

"CampaignAddFromCreatioLandingPageSchema" (CampaignAddFromCreatioLandingPageSchema code)

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" (AddFromWebPageSignalSchema code)

Add from Facebook form

40 (30 in Creatio 8.3.3)

"Campaign Facebook form start element schema" (CampaignStartFacebookFormSchema code)

Add from event

50 (40 in Creatio 8.3.3)

"Campaign start event element schema" (CampaignStartEventSchema code)

Data management

Eliminate duplicates

10

"Schema element for Deduplicate participants" (CampaignDeduplicatorSchema code)

Add data

20

"Campaign add object schema" (CampaignAddObjectSchema code)

Modify data

30

"Campaign update object schema" (CampaignUpdateObjectSchema code)

Flow logic

Timer

10

"CampaignTimerSchema" (CampaignTimerSchema code)

Random split

20

"Schema element for split gateway" (CampaignSplitGatewaySchema code)

Form submitted on Creatio landing page? (available in Creatio 8.3.4 and later)

30

"Form submitted on landing page?" (CampaignLandingPageSubmissionSchema code)

Form submitted on external landing page? (Web page in Creatio 8.3.3 and earlier)

40

"CampaignWebPageSchema" (CampaignWebPageSchema code)

Add to event

50 (30 in Creatio 8.3.3)

"Schema for campaign add to event element" (CampaignAddToEventSchema code)

Outcomes

Exit from campaign

10

"ExitFromCampaignSchema" (ExitFromCampaignSchema code)

Add to event

20

"Schema for campaign add to event element" (CampaignAddToEventSchema code)

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,
Terrasoft.Configuration.CampaignLandingEntityHandler

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,
Terrasoft.Configuration.CampaignAddFromCreatioLandingPageHandler

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,
Terrasoft.Configuration.CampaignEventEntityHandler

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,
Terrasoft.Configuration.CampaignLandingPageFlowElement

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,
Terrasoft.Configuration.BulkEmailCampaignElement

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,
Terrasoft.Configuration.CampaignLandingEntityHandler

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:

  1. Create a public sealed handler class.

  2. Specify the CampaignEventHandlerBase class as the parent class.

  3. 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.

  4. Implement a default accessible constructor in the class. The class does not need to be generalized.

  5. Compile the configuration. Instructions: Compile the configuration.

  6. Update the configuration library.

  7. 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:

    1. Recompile the configuration.
    2. Clear the storage that contains cached data.
    3. Clear the application pool.
    4. Restart IIS.

Configure a custom action type

note

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:

  1. Add a lookup based on the "Campaign log item type" (CampaignLogItemType code) object that manages custom action types.

  2. Add the required action type to the lookup.

  3. Bind the action type to the package. Instructions: "Data" type schema.

  4. 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 SomeCampaignLogItemTypeID is the ID of the custom action type in the lookup based on the "Campaign log item type" (CampaignLogItemType code) 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)