Platform integration
Automations reference
- CategoryPlatform
Overview
The MessageMind automation engine is a trigger / step / variable system that enrolls a contact (or entity like a reservation, appointment, or lead form submission) when a real event fires, then walks that enrollment through a graph of steps (initial-step, conditions, actions, delays, notifications, goals) while resolving campaign tokens from variable families against the live record. Triggers come from first-party events (contact created, label added, appointment booked), channel events (conversation created, Facebook / Instagram comment), and partner integrations (HubSpot, Jobber, Dengro, ScoreApp, Perspective Funnels, Playtomic, Hospitable, Meta Lead Ads, GHL, custom webhooks). Every enrollment is deduped through the entity ledger so a retried webhook never produces a second run.
What MessageMind can do with it
- aiActionInvocation: fires when the AI assistant invokes a defined action during a conversation.
- appointmentBooked: fires when a new appointment is booked.
- appointmentCanceled: fires when an existing appointment is cancelled.
- appointmentCompleted: fires when an appointment is marked completed.
- appointmentNoShow: fires when an appointment is marked as no-show.
- appointmentRescheduled: fires when an existing appointment is moved to a new time.
- contactAddedToStage: fires when a contact enters a pipeline stage.
- contactBirthday: fires on a contact birthday (date-driven).
- contactCreated: fires when a new contact is created in MessageMind.
- contactInteracted: fires when a contact interacts (inbound message / engagement).
- contactMovedToStage: fires when a contact is moved from one pipeline stage to another.
- contactRemovedFromStage: fires when a contact is removed from a pipeline stage.
- conversationCreated: fires when a new conversation is opened on a channel.
- customWebhook: fires on an inbound HTTP call to a MessageMind-minted webhook URL.
- dengroNewEnquiry: fires on a new Dengro enquiry.
- dengroNewLead: fires on a new Dengro lead.
- eventBooked: fires when a calendar event is booked.
- eventCancelled: fires when a calendar event is cancelled.
- eventNoShow: fires when a calendar event is marked no-show.
- eventRescheduled: fires when a calendar event is rescheduled.
- facebookCommentsOnPost: fires when a comment is left on a connected Facebook post.
- ghlWebhook: fires on an inbound GoHighLevel webhook.
- googleSheetConnection: fires on a connected Google Sheet row event.
- guestReviewLeft: fires when a guest leaves a review.
- hospitableReservationCreated: fires when a new Hospitable reservation is created.
- hospitableReservationFinancialsChanged: fires when a Hospitable reservation financials change.
- hospitableReservationStatusChanged: fires when a Hospitable reservation status changes.
- hubspotContactCreated: fires once a new HubSpot contact has been synced into MessageMind.
- instagramCommentsOnPost: fires when a comment is left on a connected Instagram post.
- jobber: fires on a Jobber event (job / client lifecycle).
- labelAdded: fires when a label is added to a contact.
- labelRemoved: fires when a label is removed from a contact.
- metaLeadFormReceived: fires when a Meta (Facebook / Instagram) Lead Ads form submission is received.
- perspectiveFunnelCompleted: fires when a visitor completes a Perspective funnel.
- perspectiveFunnelStarted: fires when a visitor starts a Perspective funnel.
- playtomicOpenMatchCancelled: fires when a Playtomic open match is cancelled.
- playtomicOpenMatchCreated: fires when a Playtomic open match is created.
AI agent use cases
- New lead to welcome: metaLeadFormReceived or dengroNewLead enrolls the contact, a condition branches on source, and a send-message action delivers the first-touch WhatsApp / SMS.
- Cart abandoned to reminder: a customWebhook from the storefront enrolls the contact, a delay waits one hour, then a send-message action nudges with the cart recovery link.
- Post-booking to thank you: appointmentBooked or hospitableReservationCreated enrolls, a delay waits until after the stay / visit, then a send-message action asks for a review.
- Review request after stay: guestReviewLeft or appointmentCompleted enrolls, a condition filters on channel, then a notification pings the team on low ratings.
- Pipeline nurture: contactAddedToStage enrolls, conditions check tenure, delays space the touches, and goal steps exit the contact once the stage changes.
- Comment to DM: facebookCommentsOnPost / instagramCommentsOnPost enrolls, a condition matches the keyword, and a send-message action opens a DM thread.
Configuration
- initial-step: the entry point generated from the trigger, carrying the enrolled entity (contact / reservation / appointment / lead form submission).
- action: send-message, send-ai-reply, assign-team-member, add / remove label, move pipeline stage, google-sheet add-row, google-sheet update-row, and the other side-effect steps resolved through automation.action.helper.mjs.
- condition: branch on contact fields, labels, pipeline stage, custom field types, Google Sheet lookups, WooCommerce order meta / products, first-match routing, and the field-value resolvers.
- delay: pause the enrollment for a fixed or computed duration before advancing.
- collect-data: ask the contact for a field value and store it on the record.
- notification: alert a team member or channel (internal signal, no outbound message to the contact).
- retry-call: retry a failed outbound call step.
- goal: exit condition that short-circuits the remaining steps once met.
Example workflows
How a trigger fires through to a message
- An external event lands (webhook, channel event, scheduler) and the matching registry/triggers/*.trigger.mjs descriptor is resolved by key.
- The generic enroller runs the entity ledger dedup (runOnContact / re-entry queue) so a retried delivery is a no-op instead of a second enrollment.
- The initial-step is created with the enrolled entity and its trigger-specific metadata attached.
- The engine walks to the next step; condition steps evaluate against the live record, delay steps schedule a resume, action steps perform the side effect.
- Campaign tokens inside messages and action payloads are resolved by the matching variable families (contact.family, dengro.family, scoreApp.family, perspective.family, playtomic.family, hospitable.family, reservation.family, metaLeads.family, ghl.family, pipeline.family, and the per-PMS extensions).
- Terminal steps (goal reached, graph exhausted, or failure captured by automation.action.failureReason) close the enrollment and the result is written back for the automation dashboard and errors view.
Limitations
- Enrollments are deduped through the entity ledger: a retried webhook or re-delivered event for the same contact / entity will not create a second run, which is why most triggers are not repeatable by default.
- Variable tokens only resolve against the family the trigger declares (for example a hubspotContactCreated run resolves {contact.*} but not {playtomic_*}); tokens from an unrelated family render empty.
- Trigger tiers (triggerTiers.enrollable and friends) decide whether a trigger can start a new enrollment or only advance an existing one; non-enrollable triggers never create new runs on their own.
- Action steps surface a failureReason on failure (automation.action.failureReason.mjs); the engine does not silently swallow a failed send, it records the reason and stops that branch.
- Google Sheet, label, pipeline stage, assign-team-member, and send-ai-reply actions each have their own validation gate: a misconfigured step is rejected before the run, not partway through.
- Run A Test uses buildTestMetadata on the trigger, so triggers whose test metadata is empty (like hubspotContactCreated) can only be test-run with the contact itself as input.