Tabula Documentation
Tabula HomeCommunity
  • đź‘‹Introduction to Tabula
  • Getting Started
    • Product Updates
    • Getting Started
      • Installation and Login
      • Beginner's Guide
    • FAQ
  • Product overview
    • Home Page
    • Exploring Data
      • Data Catalog
      • Exploring Datasets
      • Statistics Panel
    • Designing Flows
      • Creating Flows
      • Flow Designer Guide
        • Working with Canvas
        • Using Groups
        • Working with Table
      • Managing Flows
      • Sharing Flows
      • Demo: Building a Simple Flow
    • Executing Flows
      • Running Flows
      • Jobs overview
    • Building Reports
      • Designing Reports
      • Running Reports
      • Reports Page
    • Connecting Data
  • Integrations
    • Enrichments
      • Waterfall Enrichment
      • How to add your API key in Tabula
      • List of Supported Queries
      • Enrichment Providers
        • AnymailFinder
        • Apollo
          • How to find Apollo API key
          • Enrich person by LinkedIn
          • Enrich company by domain
        • Bounceban
        • Bouncer
        • Bouncify
        • CaptainVerify
        • Cleanify
        • Clearout
        • CompanyEnrich
        • ContactOut
          • How to find ContactOut API key
          • Enrich person by LinkedIn
          • Enrich person by email
        • Discolike
        • TheCompaniesAPI
        • Findymail
        • Emailable
        • EmailListVerify
        • Enrichley
        • Heybounce
        • Hunter
        • Kickbox
        • Mails
        • MailChecker
        • MillionVerifier
        • NeverBounce
        • Nubela (Proxycurl)
        • PeopleDataLabs
        • Prospeo
        • ZeroBounce
        • ReverseContact
          • How to find Reverse Contact API key
          • Enrich person by LinkedIn
          • Enrich person and company by email
          • Enrich company by domain
          • Enrich company by LinkedIn
        • UpLead
    • Data Sources
      • Configuring Fivetran Integration
    • Data Storages
      • PostgreSQL
      • Snowflake
      • BigQuery
      • ClickHouse
  • Data Transformation
    • Transforms
      • Source
      • New Empty Table
      • Output
      • Chart
      • Enrichment
      • New Column
      • If...Then
      • Rolling Functions
      • Column Type
      • Columns Edit
      • Filter
      • Remove Duplicates
      • Sort
      • Find and Replace Text
      • Split Column
      • Extract Text
      • Match Text
      • Join
      • Union
      • Group By
      • Pivot
      • Unpivot
      • To JSON
      • From JSON
      • API Call
      • AI Column
      • AI Table
    • Formulas
      • What are Formulas?
      • Math Functions
        • Abs
        • Ceiling
        • Exp
        • Floor
        • IsEven
        • IsOdd
        • Ln
        • Log
        • Log10
        • Mod
        • Pi
        • Power
        • Quotient
        • Round
        • RoundDown
        • RoundUp
        • Sign
        • Sqrt
        • Truncate
      • Trigonometric Functions
        • Acos
        • Asin
        • Atan
        • Atan2
        • Cos
        • Cot
        • Degrees
        • Radians
        • Sin
        • Tan
      • String Functions
        • Compare
        • Concat
        • Contains
        • In
        • CountMatches
        • CountMatchesRegexp
        • EndsWith
        • EndsWithRegexp
        • Extract
        • FindMatchOfString
        • FindMatchOfRegexp
        • FindMatchesOfString
        • FindMatchesOfRegexp
        • Left
        • Length
        • Lower
        • Matches
        • Pad
        • ProperCase
        • RemoveSymbols
        • RemoveWhitespaces
        • Repeat
        • Replace
        • ReplaceRegexp
        • Reverse
        • Right
        • Spaces
        • Split
        • SplitRegexp
        • StartsWith
        • StartsWithRegexp
        • Stuff
        • Substring
        • SubstringDelimiter
        • SubstringRegexpDelimiter
        • Trim
        • Upper
      • Date & Time Functions
        • Date
        • DateAdd
        • DateAdd2
        • DateDiff
        • DateDiff2
        • DateFromParts
        • DateTime
        • DateTimeFromParts
        • DateTrunc
        • DayName
        • DayOfMonth
        • DayOfWeek
        • DayOfYear
        • Hour
        • Minute
        • Month
        • MonthName
        • Now
        • Quarter
        • Second
        • Time
        • TimeFromParts
        • Today
        • Week
        • Year
      • Aggregate Functions
        • Any
        • AnyIf
        • Array
        • ArrayIf
        • Avg
        • AvgIf
        • AvgInRow
        • Count
        • CountA
        • CountIf
        • CountUnique
        • Max
        • MaxIf
        • MaxInRow
        • Median
        • MedianIf
        • Min
        • MinIf
        • MinInRow
        • Mode
        • ModeIf
        • Percentile
        • Quartile
        • StdDev
        • StdDevIf
        • Sum
        • SumIf
        • SumProduct
        • Variance
        • VarianceIf
      • Conversion Functions
        • ToArray
        • ArrayToString
        • ToBoolean
        • ToDate
        • ToDateTime
        • ToDecimal
        • ToInteger
        • ToObject
        • ToTime
        • ToString
      • Misc Functions
        • At
        • IsMissing
        • RowNumber
        • Random
        • If
        • Coalesce
        • True
        • False
        • Null
        • $target
      • Window Functions
      • Custom Functions
      • Data Types
      • Supported Date Parts
      • Regex: List of Tokes
  • Pricing & Billing
    • Plans, Subscriptions, and Credits
    • Tabula for Education
  • Tutorials
    • Tabula Use Cases
    • Merge Columns
    • Join Types
    • Union Introduction
    • Window Functions
    • What is Unpivot?
    • JSON Format Tutorial
    • Using Regex
Powered by GitBook
On this page
  • What is waterfall enrichment?
  • How to set it up
  • Important options
  • Example: Email verification with three providers

Was this helpful?

  1. Integrations
  2. Enrichments

Waterfall Enrichment

How to chain multiple enrichment providers, step by step

What is waterfall enrichment?

Waterfall enrichment lets you try multiple providers in sequence — only moving to the next if the previous one didn’t return data. This avoids wasting API credits, prevents conflicting results, and increases coverage.

It works like this:

  • Run the first provider.

  • If the output column is still empty, run the second.

  • If still empty, run the third — and so on.


How to set it up

Step 1: Add the first enrichment node

  • Start with your primary provider. Add an enrichment node to the canvas.

  • Select the provider, map the required inputs (for example, an email field), and configure outputs.

  • Leave the “Run only if column is empty” setting blank. Since this is the first node in the chain, it should run unconditionally.

Step 2: Add fallback nodes

  • Now add a second enrichment node to the right of the first. This is your fallback provider — it should run only if the previous one didn’t return a value.

  • In the “Run only if column is empty” dropdown, select the output column from the first node (e.g. Email Status). This makes the second provider conditional — it will only run when the chosen column is empty.

Repeat this step to add more fallback nodes. Each one should:

  • Be placed to the right of the previous one.

  • Use the same “Run only if column is empty” setting, pointing to the same target column.


Important options

Map new columns to existing ones.

When you apply “Run only if column is empty”, the “Map new columns to existing ones” option is automatically turned ON.

This ensures the node writes into an existing column (same name and type), instead of creating a new one. It merges outputs from different nodes into the same column.

You can switch this option manually:

  • Keep it ON to use a shared field across providers.

  • Turn it OFF if you need to store each provider’s result separately.

Show response status

Adds a column that shows the status for each row:

  • Processed

  • Not found

  • Empty input

  • Error: <reason>

Useful to track which node returned a result.

Show original response

Saves the complete raw API response in a separate column. This is helpful when:

  • You need an audit trail.

  • You want to extract extra fields that have not been mapped yet.


Example: Email verification with three providers

You want to verify email addresses using MillionVerifier, NeverBounce, and ZeroBounce - in that order.

  1. MillionVerifier (first node):

    • Input: email

    • Output: Email Status

    • Run only if column is empty: (leave blank)

    • Map new columns to existing ones: (not applicable)

  2. NeverBounce (second node, after MillionVerifier):

    • Input: email

    • Output: Email Status

    • Run only if column is empty: Email Status

    • Map new columns to existing ones: auto-enabled (writing to the same Email Status)

  3. ZeroBounce (third node):

    • Input: email

    • Output: Email Status

    • Run only if column is empty: Email Status

    • Map new columns to existing ones: auto-enabled

Now the waterfall logic is in place:

  • MillionVerifier runs first and fills Email Status if possible.

  • If it's empty, NeverBounce runs and writes into the same column.

  • If it's still empty, ZeroBounce tries last.

This way, you get one clean output column and only pay for what's needed.

PreviousEnrichmentsNextHow to add your API key in Tabula

Last updated 21 hours ago

Was this helpful?