Beginner Lab

Getting Started
with Flow Builder

Build your first integration flow at ACME Chocolatiers — connecting Airtable, applying filters, lookups, and branching logic to send smart Slack alerts. No code required.

~60 min
5 modules
Beginner

What you'll build

Scenario

You're the integration builder at ACME Chocolatiers. Your task: build a flow that alerts key decision-makers when inventory drops below a defined threshold — pulling from Airtable and delivering smart Slack messages.

  • Pull product catalog data from Airtable
  • Trim the product dataset using data transformation
  • Filter SKUs based on active status
  • Enrich records with real-time inventory via lookup
  • Route alerts using branching logic based on inventory thresholds
  • Send targeted Slack messages to the right channels

Core concepts covered

Exports, transformations, filters, lookups, branching, field mapping, and imports — the essential building blocks of any Celigo flow.

Knowledge check

What best describes ACME Chocolatiers' goal for this integration?
A Replace Slack with a custom dashboard
B Alert decision-makers when inventory drops below a threshold
C Automate chocolate ordering from suppliers
D Sync product pricing between Airtable and Shopify
Page 1 of 9
Foundation

Technology Overview

Understanding Integration Lifecycle Management and where Flow Builder fits in.

The 6 lifecycle phases

Modern digital businesses adopt an Integration Lifecycle Management approach. Here are the six phases — and how Celigo supports them:

01
Connect — secure system access

Establish secure and reliable connectivity between systems, applications, and data sources. Includes setting up connectors and managing authentication. In Flow Builder: connections to Airtable, Slack, Salesforce, HubSpot, and more.

02
Build — design integration flows

Design and construct integration flows: data movement, transformations, conditions, branching, and lookups. This is the core focus of this lab.

03
Run — execute with reliability

Execute integration flows via events or schedules, managing execution status and performance. Flow Builder lets you trigger and run directly from the platform.

04
Deploy — move to production

Move flows from dev to production. Includes versioning, backups, and syncing changes between integration environments.

05
Monitor — track health and usage

Track health, usage, and performance. Includes error detection, analytics, and notifications to help teams respond quickly to issues.

06
Manage — govern integrations

Maintain, update, and govern integrations across their lifecycle. Includes user management, access control, auditing, and security compliance.

📘
Term: Connections Connections provide a way for the Celigo platform to access data in other applications. The connection includes security tokens which align to security requirements.

Knowledge check

Flow Builder primarily focuses on which phases of the Integration Lifecycle?
A Deploy, Monitor, Manage
B Connect, Build, Run
C Build, Deploy, Monitor
D All six phases equally
Page 2 of 9
Prerequisite

Setting Up the Lab Environment

Create your Celigo trial account and set up Airtable and Slack — the two apps you'll connect in this lab.

What you'll set up

  • A free Celigo trial account at integrator.io
  • A Slack workspace with a #product-notification channel
  • An Airtable base with Products and Inventory tables (CSV import)

Steps

1
Create your Celigo free trial

Visit https://integrator.io/signup and complete the registration form with your name, company, and a valid business email. Check your inbox for the activation email, set your password, and log in.

2
Create a Slack workspace

Go to slack.com → Get Started → Sign up with your personal email. After logging in, create a new workspace (name it Acme). Skip inviting colleagues, choose the limited free version.

Then click + in the bottom-left sidebar → Channel → Blank channel → name it product-notification.

3
Create an Airtable base with CSV import

Sign up at airtable.com (no payment needed). From the home screen, click + Create → Build an app on your own → + Add or import.

Download the provided CSV files from the Google Drive link, then import Products-Grid view.csv first, then Inventory-Grid view.csv as a second table. Rename the tabs to Products and Inventory Records.

🔧
Pro Tip You'll need the Base ID (starts with app) and Table ID (starts with tbl) from the Airtable URL later. Keep that tab open.

Knowledge check

In an Airtable URL like airtable.com/appXXX/tblYYY, what does the part starting with "tbl" represent?
A The Base ID
B The Table ID
C The API token
D The workspace name
Page 3 of 9
Module 1 · ~15 min

Creating Connections

Authenticate Celigo's access to Slack and Airtable — the foundation for every flow you'll build.

What you'll learn

  • Navigate to the Connections section in integrator.io
  • Create an OAuth 2.0 connection to Slack with correct scopes
  • Create a token-based connection to Airtable

Steps

1
Connect to Slack via OAuth 2.0

In integrator.io, click + Create → Connection. Search for Slack and select it.

Name: Slack connection v1 · API Type: Web method · Auth: OAuth 2.0

Configure scopes — add channels:read to the right panel. Under User Scopes, add chat:write and channels:write.

Click Save & Authorize. In the popup, confirm you're connected to the Acme workspace, then click Allow.

2
Generate an Airtable Personal Access Token

In Airtable, go to Profile → Builder Hub → Developers → Personal access tokens. Add a name, then add these scopes:

  • data.record:read
  • schema.bases:read

Under Access, select + Add all resources. Create the token and copy it somewhere safe.

🔧
Pro Tip Copy this token immediately — Airtable won't show it again after you leave the page.
3
Connect Airtable in Celigo

In Celigo: Resources → Connections → Create connection → Airtable.

Name it, set API type to User info, Auth type to Token, paste your token. Click Test Connection to verify, then Save.

Success Both connections are now live and ready to use in flows.

Knowledge check

Why is the Airtable connection configured with "Token" auth rather than OAuth?
A Airtable doesn't support OAuth
B Token auth is more secure than OAuth
C Airtable Personal Access Tokens are the recommended way to authenticate API access
D OAuth requires a paid Airtable plan
Page 4 of 9
Module 2 · ~15 min

Your First Flow

Pull product catalog data from Airtable and send it to a Slack channel — your foundational integration.

Scenario

ACME Chocolatiers wants to improve visibility into the product catalog by sharing updates directly in Slack — without anyone manually logging into other systems.

Steps

1
Create an integration and flow

Home → + Create → Integrations. Name it My first integration → Save.

Click Create flow now. Name the flow Airtable to Slack product notifications.

2
Configure Airtable as source

Click Add source → search Airtable → Step name: Product data.

Select your Airtable connection. Resources: Base data - Records · Endpoint: List records. Paste your Base ID and Table ID from the Airtable URL. Click Preview to verify records appear, then Save and Close.

3
Configure Slack as destination

Add destination / lookup → Slack. Flow step type: Import records into destination application. Name: Product notifications.

Connection: Slack connection v1 · Resource: Chat · Endpoint: Post message. Preview should show sample JSON. Save and close.

4
Configure field mapping

Click ... on the Slack box → Mapping. Map channel → source value: "#product-notification". Add a row: textProduct Name. Save.

5
Run the flow

Toggle off Test Mode at the top of your flow. Click the Run now button. Check your Slack #product-notification channel — you should see product titles.

Success Product titles are now flowing from Airtable into Slack automatically.

Knowledge check

In the Slack mapping, why is the channel value entered with double quotes (e.g., "#product-notification")?
A It's a Slack API requirement for all channel names
B The double quotes tell Celigo this is a static literal value, not a field reference
C It prevents special characters from breaking the mapping
D Without quotes the channel won't be created
Page 5 of 9
Module 3 · ~10 min

Smart Filtering

Trim the noise — only pass active products forward to Slack.

Scenario

The marketing team only wants to see active products in Slack. Your job: filter out inactive or discontinued items so the channel stays clean and actionable.

Steps

1
Open the Output Filter

Open your flow in integrator.io. Click ... on the Airtable source step → select Output Filter.

2
Configure the filter condition

Click + Condition. Set the three fields:

Field: record.field.active
Operator: equals
Value: 1

Save & Close, then Run the flow. You should now see only 4 products — the inactive Mint chocolate drink mix is filtered out.

🔧
Pro Tip — AI shortcut In the "Define output filter" screen, try the Celigo AI prompt: "I want active = 0 products to be skipped" and conditions are applied automatically.
Success Slack now only shows the 4 active products.

Knowledge check

A product has active = 0. With the filter record.field.active equals 1 in place, what happens to that record?
A It's sent to Slack with a warning flag
B It's filtered out and doesn't reach Slack
C The flow errors on that record
D It's sent to a separate error channel
Page 6 of 9
Module 4 · ~10 min

Inventory Lookup

Enrich each product record with real-time stock levels — using SKU as the join key.

Scenario

The operations team needs to know how much stock is available before taking action. Enhance the flow by joining live inventory data into each product record.

Steps

1
Insert a Lookup step

Click + between the Airtable source and Slack destination → Add destination / lookup → Airtable. Flow step type: Look up additional records (per record). Name: Inventory Look Up.

📘
Term: Lookup The product table doesn't include inventory count, so a lookup step fetches the current stock level from the inventory table, matched by SKU. This enriches data from different sources without duplicating it.
2
Configure the filterByFormula

Select your Airtable connection · Resources: Base data - Records · Endpoint: List records. Enter the Base ID and Inventory table Table ID.

In Query parameters, add filterByFormula with this value:

{SKU}='{{record.fields.[SKU]}}'

Click Preview — you should see SKU, Quantity on Hand, and Reorder Point. Save and Close.

3
Result mapping

Click ... on the lookup step → Result Mapping. Set:

Lookup Response Field: data
Source Record Field: fields.updatedInventory

Preview should show inventory data under updatedInventory. Save and Close.

4
Update the Slack mapping

In the Slack import step, open Mapping. Update the text source field to:

{{fields.[Product Name]}} — *{{fields.updatedInventory.[0].fields.[Quantity on Hand]}} units in stock*

Run the flow. Slack should now show product name + stock level.

Success Slack messages now include real-time inventory data joined from a second table via SKU.

Knowledge check

What is the purpose of the filterByFormula parameter in the lookup step?
A It formats the output of the lookup into a readable string
B It limits how many records Airtable returns in total
C It filters the inventory table to return only the record that matches the current product's SKU
D It prevents duplicate records from being sent to Slack
Page 7 of 9
Module 5 · ~10 min

Branching Logic

Route alerts dynamically based on inventory thresholds — right message, right channel, right team.

Scenario

When inventory drops below its reorder point, an urgent alert should go to #low-stock-alerts. Products with healthy stock continue to the regular notification channel.

Steps

1
Add a branch after the lookup

Click + after the Inventory Lookup step → Add branching. Name: Product alerts and notifications. Selection mode: First matching branch.

Rename Branch 1.0 to Low stock. Add a condition:

Field: record.fields.updatedInventory.0.fields.[Quantity on Hand]
Type: Field and Number
Operator: Is less than
Compare to: record.fields.updatedInventory.0.fields.[Reorder Point]

Preview and Save.

2
Create the low-stock-alerts Slack channel

In Slack, click + → Channel → Blank channel → name: low-stock-alerts. Skip inviting users.

3
Clone and configure the destination

Click ... on the existing Product Notification destination → Clone. Drag the clone to the Low stock branch. Rename it Low stock notification.

4
Map the alert message

Open Low stock notification → Mapping. Update the channel and text fields:

channel: "#low-stock-alerts"

text: Low stock alert: {{fields.[Product Name]}} has only
{{fields.updatedInventory.[0].fields.[Quantity on Hand]}} units
in stock. Reorder point: {{fields.updatedInventory.[0].fields.[Reorder Point]}}

Save, then Run. Both Slack channels should receive messages — low-stock items routed to #low-stock-alerts.

Success Your flow is fully dynamic — routing alerts based on real-time inventory levels.

Knowledge check

The branch is set to "First matching branch." A product with 5 units and a reorder point of 10 — which branch does it take?
A Low stock branch — 5 is less than 10
B Default branch — it doesn't meet the low stock condition
C Both branches — it matches multiple conditions
D Neither branch — the flow errors
Page 8 of 9
🍫

Lab Complete!

You've built a fully dynamic, real-time integration flow from scratch — and earned your chocolate bar.

0/8
Quiz score
5
Modules completed
~60
Minutes of learning
What you built
  • Connected Slack (OAuth 2.0) and Airtable (token)
  • Built a source-to-destination flow with field mapping
  • Added an output filter for active products only
  • Enriched records with a real-time inventory lookup via SKU
  • Implemented branching logic to route low-stock alerts