Skip to content

4.3 Templates & Data Flow ​

You've learned about dependencies and how to configure them. Now let's master how columns access data from each other and explore common data flow patterns for building reliable automations.


How Columns Access Data ​

When you configure a column, you often need to use data from other columns in the same row. The system provides an intuitive way to do this.

The Basic Concept ​

Think of it like filling in a form where you can reference answers from previous questions. When configuring a column, you can insert data from other columns by typing the column name.

How it works:

  • Press CTRL + SPACE or start typing a column name
  • A dropdown appears showing available columns
  • Select the column you want to use
  • The system displays it as a green badge
Example: Accessing Column Data
Try typing a column name or press CTRL + SPACE to see available columns
πŸ’‘ Selected columns appear as green badges. Click a column from the dropdown to add it.

What you see:

  • As you type, matching columns appear in a dropdown
  • Selected columns show as green badges with the column label
  • Nested data (like company information) shows as arrows: Company β†’ Name

Accessing Data Step by Step ​

Step 1: Basic Column Access ​

The simplest case: use data from a single column.

Example: Email Column

When you need to use an email address in another column:

  1. Click in the input field
  2. Press CTRL + SPACE
  3. Type "email" or scroll to find it
  4. Click to select
  5. You see a green badge: Email

The system automatically inserts the email value when the column runs.

How to Access a Column
1
Click in the input fieldπŸ‘†
2
Press CTRL + SPACE⌨️
3
Type "email" or scroll to find itπŸ”
4
Click to selectβœ…
What you see:
Selected: Email
πŸ’‘ Tip: The system automatically inserts the actual email value when the column runs for each row.

Step 2: Accessing Nested Properties ​

Some columns contain complex data with multiple pieces of information. You can access specific parts.

Example: Company Enrichment Data

If a column called "Company Data" contains:

  • Company name
  • Location (city, state)
  • Employee count
  • Revenue

You can access specific pieces:

To get the company name:

  1. Type "Company Data"
  2. Select it
  3. Type a period (.)
  4. Dropdown shows: Name, Location, Employees, Revenue
  5. Select "Name"
  6. Badge shows: Company Data β†’ Name
Accessing Nested Properties
Example: Company Data Column Contains:
Company Name: Acme Corp
Location:
  - City: Seattle
  - State: WA
Employees: 2500
Revenue: $500M
How to access specific parts:
Company Data β†’ Name
β†’
"Acme Corp"
Company Data β†’ Location β†’ City
β†’
"Seattle"
Company Data β†’ Employees
β†’
"2500"
πŸ’‘ Autocomplete Helps You
1. Type "Company Data."
2. Dropdown shows: Name, Location, Employees, Revenue
3. Select "Location"
4. Type another period "."
5. Dropdown shows: City, State
6. Select what you need

Common patterns:

  • Company Data β†’ Name - Get company name
  • Company Data β†’ Location β†’ City - Get city from nested location
  • Company Data β†’ Employees - Get employee count

Step 3: Using Multiple Columns ​

You can combine data from multiple columns in a single field.

Example: Personalized Email

Create a message using first name, company name, and job title:

Hi [First Name],

I see you're the [Job Title] at [Company Name].
I'd love to schedule a quick call to discuss...

How to build this:

  1. Type "Hi "
  2. Press CTRL + SPACE, select First Name
  3. Type ", I see you're the "
  4. Select Job Title
  5. Type " at "
  6. Select Company Name
  7. Continue with your message
Combining Multiple Columns
Building your message:
Hi First Name ,
I see you're the Job Title at Company Name .
I'd love to schedule a quick call to discuss...
For this row:
First Name:John
Job Title:VP of Sales
Company Name:Acme Corp
The result will be:
Hi John,

I see you're the VP of Sales at Acme Corp.
I'd love to schedule a quick call to discuss...
✨ Magic: The system automatically fills in the actual values for each row!

The result automatically fills in the actual values for each row.


Understanding Data Flow Patterns ​

Now that you know how to access data, let's explore common patterns for organizing your automations.


Pattern 1: Linear Pipeline ​

What it is: Columns execute one after another in a chain.

Visual representation:

Linear Pipeline Pattern
Columns execute one after another in a chain
Email
Validate
Find Company
Extract Name
Update CRM
βœ… Advantages
  • β€’ Simple to understand
  • β€’ Easy to debug
  • β€’ Clear cause-and-effect
⚠️ Considerations
  • β€’ Slower (runs sequentially)
  • β€’ One failure stops the chain
  • β€’ No parallel processing

When to use:

  • Each step needs the result from the previous step
  • Simple, sequential operations
  • Easy to understand and debug

Example: Lead Enrichment

Email β†’ Validate Email β†’ Find Company β†’ Extract Company Name β†’ Update CRM

Characteristics:

  • βœ… Simple and clear
  • βœ… Easy to follow and debug
  • ⚠️ Slower (runs one at a time)
  • ⚠️ If one step fails, chain stops

Pattern 2: Parallel Enrichment ​

What it is: Multiple columns run at the same time, then results combine.

Visual representation:

email_valid completes
Done
β†™β†˜
basic_info starts
Processing
Uses email
company_details starts
Processing
Uses company_name
↓
Both complete independently
⚑ Faster! Parallel processing saves time

When to use:

  • Gathering data from multiple sources
  • Maximize speed
  • Want backup data sources

Example: Multi-Source Company Research

               β”Œβ†’ Clearbit API ─┐
Email Address ─┼→ Apollo API ───┼→ Combined Results
               β””β†’ Hunter API β”€β”€β”€β”˜
   (all run simultaneously)

Characteristics:

  • βœ… Fast (runs in parallel)
  • βœ… If one source fails, others still work
  • βœ… More complete data
  • ⚠️ More API calls = higher costs

Pattern 3: Branching Logic ​

What it is: Different paths based on conditions.

Visual representation:

Branching Logic Pattern
Different paths based on conditions
Email
Basic Research
Lead Score
Score > 80
Premium Research
$5/call
Score 50-80
Standard Research
$1/call
Score < 50
Skip (save money)
$0
πŸ’° Save money by only running expensive operations on high-value leads
βœ… Advantages
  • β€’ Cost-effective
  • β€’ Flexible paths
  • β€’ Optimized processing
⚠️ Considerations
  • β€’ More complex logic
  • β€’ Need to define conditions
  • β€’ Testing multiple paths

When to use:

  • Different actions for different data
  • Save costs by skipping unnecessary operations
  • Tiered processing (basic vs. premium)

Example: Lead Qualification

Email β†’ Basic Research β†’ Lead Score
                            ↓
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”
              Score > 80        Score 50-80        Score < 50
                    ↓               ↓                  ↓
           Premium Research   Standard Research    Skip (save money)

Characteristics:

  • βœ… Cost-effective (skip what's not needed)
  • βœ… Flexible paths
  • βœ… Optimized processing
  • ⚠️ More complex setup

Pattern 4: Human-in-the-Loop ​

What it is: Automation stops for human review before continuing.

Visual representation:

Human-in-the-Loop Pattern
Automation stops for human review before continuing
Research
Auto
Automatic
β†’
Draft Email
Auto
Automatic
β†’
Human Review
Manual
β†’
Send Email
Manual
How it works:
  1. 1. System automatically generates email draft
  2. 2. You review the draft and make any edits
  3. 3. You check an "Approved" checkbox when ready
  4. 4. Send Email column only runs if approved
  5. 5. You manually click "Send" button for final safety
βœ… Advantages
  • β€’ Safe (human oversight)
  • β€’ Can edit before sending
  • β€’ Accountability tracked
  • β€’ Prevents mistakes
⚠️ Considerations
  • β€’ Slower (waits for human)
  • β€’ Requires attention
  • β€’ Need review process
  • β€’ Not fully automated
πŸ›‘οΈ Best for: Sending emails, making purchases, or any action that can't be undone

When to use:

  • Sending emails or messages
  • Making purchases or commitments
  • AI-generated content that needs review
  • Actions that can't be undone

Example: AI Email Campaign

Research β†’ Draft Email β†’ [HUMAN REVIEWS] β†’ Send Email
         (automatic)    (automatic)  (manual check)  (manual trigger)

How it works:

  1. System automatically generates email draft
  2. You review the draft and make edits
  3. You check an "Approved" checkbox
  4. Final column only runs if approved
  5. You manually click "Send" button

Characteristics:

  • βœ… Safe (human oversight)
  • βœ… Can edit before sending
  • βœ… Accountability
  • ⚠️ Slower (waits for human)
  • ⚠️ Requires attention and process

Understanding Cell States ​

As your automation runs, cells change states to show progress. Here's what you actually see:

StateColorIconMeaning
ReadyGrayβ€”Not processed yet
QueuedBlue⏱Waiting to execute
RunningBlue (pulse)⟳Currently executing
CompletedGreenβœ“Success with data
ErrorRedβœ—Execution failed
Rate LimitedYellow⏸️Throttled by rate limit
SkippedGray⊘Intentionally skipped

State Meanings ​

Ready (gray)

  • Column hasn't run yet
  • Waiting for dependencies

Queued (gray with clock icon, pulsing)

  • Column is in line to run
  • Will start soon

Running (gray with spinning gear)

  • Column is currently executing
  • Processing data

Rate Limited (yellow with pause icon)

  • Column is waiting due to rate limits
  • Protecting API from too many requests

Completed (green badge)

  • Column finished successfully
  • Data is available

Error (blue badge with lightning bolt)

  • Column failed
  • Click to see error details

Skipped (Condition failed) (gray with option icon)

  • Column didn't run because condition was false
  • Intentional skip

Skipped (Dependencies not present) (gray with slash icon)

  • Required dependency data is missing
  • Column can't run without it

Troubleshooting Guide ​

When things don't work as expected, here's how to diagnose and fix common issues.

Issue 1: "Column Never Executes" ​

Symptom: Cells stay gray (Ready), never change

Issue
Column Never Executes
Symptom:
Cells stay gray (Ready), never change state
Possible Causes & Fixes:
Dependencies Not Satisfied
β€’Click the gray cell
β€’Look at the detail panel on the right
β€’Check which dependencies are not complete
Fix: Wait for or fix the blocking dependencies
Condition Failed
β€’Cell shows "Skipped (Condition failed)"
β€’Review the condition logic
β€’Check if skip is intentional
Fix: Modify condition if needed, or accept the skip
Run Mode is Manual
β€’Open column configuration
β€’Check the "Run Mode" setting
β€’See if it's set to "Manual"
Fix: Change to "Once" or "Always", or click Run button

Diagnosis A: Dependencies Not Satisfied

  1. Click the gray cell
  2. Look at the detail panel on the right
  3. Check which dependencies are not complete

Fix: Wait for or fix the blocking dependencies


Diagnosis B: Condition Failed

The column shows "Skipped (Condition failed)"

Fix:

  • Check if the skip is intentional
  • Review the condition to ensure it's correct
  • Modify the condition if needed

Diagnosis C: Run Mode is Manual

The column is set to only run when you click it.

Fix:

  • If it should run automatically: Change to "Once" or "Always"
  • If it should stay manual: Click the Run button

Issue 2: "Column Executes But Fails" ​

Symptom: Cell turns from gray to blue (Running) to blue (Error)

Issue
Column Executes But Fails
Symptom:
Cell changes from gray to Running, then shows Error badge (blue with lightning)
Common Causes & Fixes:
Column Name Typo
Error: Column "emaail" not found
Cause: Typo in column selection
Fix: Open column configuration, fix spelling, use CTRL + SPACE for autocomplete
Missing Data
Error: Cannot access property "name" on null
Cause: A previous column returned no data
Fix: Add condition to check data exists, or handle missing data in custom code
Authentication Failed
Error: 401 Unauthorized
Cause: API key expired or invalid
Fix: Go to Settings β†’ Accounts, find integration, click Reconnect, re-authenticate
πŸ’‘ Tip: Click the Error badge to see the full error message and details

Diagnosis A: Column Name Typo

Error says: "Column 'emaail' not found"

Fix:

  1. Open column configuration
  2. Find the typo (emaail β†’ email)
  3. Use CTRL + SPACE to select correctly
  4. Save and re-run

Diagnosis B: Missing Data

Error says: "Cannot access property 'name' on null"

Cause: A previous column returned no data

Fix Option 1 - Add Condition: Only run this column if the data exists

Fix Option 2 - Use Custom Code: Handle missing data gracefully (covered in advanced sections)


Diagnosis C: Authentication Failed

Error says: "401 Unauthorized"

Fix:

  1. Go to Settings β†’ Accounts
  2. Find the integration (e.g., "Clearbit")
  3. Click "Reconnect"
  4. Re-authenticate
  5. Re-run failed cells

Issue 3: "Wrong Data in Cell" ​

Symptom: Cell shows "Completed" but data is incorrect

Diagnosis: Wrong Selection

Example problem:

  • Column should show: "John Smith"
  • Actually shows: "John"

Cause: Selected only First Name instead of both First Name and Last Name

Fix:

  1. Open column configuration
  2. Review what's selected
  3. Correct the selection
  4. Re-run the column

Issue 4: "Too Slow" ​

Symptom: Cells stay "Queued" for a long time

Issue
Too Slow / Long Wait Times
Symptom:
Cells stay "Queued" or "Running" for a long time
Possible Causes:
Rate Limiting Normal
Symptom: Cells show "Rate Limited" (yellow with pause icon)
This is usually intentional to protect external APIs and prevent hitting usage limits
Options:
  • β€’ Wait (usually the right choice)
  • β€’ Increase rate limit carefully if you know it's safe
Slow External Service
Symptom: Cells stay "Running" for minutes
External API is slow to respond or processing complex data
Options:
  • β€’ Accept the wait time
  • β€’ Use a faster API if available
  • β€’ Contact API provider about performance
Too Many Dependencies
Symptom: Column depends on many other columns (e.g., 15+)
Must wait for all dependencies to complete first
Options:
  • β€’ Only add dependencies you actually need
  • β€’ Remove unnecessary dependencies
  • β€’ Consider parallel processing
βœ… Remember: Rate limiting is usually intentional and correct - it protects your API connections and prevents overages

Diagnosis A: Rate Limiting

Cells show "Rate Limited" (yellow)

This is usually intentional:

  • Protects external APIs
  • Prevents hitting usage limits
  • Follows service provider rules

Options:

  • Wait (usually the right choice)
  • Increase rate limit carefully (if you know it's safe)

Diagnosis B: Slow External Service

Cells stay "Running" for minutes

Cause: External API is slow to respond

Options:

  • Accept the wait time
  • Use a faster API if available
  • Contact API provider about performance

Diagnosis C: Too Many Dependencies

Column depends on 15 other columns

Problem: Must wait for all 15 to complete first

Fix: Only add dependencies you actually need


Debugging Checklist ​

When something doesn't work, follow these steps:

Debugging Checklist
When something doesn't work, follow these steps in order:
1. Check cell state: What does it show? Ready, Running, Error, Skipped?
2. Click the cell: View details in the right panel
3. Check dependencies: Are they all completed?
4. Check condition: Is it evaluated correctly?
5. Check selections: Any typos or wrong columns?
6. Check run mode: Is it set correctly?
7. Check column header: Do all cells in this column have the same issue?
8. Try manual re-run: Click Run button to test
9. Simplify: Remove complexity until it works
10. Check error details: Click error badge to see full message
Progress 0 / 10
πŸ’‘ Tip: Click each item as you complete it. Most issues can be found by following this checklist!
  1. Check cell state: What does it show? Ready, Running, Error, Skipped?
  2. Click the cell: View details in the right panel
  3. Check dependencies: Are they all completed?
  4. Check condition: Is it evaluated correctly?
  5. Check selections: Any typos or wrong columns?
  6. Check run mode: Is it set correctly?
  7. Check column header: Do all cells in this column have the same issue?
  8. Try manual re-run: Click Run button to test
  9. Simplify: Remove complexity until it works
  10. Check error details: Click error badge to see full message

Best Practices ​

Design Principles ​

1. Only Depend on What You Use

βœ… Good: Column depends only on "Company Data"

❌ Bad: Column depends on "Company Data", "Email", "Validation", "Social Profiles" but only uses Company Data

Why: Fewer dependencies = faster execution


2. Maximize Parallelism

βœ… Good: Run independent operations at the same time

         β”Œβ†’ Clearbit ─┐
Email ──┼→ Apollo ────┼→ Merge
         β””β†’ Hunter β”€β”€β”€β”˜

❌ Bad: Run everything in sequence when it could be parallel

Email β†’ Clearbit β†’ Apollo β†’ Hunter β†’ Merge

Why: Parallel = faster


3. Handle Missing Data

Always consider what happens if data is missing.

Use conditions to skip when data is absent:

  • Add condition: "Only run if Company Data exists"

Or handle gracefully in custom code:

  • Provide default values
  • Show helpful messages

4. Use Appropriate Run Modes

  • Once: For expensive operations (API calls with costs)
  • Always: For calculations that should update
  • Manual: For actions requiring approval
  • Regularly: For scheduled checks

5. Add Conditions to Save Costs

Skip unnecessary operations:

Example: Only enrich high-value leads

  • Condition: "Lead Score > 50"
  • Saves money by skipping low-value leads

6. Rate Limit Wisely

Protect external APIs and control costs:

  • Follow API provider's rate limits
  • Start conservative, increase if needed
  • Monitor usage

Common Data Flow Structures ​

Most automations follow these proven patterns:

The Fundamental Pattern ​

Input β†’ Process β†’ Extract β†’ Analyze β†’ Act

Example: Lead Qualification

Email β†’ Find Company β†’ Extract Name β†’ Calculate Score β†’ Send to CRM
(input)    (process)      (extract)      (analyze)         (act)

Multi-Source Enrichment ​

         β”Œβ†’ Source 1 ─┐
Input ──┼→ Source 2 ──┼→ Combine β†’ Process
         β””β†’ Source 3 β”€β”˜

Example: Comprehensive Research

         β”Œβ†’ LinkedIn ──┐
Email ──┼→ Twitter ────┼→ Profile β†’ Analysis
         β””β†’ GitHub β”€β”€β”€β”€β”˜

Conditional Processing ​

Input β†’ Check β†’ High: Premium Process
                 ↓
              Low: Basic Process

Example: Tiered Service

Customer β†’ Check Plan β†’ Pro: Full Analysis ($5)
                         ↓
                    Free: Basic Info ($0)

Testing Strategy ​

Test with One Row First ​

  1. Add a single test row
  2. Watch the entire pipeline execute
  3. Verify each column produces correct data
  4. Check that conditions work as expected

Check Edge Cases ​

Test unusual situations:

  • What if email is invalid?
  • What if company not found?
  • What if API returns no data?

Verify Conditions ​

Test both scenarios:

  • Rows that meet the condition (should run)
  • Rows that don't meet it (should skip)

Monitor Performance ​

  • Check how long each column takes
  • Identify slow columns
  • Optimize where needed

Review Costs ​

  • Track API call counts
  • Monitor rate limit usage
  • Optimize expensive operations

Summary: What You've Mastered ​

In this chapter, you've learned:

βœ… Data Access: How columns reference each other

  • Using column names
  • Accessing nested properties
  • Combining multiple columns

βœ… Data Flow Patterns: Five essential patterns

  • Linear pipeline (sequential)
  • Parallel enrichment (simultaneous)
  • Branching logic (conditional)
  • Aggregation (combining)
  • Human-in-the-loop (approval)

βœ… Cell States: What each state means

  • Ready, Queued, Running, Rate Limited
  • Completed, Error
  • Skipped (condition failed or missing dependencies)

βœ… Troubleshooting: How to diagnose and fix issues

  • Columns not executing
  • Execution failures
  • Wrong data
  • Performance issues

βœ… Best Practices: Design principles for reliable automations

  • Minimize dependencies
  • Maximize parallelism
  • Handle missing data
  • Use appropriate run modes
  • Add conditions to save costs

Next Steps ​

You now have complete mastery of dependencies and data flow. Ready to level up?

Immediate Practice:

  1. Review your previous automations - can you optimize them?
  2. Try a parallel pattern - use multiple data sources
  3. Add conditions - skip operations to save costs
  4. Build a complete pipeline - use multiple patterns

Continue Learning:

  • Chapter 5: Advanced Execution Control - Rate limiting and scheduling
  • Chapter 6: Triggers - Automate row creation
  • Chapter 9: Custom Code - Handle complex scenarios

πŸŽ‰ Congratulations! You now understand how data flows through your automations. With this knowledge, you can design sophisticated, reliable workflows that handle real business processes.

You're equipped to:

  • Design complex data flow patterns
  • Access data between columns intuitively
  • Troubleshoot any issue quickly
  • Optimize for performance and cost
  • Build production-ready automations

Happy building! πŸš€

Built with VitePress