Skip to main content

Workflow Actions

Actions are the building blocks of your workflows - they define what happens after your trigger fires. Chain actions together to create powerful automations that save time and deliver personalized experiences.

How Actions Work

Actions are executed in sequence, with each action receiving data from previous steps. Use connection paths to handle success and failure scenarios.
Trigger: Data Captured
├── Action 1: Contact Filter (validates data)
│   ├── Success Path → Action 2: Send Email
│   └── Failure Path → Action 3: Add to "Incomplete Data" list

Quick Action Finder

I Want To…Use This ActionCategory
Send an emailContactEmailSendContact
Update user profileContactUpdateContact
Add to email listContactAddToListContact
Award loyalty pointsLoyaltyAwardPointsLoyalty
Send to CRMSalesforceCreateObjectIntegration
Add conditionsContactFilter or DecisionUtility
Send a gift cardLocalCardSendCardFromTemplateCards and Coupons
Issue a campaign giftLocalCardGenerateCampaignGiftCards and Coupons
Send webhookHttpRequestUtility

Contact Actions

Manage contact data, communications, and list memberships.

Data Management

ActionPurposeRequired DataExample Use
ContactUpdateModify contact propertiesField names and valuesUpdate preferences, scores, tags
ContactFilterApply conditional logicFilter conditionsRoute users based on properties
ContactAddToListAdd contact to listList nameSegment users for campaigns
ContactRemoveFromListRemove from listList nameUnsubscribe or re-segment

Communications

ActionPurposeRequired DataExample Use
ContactEmailSendSend personalized emailEmail template, recipientWelcome emails, notifications
ContactSmsSendSend SMS messagePhone number, messageUrgent alerts, mobile campaigns

Rewards & Recognition

ActionPurposeRequired DataExample Use
ContactCouponIssueIssue one or more couponsCoupon offer, quantity (optional)Reward completions, bulk incentives
AssignContactAchievementAward achievement badgeAchievement typeRecognize milestones, gamify
ContactVaultCardIssueIssue digital wallet cardCard templateMembership cards, tickets

ContactCouponIssue Configuration

The ContactCouponIssue action supports issuing multiple coupons in a single workflow step.
SettingDescriptionDefault
Coupon OfferThe coupon offer to issue fromRequired
QuantityNumber of coupons to issue (supports variables)1
Contact LimitMaximum coupons per contact from this offerNo limit
Allow Partial AwardIf enabled, issues available coupons when quantity exceeds remaining limitDisabled
Output Variables: When issuing a single coupon:
  • coupon_id - The issued coupon ID
  • coupon_link - Direct link to the coupon
  • coupon_code - The coupon barcode/code
When issuing multiple coupons:
  • coupon_id - JSON array of coupon IDs
  • coupon_link - JSON array of coupon links
  • coupon_code - JSON array of coupon codes
  • coupon_count - Total number of coupons issued
Output Paths:
  • Success - Coupons issued successfully
  • OfferLimitsExceeded - Contact or offer limits prevent issuing
  • OfferExpired - Coupon offer is no longer active
Example: Issue Multiple Coupons
Trigger: Competition.EntrySubmitted
├── ContactCouponIssue:
│   ├── Offer: "10% Discount"
│   ├── Quantity: 3
│   ├── Contact Limit: 5
│   ├── Allow Partial Award: true
│   ├── Success Path → ContactEmailSend (include coupon_count in message)
│   └── OfferLimitsExceeded Path → ContactEmailSend (limit notification)

Specialized Integrations

ActionPurposeRequired DataExample Use
ContactThuziCheckInThuzi platform check-inEvent detailsEvent attendance tracking

LocalCard Gift Cards

Send digital gift cards to contacts through the LocalCard integration. Requires a LocalCard connected app to be configured in your workspace settings.
ActionPurposeRequired DataExample Use
LocalCardSendCardFromTemplateSend a gift card from a templateCard template ID, card valueReward winners, incentivize participation
LocalCardGenerateCampaignGiftIssue a gift from an existing campaignCampaign ID, gift valueBulk gift distribution, promotional campaigns
LocalCardSendCardFromTemplate configuration:
FieldDescriptionRequired
Card template IDThe LocalCard card template to useYes
Card valueDollar value of the gift card (supports dynamic values)Yes
Delivery methodHow the card is delivered: Email, Sms, or Link (default: Email)No
Recipient messagePersonalized message for the recipient (supports dynamic values)No
Communication messageNotification message sent with the cardNo
Deliver atSchedule delivery for a future date/timeNo
LocalCardGenerateCampaignGift configuration:
FieldDescriptionRequired
Campaign IDThe LocalCard campaign to issue fromYes
Gift valueDollar value of the gift (supports dynamic values)Yes
Delivery methodHow the gift is delivered: Email, Sms, or Link (default: Link)No
Recipient messagePersonalized message for the recipient (supports dynamic values)No
Example: Gift card reward workflow
Trigger: Prize.Awarded
├── ContactFilter: Prize type = "Gift Card"
│   ├── Success: LocalCardSendCardFromTemplate
│   │   ├── Card template: "Reward Gift Card"
│   │   ├── Card value: $25
│   │   └── Delivery: Email
│   └── Failure: ContactEmailSend → "Standard prize notification"
Both LocalCard actions require a LocalCard connected app. Navigate to Settings → Connected Apps and connect your LocalCard account with your API key before using these actions.

Integration Actions

Connect with external platforms and services.

Salesforce CRM

ActionPurposeRequired DataExample Use
SalesforceCreateObjectCreate new CRM recordObject type, field mappingsAdd leads, opportunities, contacts
SalesforceUpdateObjectUpdate existing recordObject ID, field updatesUpdate lead status, add notes
SalesforceGetObjectRetrieve CRM dataObject ID or search criteriaValidate existing records, get context
Example: Lead to CRM Flow
Trigger: Gameplay.DataCapturedQualified
├── SalesforceCreateObject: Create Lead
│   ├── Success: ContactUpdate → Tag "CRM Synced"
│   └── Failure: Add to "CRM Sync Failed" list
└── ContactEmailSend: Confirmation to sales team

Mailchimp Email Marketing

ActionPurposeRequired DataExample Use
MailchimpUpsertAdd/update subscriberEmail, list IDSync contacts to email campaigns
MailchimpAddTagsApply subscriber tagsTag namesSegment for targeted campaigns
MailchimpRemoveTagsRemove subscriber tagsTag namesUpdate segmentation
MailchimpUnsubscribeUnsubscribe contactEmail addressHonor unsubscribe requests
MailchimpArchiveArchive subscriberEmail addressClean inactive subscribers
MailchimpDeletePermanently deleteEmail addressGDPR compliance, data removal
Example: Email List Sync
Trigger: Contact.ListAdded ("Newsletter Subscribers")
├── MailchimpUpsert: Add to Mailchimp list
├── MailchimpAddTags: ["Komo User", "Newsletter"]
└── ContactUpdate: Mark "mailchimp_synced" = true

Braze Customer Engagement

ActionPurposeRequired DataExample Use
BrazeTrackUserSend user event to BrazeEvent name, propertiesTrigger Braze campaigns, analytics

Competition & Gameplay Actions

Actions specific to competitions, games, and user-generated content.
ActionPurposeRequired DataExample Use
AssignBonusCompetitionEntriesGrant extra entriesEntry countReward engagement, boost participation
CompetitionEntryAddTagsTag competition entriesTag namesCategorize entries, track sources
CompetitionEntryRemoveTagsRemove entry tagsTag namesClean up categorization
GameplayFilterFilter gameplay eventsFilter conditionsRoute based on scores, completion
AssignGameplayScoreSet custom scoresScore value, contextCustom scoring beyond default
Example: Engagement Bonus System
Trigger: Gameplay.Action (social share)
├── AssignBonusCompetitionEntries: +3 entries
├── CompetitionEntryAddTags: ["Social Sharer"]
└── LoyaltyAwardPoints: 50 points

Loyalty Actions

Manage loyalty programs, points, and tier memberships.
ActionPurposeRequired DataExample Use
LoyaltyAwardPointsCredit points to accountPoints amount, reasonReward actions, milestone bonuses
LoyaltyRedeemPointsDeduct points for redemptionPoints amount, redemptionProcess point spending
LoyaltyAddToTierPromote to higher tierTier nameRecognize high-value users
LoyaltyRemoveFromTierDemote from tierTier nameHandle tier downgrades
Example: Tier Progression System
Trigger: Loyalty.PointsAwarded
├── ContactFilter: Total points >= 1000
│   ├── Success: LoyaltyAddToTier ("Gold")
│   └── ContactUpdate: Next tier progress
└── ContactEmailSend: Points confirmation

Utility & Flow Actions

Control workflow logic, timing, and external communication.

Flow Control

ActionPurposeRequired DataExample Use
DecisionBranch workflow logicDecision conditionsIf/then logic, A/B routing
SplitCreate parallel branchesBranch conditionsRun multiple actions simultaneously

External Communication

ActionPurposeRequired DataExample Use
HttpRequestSend HTTP requestURL, method, payloadCustom webhooks, API calls
Example: Custom Webhook Integration
Trigger: Prize.Awarded
├── HttpRequest: POST to fulfillment API
│   ├── Success: ContactUpdate → "fulfillment_requested"
│   └── Failure: Add to "Fulfillment Failed" list
└── ContactEmailSend: Winner notification

Action Best Practices

✅ Design for Success and Failure

Always handle both success and failure paths:
Action: SalesforceCreateObject
├── Success Path: 
│   ├── ContactUpdate: Tag "CRM Synced"
│   └── ContactEmailSend: Confirmation
└── Failure Path:
    ├── Add to "CRM Failed" list
    └── HttpRequest: Alert IT team

✅ Use Descriptive Names

Name your actions clearly for easy maintenance:
❌ ContactEmailSend: "Email Template 1"
✅ ContactEmailSend: "Welcome Email - New User Onboarding"

✅ Validate Data Before Actions

Use filters to ensure data quality:
Trigger: Data Captured
├── ContactFilter: Email format is valid
│   ├── Success: ContactEmailSend
│   └── Failure: Add to "Invalid Email" list
Chain related actions for efficiency:
New Member Workflow:
├── ContactUpdate: Set member_status = "active"
├── ContactAddToList: "Active Members"
├── LoyaltyAwardPoints: 100 welcome points
└── ContactEmailSend: Welcome package

Advanced Action Patterns

1. Progressive Data Collection

Build profiles over multiple interactions:
Trigger: Data Captured
├── ContactFilter: Profile completeness < 50%
│   ├── Success: ContactEmailSend ("Complete Your Profile")
│   └── ContactUpdate: profile_complete_date = now()

2. Smart List Management

Automatically manage list memberships:
Trigger: Loyalty.PointsAwarded
├── ContactFilter: Total points >= 500
│   ├── Success: 
│   │   ├── ContactAddToList: "VIP Members"
│   │   └── ContactRemoveFromList: "Standard Members"

3. Multi-Channel Notifications

Send notifications across multiple channels:
High-Value Prize Workflow:
├── Split: Create parallel branches
│   ├── Branch 1: ContactEmailSend (detailed email)
│   ├── Branch 2: ContactSmsSend (urgent SMS)
│   └── Branch 3: HttpRequest (Slack notification to team)

Troubleshooting Actions

Common Issues

ProblemLikely CauseSolution
Action fails silentlyMissing required dataAdd data validation before action
Integration timeoutsExternal API is slowAdd error handling, increase timeout
Duplicate actionsAction runs multiple timesCheck for duplicate triggers or loops
Wrong data passedPrevious action failedVerify success/failure paths

Testing Actions

  1. Test with real data - Use actual contact records and scenarios
  2. Verify external integrations - Confirm data arrives in target systems
  3. Check error handling - Intentionally break integrations to test failure paths
  4. Monitor execution time - Ensure actions complete within reasonable timeframes

Performance Tips

Optimize Action Chains

  • Parallel processing - Use Split actions for independent operations
  • Early filtering - Place filters early to avoid unnecessary actions
  • Batch operations - Group similar actions when possible

External Integration Efficiency

  • Cache responses - Store API responses to avoid duplicate calls
  • Use webhooks - Let external systems push data instead of polling
  • Implement retries - Handle temporary failures with retry logic

What’s Next?

Need help implementing a specific action? Contact support at [email protected]