Drip System Configuration Guide
The Valstorm Drip System allows you to schedule sequential, automated actions (drips) for your records. This system is built upon two core objects: the Drip Definition (the blueprint) and the Drip Enrollment (the active tracking of a record).
1. Drip Definition (drip_definition)
The Drip Definition acts as the template or "blueprint" for your campaign. It defines what should happen, when it should happen, and who it applies to. It does not store the state of individual records; rather, it stores the rules that the system uses to generate events.
Key Configuration Fields
| Field | Type | Description |
|---|---|---|
| Name | Text | The internal name of the campaign (e.g., "New Lead Nurture"). |
| Active | Boolean | Master switch. If disabled, no new steps will execute for any enrollment linked to this definition. |
| Target Schema | Lookup (Schema) | Defines the type of record this drip targets (e.g., lead, contact, opportunity). This ensures the logic receives the correct data type. |
| Automation | Lookup | (Option A) Select a drag-and-drop Automation to execute at every step. The automation will receive the current step number as input logic. |
| Function | Lookup | (Option B) Select a code-based Function to execute. This is an alternative to Automation for developers who prefer writing Python logic for complex drips. |
| Step Configuration | JSON | An array defining the timeline of the drip. It maps step numbers to time delays. |
Example:
[{"step": 1, "delay_minutes": 0}, {"step": 2, "delay_minutes": 1440}] |
| Exit Condition | JSON | A set of rules checked before every step. If the target record matches these rules, the drip stops automatically.
Example:
{"status": "Won"} |
Note: You must select either an Automation OR a Function to handle the logic. The system will use whichever field is populated to execute the campaign steps.
2. Drip Enrollment (drip_enrollment)
The Drip Enrollment represents a single run of a specific record through a Drip Definition. It acts as the "state container," tracking exactly where the record is in the sequence.
Status Tracking
| Field | Description |
|---|
-
Status | The current state of the enrollment:
-
Active: Pending future steps.
-
Paused: Halted manually; no steps will fire until resumed.
-
Completed: All steps in the configuration have finished.
-
Exited: The record met the
Exit Condition(e.g., Client replied), stopping the drip early -
Start Date Time: When the drip will begin executing.
-
Error: System failed to execute a step. |
-
Current Step | The integer number of the last successfully completed step. |
-
Last Run Date | The timestamp of the last executed step. |
Linkage & Metadata
| Field | Type | Description |
|---|---|---|
| Drip Definition | Lookup | Links this enrollment back to the blueprint rules. |
| Target Record | Compound Lookup | A dynamic link to the actual record being nurtured. Because drips can target Leads, Contacts, or custom objects, this field stores both the ID and the Schema Type of the target. |
| Scheduled Item | Lookup | A link to the specific system task waiting to fire the next step. If you cancel an enrollment, the system automatically removes this linked item. |
| Exit Reason | Text | If the status is "Exited" or "Error," this field explains why (e.g., "Exit Condition Met: Status changed to Won"). |
| Error Log | Rich Text | Contains detailed technical logs if the automation or function failed, helping admins debug the issue. |
How It Works
- Enrollment: A Trigger or API call creates a Drip Enrollment record, linking a
Target Record(e.g., Lead: John Doe) to aDrip Definition. It has a start_date_time which will auto-create the first Scheduled Item to run. - Scheduling: The system looks at the
Step Configurationin the Definition. It calculates the delay for Step 1 and creates aScheduled Item. - Execution: When the scheduled time arrives:
- The system checks the
Exit Conditionagainst the Target Record. - If passed, it runs the defined Automation or Function.
- It updates the
Current Stepon the Enrollment. - It schedules the next step based on the configuration.
Examples
Here are 5 concrete examples of Drip System configurations. These highlight the system's flexibility across different objects (Leads, Invoices, Employees) and different types of actions (AI, Tasks, SMS).
1. The "AI-Powered Sales Nurture"
Showcases: Multi-channel outreach (Email + SMS) and AI integration.
- Target Object:
Lead - Trigger: Lead Status moves to "Attempted Contact".
- Exit Condition:
{"status": ["Connected", "Meeting Booked", "Bad Data"]}
The Sequence:
-
Step 1 (Day 0): Automation: Send "Intro Email" with a scheduling link.
-
Step 2 (Day 2): Automation: Send SMS: "Hi [Name], just checking if you saw my email?"
-
Step 3 (Day 5): AI Agent: Run "Lead Researcher" Agent.
-
Action: The Agent scrapes the lead's LinkedIn profile to find recent posts/news and updates a "Personalization Notes" field on the record for the sales rep to use later.
-
Step 4 (Day 7): Automation: Create Task for Owner: "Call [Lead Name] - Use AI notes for opener."
2. The "New Hire Onboarding" Journey
Showcases: Internal HR flows targeting the User/Employee object.
- Target Object:
User(orEmployee) - Trigger: New User created with
Department= "Sales". - Exit Condition:
{"onboarding_status": "Complete"}
The Sequence:
- Step 1 (Day 0 - Start Date): Automation: Send Email: "Welcome to the Team! Here are your logins."
- Step 2 (Day 1): Function:
provision_software_licenses - Action: Python script calls external APIs to create accounts in Slack, Valstorm, and Google Workspace.
- Step 3 (Day 7): Automation: Send Form: "First Week Check-in Survey."
- Step 4 (Day 30): Automation: Create Task for Manager: "Conduct 30-Day Performance Review."
3. The "Overdue Invoice" Chaser
Showcases: Finance automation targeting the Invoice object.
- Target Object:
Invoice - Trigger: Due Date passes AND Balance > $0.
- Exit Condition:
{"status": "Paid"}
The Sequence:
-
Step 1 (Day 1 Past Due): Automation: Send Email to Client: "Friendly Reminder: Invoice #[ID] is overdue."
-
Step 2 (Day 7 Past Due): Automation: Send SMS to Billing Contact: "Urgent: We haven't received payment for Invoice #[ID]."
-
Step 3 (Day 15 Past Due): Function:
suspend_service_access -
Action: Script toggles the client's
Account Statusto "Suspended" to prevent login. -
Step 4 (Day 16 Past Due): Automation: Create Task for CFO: "Review Account for Collections."
4. The "Webinar Post-Event" Pack
Showcases: Content delivery and PDF generation.
- Target Object:
Contact - Trigger: Contact Tagged with "Attended: Q1 Tech Summit".
- Exit Condition:
{"unsubscribed": true}
The Sequence:
-
Step 1 (Day 0): Automation: Send Email: "Thanks for coming! Here is the slide deck."
-
Step 2 (Day 1): Function:
generate_custom_report -
Action: Generates a personalized PDF ROI analysis based on the Contact's industry and emails it to them as an attachment.
-
Step 3 (Day 4): Automation: Send Email: "Did you find the report useful? Here is a calendar link if you want to discuss the data."
5. The "Project Stalled" Risk Alert
Showcases: Operational health checks on Project objects.
- Target Object:
Project - Trigger: Project Status stays in "In Progress" with no updates for > 14 Days.
- Exit Condition:
{"last_activity_date": "Today"}(i.e., someone updated the project).
The Sequence:
- Step 1 (Day 0): Automation: Send Slack DM to Project Manager: "Project [Name] hasn't been updated in 2 weeks. Is this blocked?"
- Step 2 (Day 3): Automation: Send Email to Department Head: "Risk Alert: Project [Name] is stalling."
- Step 3 (Day 7): Function:
downgrade_project_health - Action: Automatically changes the Project's
Health Scorefield to "At Risk" which triggers dashboard red flags.