Process Automations
Automations are event-driven workflows that fire instantly when something happens. Unlike sequences — which run over days and are designed for outreach cadences — automations handle operational tasks in real time: syncing data, notifying your team, updating records, and calling external APIs.
When to Use Automations
Use automations when you need to react to an event immediately and perform one or more actions in response. Common examples:
- A form submission comes in via webhook — create a contact and notify the assigned rep on Slack
- A deal closes — update the CRM record, send a welcome email, and create an onboarding task
- Every Monday morning — pull a report and post a summary to your team’s Slack channel
- An external system sends data — transform it and push it into ScendCore’s CRM
If your workflow involves outreach to contacts over days with delays and personalization, use a sequence instead. If it involves instant, behind-the-scenes processing, use an automation.
Automation Triggers
Every automation starts with a trigger — the event that kicks off the workflow. ScendCore supports three trigger types.
Webhook Trigger
A webhook trigger fires when an external system sends an HTTP request to your automation’s unique webhook URL. This is the most flexible trigger type and works with any system that can send HTTP requests.
Getting Your Webhook URL
- Create a new automation and select Webhook as the trigger type
- ScendCore generates a unique URL for this automation (e.g.,
https://app.scendcore.com/api/automations/webhook/abc123) - Copy this URL and configure it in the external system that will send events
Sending Test Payloads
Before connecting a real system, you can test your webhook:
- Click Send Test in the trigger configuration panel
- ScendCore sends a sample payload and runs the automation so you can verify the flow
- Alternatively, use a tool like webhook.site to inspect payloads before routing them to ScendCore
Security: Secret Tokens
Each webhook trigger includes an optional secret token. When configured, ScendCore verifies that incoming requests include the correct token in the X-Webhook-Secret header. Requests without a valid token are rejected.
To enable:
- In the trigger configuration, toggle Require Secret
- Copy the generated secret token
- Configure the sending system to include
X-Webhook-Secret: <your-token>in the request headers
Schedule Trigger
A schedule trigger fires on a recurring time-based schedule. Use it for periodic tasks like daily reports, weekly cleanups, or monthly summaries.
Schedule Options
| Schedule | Description | Example |
|---|---|---|
| Daily | Runs once per day at a specified time | Every day at 9:00 AM |
| Weekly | Runs once per week on a specified day and time | Every Monday at 8:00 AM |
| Monthly | Runs once per month on a specified date and time | 1st of every month at 10:00 AM |
| Custom (Cron) | Full cron expression for advanced schedules | 0 */4 * * * (every 4 hours) |
Timezone Handling
All schedule times use the timezone configured in your Settings > Organization page. If your team spans multiple timezones, set the organization timezone to the one that makes the most sense for your scheduled tasks (usually your headquarters).
The schedule trigger shows the next three upcoming run times so you can verify it will fire when you expect.
CRM Event Trigger
A CRM event trigger fires when something changes in your ScendCore CRM data. This lets automations react to internal events without any external integration.
Available Events
| Event | Fires When |
|---|---|
contact_created | A new contact is added (via UI, import, or API) |
contact_updated | A contact’s fields are modified |
opportunity_created | A new opportunity is created |
opportunity_stage_changed | An opportunity moves to a different pipeline stage |
deal_closed_won | An opportunity is marked as closed-won |
deal_closed_lost | An opportunity is marked as closed-lost |
task_completed | A task is marked as done |
engagement_created | A new engagement is logged |
Filtering by Field Values
You can add filters to CRM event triggers so the automation only fires when specific conditions are met. For example:
contact_createdwheresource equals "website form"— only react to web leadsopportunity_stage_changedwherestage equals "Negotiation"— only fire when deals reach the negotiation stagecontact_updatedwherelead_score greater than 80— react when contacts become highly scored
Multiple filters are combined with AND logic — all conditions must be true for the automation to fire.
Automation Action Nodes
After the trigger fires, the automation executes a series of action nodes in order. Here are the available action types.
HTTP Request
Sends an HTTP request to any external URL. Use this to integrate with third-party APIs, send data to other systems, or trigger external workflows.
Configuration:
| Field | Description |
|---|---|
| Method | GET, POST, PUT, PATCH, or DELETE |
| URL | The endpoint to call |
| Headers | Key-value pairs for request headers (e.g., Authorization: Bearer token123) |
| Body | JSON body for POST/PUT/PATCH requests |
Template Variables
You can use template variables in the URL, headers, and body to inject data from the trigger or previous nodes:
{
"name": "{{trigger.data.name}}",
"email": "{{trigger.data.email}}",
"source": "scendcore_automation"
}Variables use the {{path.to.field}} syntax and are replaced with actual values at runtime.
Response Data Flow
The HTTP response body is captured and made available to subsequent nodes as {{http_request.response.field}}. This lets you chain API calls — for example, create a record in an external system and use the returned ID in the next step.
Slack Message
Sends a message to a Slack channel. Useful for notifying your team about important events, sharing summaries, or alerting people to items that need attention.
Configuration:
| Field | Description |
|---|---|
| Channel | The Slack channel to post to (selected from a dropdown of your connected channels) |
| Message | The message content. Supports Slack markdown formatting and template variables. |
Prerequisites: Your Slack workspace must be connected. See the Slack integration setup guide in Settings > Integrations.
Message Templates with Variables
Slack messages support the same {{variable}} syntax as other nodes. For example:
New lead from website:
*Name:* {{trigger.data.name}}
*Email:* {{trigger.data.email}}
*Company:* {{trigger.data.company}}CRM Update
Updates an existing record in your ScendCore CRM. Use this to automatically tag contacts, change opportunity stages, update custom fields, or modify any record based on incoming data.
Configuration:
| Field | Description |
|---|---|
| Entity type | contact, opportunity, or account |
| Record identifier | How to find the record — by ID, email, or a field match |
| Field mappings | Which fields to update and what values to set |
Field Mappings
Each field mapping has a target field (the CRM field to update) and a value (either a static value or a template variable). For example:
| Target Field | Value |
|---|---|
lead_source | "webinar" |
lead_score | {{trigger.data.score}} |
assigned_rep_id | {{trigger.data.rep_id}} |
Create Record
Creates a new record in your ScendCore CRM. Use this to automatically add contacts, opportunities, tasks, or engagements based on incoming data.
Configuration:
| Field | Description |
|---|---|
| Entity type | contact, opportunity, task, or engagement |
| Field mappings | Which fields to set on the new record |
Supported Entity Types and Required Fields
| Entity | Required Fields |
|---|---|
| Contact | email or phone (at least one) |
| Opportunity | name, pipeline_id |
| Task | title, assigned_to |
| Engagement | contact_id, type |
All other fields are optional and can be populated using static values or template variables.
Data Transform
Processes and transforms data between nodes. Use this when the data from a trigger or API response needs to be reshaped before passing it to the next action.
Operations:
| Operation | Description | Example |
|---|---|---|
| Map | Transform each item in an array | Extract just the email field from a list of objects |
| Filter | Keep only items matching a condition | Only contacts with status = active |
| Extract | Pull a nested field to the top level | Get response.data.results as the output |
Configuration:
- Input — The data to transform (usually
{{trigger.data}}or a previous node’s output) - Operation — Map, filter, or extract
- Expression — The transformation rule
The output of a Data Transform node is available to subsequent nodes as {{data_transform.output}}.
Building Your First Automation
Here is a walk-through for a common scenario: When a form is submitted, create a contact and notify the team.
Step 1: Create the Automation
- Go to Automations in the left sidebar
- Click + Create Automation
- Name it “Website Form to Contact + Slack Notification”
- Click Create
Step 2: Configure the Webhook Trigger
- The trigger is already selected as Webhook by default
- Copy the webhook URL — you will paste this into your form tool (Typeform, HubSpot Forms, etc.)
- Optionally enable the secret token for security
Step 3: Add a Create Record Node
- Click + Add Action below the trigger
- Select Create Record
- Set entity type to Contact
- Map the form fields to CRM fields:
| Target Field | Value |
|---|---|
first_name | {{trigger.data.first_name}} |
last_name | {{trigger.data.last_name}} |
email | {{trigger.data.email}} |
company | {{trigger.data.company}} |
lead_source | "website_form" |
Step 4: Add a Slack Message Node
- Click + Add Action below the Create Record node
- Select Slack Message
- Choose your sales team channel
- Write the message:
New website lead:
*{{trigger.data.first_name}} {{trigger.data.last_name}}*
Company: {{trigger.data.company}}
Email: {{trigger.data.email}}Step 5: Activate and Test
- Click Activate to turn the automation on
- Click Send Test on the trigger to run the automation with sample data
- Check that a test contact was created and the Slack message was posted
- Connect your form tool to the webhook URL
Automation Templates
ScendCore includes pre-built automation templates to get you started quickly.
| Template | Trigger | Actions | Use Case |
|---|---|---|---|
| Form Submission Handler | Webhook | Create Contact, Notify Slack | Capture web leads |
| Deal Closed Notification | CRM Event | Slack Message, Create Task | Celebrate wins, kick off onboarding |
| Daily Pipeline Summary | Schedule (Daily) | HTTP Request, Slack Message | Morning pipeline digest |
| Lead Scoring Update | CRM Event | CRM Update | Auto-tag high-value contacts |
| External CRM Sync | Webhook | Data Transform, HTTP Request | Push data to external systems |
To use a template:
- Go to Automations and click + Create Automation
- Click Start from Template instead of creating a blank automation
- Select a template and click Use Template
- Customize the configuration for your specific needs (channels, field mappings, URLs)
- Activate when ready
Monitoring Automation Runs
Run History
Every time an automation fires, ScendCore logs the run. Go to the automation detail page and click the Runs tab to see:
| Column | Description |
|---|---|
| Run ID | Unique identifier for this run |
| Started | When the trigger fired |
| Duration | How long the entire run took |
| Status | Success, failed, or partial |
| Trigger data | The data that triggered the run (click to expand) |
Node Execution Logs
Click any run to see the execution log for each node:
- Status — Whether the node succeeded or failed
- Input — The data the node received
- Output — The data the node produced (API responses, created record IDs, etc.)
- Duration — How long the node took to execute
- Error (if failed) — The error message and details
Debugging Failed Runs
When a run fails, the execution log pinpoints which node failed and why. Common issues:
| Problem | Cause | Fix |
|---|---|---|
| HTTP Request node returns 401 | API key expired or invalid | Update the API key in the node configuration |
| Create Record fails with validation error | Required field missing | Check field mappings and ensure all required fields have values |
| Slack Message fails | Slack integration disconnected | Reconnect Slack in Settings > Integrations |
| Template variable renders as empty | Wrong variable path | Check the trigger data to verify the field name matches your variable |
You can re-run a failed automation from the run detail page. ScendCore will re-execute from the failed node using the original trigger data.
Data Flow Between Nodes
Understanding how data passes between nodes is key to building effective automations.
How It Works
Each node in an automation produces output data that subsequent nodes can reference. The data flows forward through the automation like a pipeline:
- Trigger fires and produces
trigger.data(the webhook payload, schedule metadata, or CRM event data) - Node 1 executes using
trigger.dataand produces its own output - Node 2 can reference both
trigger.dataand Node 1’s output - And so on
Template Variable Syntax
Variables use double curly braces: {{source.field.subfield}}
Available Variables by Source
| Source | Syntax | Description |
|---|---|---|
| Trigger data | {{trigger.data.field_name}} | Fields from the trigger payload |
| Trigger metadata | {{trigger.timestamp}} | When the trigger fired |
| HTTP Request output | {{http_request.response.field}} | Response body fields from an HTTP Request node |
| Create Record output | {{create_record.id}} | The ID of the newly created record |
| Data Transform output | {{data_transform.output}} | The transformed data |
Nested Fields
For nested data, use dot notation: {{trigger.data.address.city}}
Array Access
For arrays, use bracket notation: {{trigger.data.items[0].name}}
Best Practices
Keep Automations Focused
Each automation should do one job well. Instead of building a single automation that handles form submissions, sends Slack messages, syncs to Salesforce, and creates tasks, split that into multiple automations. This makes each one easier to understand, test, and debug.
Use Conditions to Handle Edge Cases
Not every trigger payload will have all the data you expect. Use Condition nodes (or field filters on the trigger) to handle missing data gracefully. For example, only create a contact if the email field is present.
Test Before Connecting Real Systems
When building an automation with HTTP Request nodes that call external APIs:
- First, point the URL at httpbin.org or webhook.site to verify the request format
- Check the response data structure in the run logs
- Then switch to the real API URL once you are confident the payload is correct
This avoids creating junk data in production systems during development.
Monitor the First Few Runs
After activating a new automation, watch the first 5-10 runs closely in the run history. Verify that:
- The trigger data matches what you expected
- Each node succeeds
- The output data is correct
- External systems receive the right data
Once the automation is running reliably, you can check in less frequently.
Use Descriptive Names
Name your automations based on what they do, not how they work. “New Lead to Slack + CRM” is better than “Webhook Automation 1.” Future you (and your teammates) will thank you when you have 20 automations and need to find the right one.