Skip to content

10.5 Integration Patterns

Taibles becomes exponentially more powerful when connected to external services. This section shows you how to build integrations that sync data, automate workflows, and connect your entire business ecosystem.


What Are Integration Patterns?

The Concept

Integration means connecting Taibles with external tools and services.

Examples:

  • CRM systems (HubSpot, Salesforce, Zoho)
  • Marketing tools (ActiveCampaign, Mailchimp)
  • Support systems (Zendesk, Intercom)
  • E-commerce (Shopify, WooCommerce)
  • Payment processors (Stripe, PayPal)
  • Project management (Asana, Trello)
  • Communication (Slack, Teams, Email)

Integration patterns are proven architectures for connecting systems reliably.


Types of Integration

1. Inbound (Data comes in)

External service sends data to Taibles → Creates row → Processes automatically

Example: Stripe payment received → Create invoice record

2. Outbound (Data goes out)

Taibles processes data → Sends to external service → Updates record

Example: Lead qualified → Create Salesforce record

3. Bidirectional (Two-way sync)

Taibles and external service stay in sync in both directions

Example: HubSpot contact updated → Sync to Taibles → Edit in Taibles → Sync back to HubSpot

4. Enrichment (Pull additional data)

Taibles has basic data → Calls external API → Gets full profile

Example: Email address → Full contact profile with company data


Pattern 1: Inbound Webhooks (Event-Driven)

Use Case

Problem: External service has events you need to react to

Examples:

  • Shopify: Order placed
  • Stripe: Payment received
  • Typeform: Form submitted
  • Calendly: Meeting booked
  • GitHub: Pull request merged

Solution: Webhook trigger listens for events, creates rows automatically


How Webhooks Work

Simple flow:

  1. External service has event (e.g., form submitted)
  2. Service calls your webhook URL
  3. Taibles receives HTTP request
  4. Creates new row with event data
  5. Columns process the data automatically

Real-time: Usually within seconds of event occurring


Implementation: Form Submission Processing

Scenario: Customer submits contact form → Auto-qualify → Route to sales

Webhook Integration Flow

1
Customer Submits Form
Form filled on your website
2
Service Calls Webhook
Sends data to Taibles URL
3
Row Created Automatically
New lead appears in Taible
4
Automatic Processing
Extract, qualify, route to sales
Complete

Step 1: Create Taible

Name: "Inbound Leads"

Purpose: Process form submissions


Step 2: Add Webhook Trigger

Add Trigger

Generic Webhook
Receive data from any webhook source
Development
Typeform
Receive form submissions from Typeform
Forms
Shopify
Listen to Shopify order events
E-commerce
Stripe
Track payment and subscription events
Payments

Configure Generic Webhook

Data from the webhook will be stored in this column
  1. Click "Add Trigger" button in the toolbar
  2. Select trigger type: "Generic Webhook" (or specific service like "Typeform")
  3. Configure trigger:
    • Trigger name: "Contact Form Webhook"
    • Column name: form_data (where webhook data will be stored)
    • Authentication: Optional (webhook secret for security)
  4. Copy webhook URL (displayed after saving)
  5. Save trigger

Webhook Created Successfully!

Use this URL in your external service's webhook configuration:

https://app.taibles.com/webhooks/abc123-your-unique-id
Active Ready to receive webhooks

Step 3: Configure External Service

In your form tool (Typeform, Webflow, WordPress, etc.):

  1. Go to integrations/webhooks settings
  2. Add webhook URL: Paste the URL from Taibles
  3. Select events: Form submission
  4. Save webhook configuration
  5. Test webhook (most tools have "Send test" button)

Step 4: Process Webhook Data

Processing Webhook Data

ColumnTypeWhat It DoesStatus
Form Data
Trigger Output Stores the complete webhook payload Complete
Email
Custom Code Extracts email address from payload Complete
Name
Custom Code Combines first and last name Complete
Lead Score
Custom Code Calculates lead qualification score Complete
Route to Sales
Integration Sends qualified leads to CRM Complete
Processing Flow: When a webhook is received, it creates a new row. Each column then processes in order, extracting and transforming the data automatically.

Column 1: Form Data

  • Type: Trigger output (automatic)
  • Contains: Full webhook payload

Column 2: Email

  • Type: Custom Code
  • Dependencies: Form Data
  • Extracts: Email address from payload

Column 3: Name

  • Type: Custom Code
  • Dependencies: Form Data
  • Extracts: Full name from form

Column 4-6: Add qualification, enrichment, routing columns


Testing Webhooks

Testing Your Webhook

1

Service Test

Use your service's "Send test webhook" button

2

Real Submission

Fill out and submit your actual form

Recommended
3

Manual Tool

Use Postman or curl to send test data

Advanced
Tip: After sending a webhook, check your Taible within 5-10 seconds. You should see a new row appear with the form data automatically extracted.

Method 1: Use service's test function

  1. In external service, click "Send test webhook"
  2. Check Taibles for new row
  3. Verify data extracted correctly

Method 2: Submit real form

  1. Fill out actual form
  2. Submit
  3. Check Taibles within 5-10 seconds
  4. Verify full flow works

Pattern 2: Outbound API Calls (Action-Based)

Use Case

Problem: Need to create/update records in external systems based on Taibles data

Examples:

  • Create HubSpot contact
  • Create Salesforce lead
  • Add to Mailchimp list
  • Create Asana task
  • Send Slack message
  • Update Airtable record

Solution: Use integration columns to call external APIs


Implementation: CRM Contact Creation

Scenario: Lead qualifies in Taibles → Create contact in HubSpot

Outbound API Call Flow

1
Lead Qualifies in Taibles
Score reaches threshold
2
Column Triggers
Dependencies met, condition passes
Running
3
API Call to HubSpot
Creates contact with lead data
4
Contact ID Stored
HubSpot ID saved for future updates
Complete

Step 1: Connect Account

Connect Your Account

HubSpot
CRM & Marketing Platform
HubSpot Production
Connected • company@example.com
Connected
When you click Connect, you'll be taken to HubSpot to authorize access. Once connected, you can use this account in any integration column.
  1. Go to SettingsAccounts
  2. Click "Add Account"
  3. Select service: "HubSpot"
  4. Authorize: Login to HubSpot, grant permissions
  5. Name account: "HubSpot Production"
  6. Save

Step 2: Create Sync Column

Create HubSpot Sync Column

Account
HubSpot Production
Method
Create Contact

In your Leads taible:

  1. Click column header "+"
  2. Search for: "HubSpot"
  3. Select: "HubSpot" node
  4. Configure:
    • Column name: hubspot_contact
    • Display label: "HubSpot Contact"
    • Account: Select "HubSpot Production"
  5. Select Method: "Create Contact"
  6. Configure parameters:
    • Email: [Email] column
    • First Name: [First Name] column
    • Last Name: [Last Name] column
    • Phone: [Phone] column
    • Lifecycle Stage: [Lifecycle Stage] column
  7. Run Configuration:
    • Dependencies: Email, First Name, Last Name, Lifecycle Stage
    • Run mode: Run once per row (or Manual for approval)
    • Condition (optional): Only when qualified is true
  8. Save

Step 3: Store External ID

What happens:

  1. Column executes → Calls HubSpot API
  2. HubSpot returns contact object (includes ID, creation date, etc.)
  3. Column stores entire response
  4. You can reference the HubSpot ID later

Access HubSpot ID: The system automatically stores the returned contact ID in the column result.


Pattern 3: Bidirectional Sync (Two-Way)

Use Case

Problem: Changes in either system should sync to the other

Examples:

  • HubSpot contact ←→ Taibles
  • Salesforce lead ←→ Taibles
  • Airtable records ←→ Taibles

Challenges:

  • Avoid infinite loops (A updates B, B updates A, repeat)
  • Conflict resolution (both changed at same time)
  • Field mapping (names differ between systems)

Implementation Architecture

Bidirectional Sync Architecture

Taibles
HubSpot

Two components needed:

Component 1: Outbound (Taibles → External)

Taibles data changes → API call → Update external system

Component 2: Inbound (External → Taibles)

External system changes → Webhook → Update Taibles row

Loop prevention: Track last sync timestamp


Example: HubSpot Bidirectional Sync

Taible: "Contacts"

Goal: Keep contacts in sync between Taibles and HubSpot

Avoid Sync Loops

Problem Update in Taibles → HubSpot → Webhook → Taibles → Infinite Loop
Solution Track last sync time, only sync if data changed after last sync

Setup: Outbound (Taibles → HubSpot)

Column 1-4: Basic contact fields (Email, First Name, Last Name, Company)

Column 5: HubSpot ID

  • Type: Text (manual/hidden)
  • Purpose: Store HubSpot contact ID
  • Hidden from normal view

Column 6: Sync to HubSpot

  • Type: HubSpot integration
  • Method: "Create or Update Contact"
  • Dependencies: Email, First Name, Last Name, Company
  • Run mode: Always run when dependencies change

Configuration:

  • Email: [Email] column
  • First Name: [First Name] column
  • Last Name: [Last Name] column
  • Company: [Company] column
  • Contact ID (for update): [HubSpot ID] column

Logic:

  • If HubSpot ID is empty → Creates new contact
  • If HubSpot ID exists → Updates existing contact

Setup: Inbound (HubSpot → Taibles)

Step 1: Add HubSpot Webhook Trigger

  1. Add trigger: HubSpot trigger
  2. Configure:
    • Event type: "Contact Updated"
    • Column: hubspot_webhook_data
  3. Save and copy webhook URL

Step 2: Configure in HubSpot

  1. Go to HubSpot → Settings → Integrations → Webhooks
  2. Create webhook subscription:
    • URL: Paste Taibles webhook URL
    • Events: contact.propertyChange
    • Properties to monitor: email, firstname, lastname, company
  3. Save

Step 3: Process Incoming Webhook

Column: Update from HubSpot

  • Type: Custom Code
  • Dependencies: HubSpot Webhook Data
  • Run mode: Run once per row

What it does:

  • Extracts changed properties from webhook
  • Updates local contact fields
  • Tracks sync timestamp

Loop Prevention

Loop Prevention Strategies

Timestamp

Track last sync time and only sync if local data is newer

Change Detection

Only sync if values actually changed from last sync

Direction Flag

Track which direction sync came from, don't sync back

Problem: Update in Taibles → Syncs to HubSpot → Triggers webhook → Updates Taibles → Infinite loop

Solution 1: Timestamp comparison

Add column: Last Synced

  • Updates whenever sync happens
  • Condition: Only sync if local data is newer

Solution 2: Change detection

Only sync if values actually changed

Solution 3: Sync direction flag

Track which direction sync came from, don't sync back


Pattern 4: Multi-Service Enrichment with Fallbacks

Use Case

Problem: Multiple data providers, want to try each until one succeeds

Examples:

  • Contact enrichment: Clearbit → Hunter → RocketReach → Manual
  • Address validation: Google → Loqate → Manual
  • Company data: Crunchbase → LinkedIn → Web scrape

Benefit: Maximize data coverage, minimize cost


Implementation: Contact Enrichment Waterfall

Scenario: Have email, want full contact profile

Enrichment Waterfall with Fallbacks

1. ClearbitTry first ($0.05/lookup)
2. HunterIf Clearbit fails ($0.02/lookup)
3. RocketReachIf Hunter fails ($0.10/lookup)
4. ManualFlag for manual research

Column: Enriched Contact

  • Type: Custom Code
  • Dependencies: Email
  • Run mode: Run once per row

What it does:

  1. Tries Provider 1 (Clearbit)
  2. If successful, returns data
  3. If fails, tries Provider 2 (Hunter)
  4. If successful, returns data
  5. If fails, tries Provider 3 (RocketReach)
  6. If all fail, flags for manual research

Follow-up column: Manual Research

  • Type: Text (manual)
  • Only fill if all providers failed

Pattern 5: Batch Processing Integration

Use Case

Problem: API has rate limits, need to process rows in batches

Examples:

  • Email sending (max 100/hour)
  • API calls (max 1,000/day)
  • Bulk imports (upload CSV every night)

Solution: Schedule trigger + batch logic


Implementation: Nightly CRM Sync

Scenario: Every night, sync all new leads to Salesforce in one batch

Batch Processing Flow

2:00 AM
Scheduled trigger fires
Query
Get all new/updated leads since last sync
Batch
Process in groups of 50 (API limit)
Wait
1 second pause between batches (rate limit protection)
Complete
Record successes, failures, and completion time

Taible: "Daily Sync Jobs"

Trigger: Scheduled (daily at 2 AM)

Column: Sync New Leads

  • Type: Custom Code
  • Triggered by schedule

What it does:

  1. Gets all leads added/updated since last sync
  2. If no new leads, skips
  3. Processes in batches of 50 (API limit)
  4. Waits 1 second between batches
  5. Tracks successes and failures
  6. Records completion time

Common Integration Patterns Summary

PatternDirectionUse CaseTrigger Type
Inbound WebhookExternal → TaiblesReact to eventsWebhook
Outbound APITaibles → ExternalCreate/update recordsAny
Bidirectional SyncBoth waysKeep systems in syncWebhook + Always
Enrichment WaterfallExternal → TaiblesPull data with fallbacksAny
Batch ProcessingTaibles → ExternalBulk operationsScheduled

Best Practices for Integrations

Practice 1: Store External IDs

Always Store External IDs

Create a hidden column to store the record ID from the external system (e.g., hubspot_id, salesforce_id).

Benefits:
  • Enables updates (not just creates)
  • Prevents duplicate records
  • Allows linking between systems
  • Required for bidirectional sync

Always store the external system's record ID

Why:

  • Enables updates (not just creates)
  • Prevents duplicates
  • Allows linking
  • Enables bidirectional sync

How:

  • Add hidden column (e.g., Salesforce ID, HubSpot ID)
  • Store ID returned from API call
  • Use in update operations

Practice 2: Handle API Failures Gracefully

Handle API Failures Gracefully

APIs fail for various reasons: rate limits, downtime, invalid data. Always include error handling.

Try 1Initial API call
Try 2Retry after 1 second
Try 3Final retry attempt
FailedFlag for manual review

Problem: APIs fail (rate limits, downtime, invalid data)

Solution: Error handling + retry logic

Pattern:

  • Try API call
  • If successful, mark complete
  • If fails, increment retry counter
  • After 3 retries, flag for manual review

Practice 3: Use Webhooks Over Polling

Prefer Webhooks Over Polling

Polling
  • ❌ Check every 5 minutes
  • ❌ High API usage
  • ❌ Delayed notifications
  • ❌ More complex logic
Webhooks
  • ✅ Real-time (instant)
  • ✅ Low API usage
  • ✅ Immediate notifications
  • ✅ Simpler implementation

Polling (checking for changes):

  • Check external system every 5 minutes
  • High API usage
  • Delayed notifications

Webhooks (pushed changes):

  • External system calls you immediately
  • Low API usage
  • Real-time notifications

Benefits of webhooks:

  • ✅ Real-time (instant)
  • ✅ Lower API usage
  • ✅ More reliable
  • ✅ Less complex

Use polling only when:

  • Service doesn't support webhooks
  • Need to check multiple records
  • Backup for missed webhooks

Practice 4: Validate Data Before Sending

Validate Data Before Sending

Bad data causes API errors and failed syncs. Always validate before making API calls.

Check 1Email contains @ symbol
Check 2Required fields are present
Check 3Phone number format is correct
ReadyOnly sync when all validations pass

Problem: Bad data → API error → Failed sync

Solution: Validate before API call

Validation checks:

  • Email contains @
  • Required fields present
  • Phone number format
  • Date format correct

Sync column condition: Only run when validation passes


Practice 5: Log Integration Activity

Log Integration Activity

Track what synced, when, and whether it succeeded or failed.

2024-01-15 14:32:15Success
HubSpot Contact sync #12345
2024-01-15 14:32:16Success
Salesforce Lead sync #67890
2024-01-15 14:32:17Failed
Mailchimp sync: Rate limit exceeded

Benefits: Troubleshooting, auditing, and monitoring

Track: What synced, when, success/failure

Column: Integration Log

  • Type: Custom Code
  • Dependencies: All sync columns
  • Run mode: Always run

What it tracks:

  • Which service synced
  • Action taken
  • Success or failure
  • Timestamp
  • Record ID

Benefit: Troubleshooting, auditing, monitoring


Available Integration Services

Taibles supports many pre-built integration nodes:

Available Integration Services

CRM & Sales
  • • HubSpot
  • • Salesforce
  • • Pipedrive
  • • Zoho CRM
  • • ActiveCampaign
Communication
  • • SMTP Email
  • • IMAP Email
  • • Slack
  • • Telegram
  • • Microsoft Teams
E-commerce
  • • Shopify
  • • WooCommerce
  • • Stripe
  • • PayPal
Forms & Surveys
  • • Typeform
  • • Gravity Forms
  • • WPForms
  • • Webflow Forms
Data & Databases
  • • Airtable
  • • Notion
  • • Google Sheets
Support & Tickets
  • • Zendesk
  • • Intercom
  • • Freshdesk

50+ integrations available • Check node library for complete list

CRM & Sales

  • HubSpot: Contacts, deals, companies, engagements
  • Salesforce: Leads, contacts, opportunities, accounts
  • Pipedrive: Deals, persons, organizations
  • Zoho CRM: All modules
  • ActiveCampaign: Contacts, deals, automations
  • Attio: Records, lists

E-commerce

  • Shopify (via webhook trigger): Orders, products, customers
  • WooCommerce (via webhook trigger): Orders, products

Communication

  • SMTP: Send emails
  • IMAP: Receive emails
  • Slack: Send messages, notifications
  • Telegram: Send messages

Forms & Surveys

  • Gravity Forms: Form submissions
  • WPForms: Form submissions
  • Typeform (via webhook trigger)
  • Webflow Forms (via webhook trigger)

Project Management

  • Asana: Tasks, projects
  • Trello (via webhook)
  • Monday.com (via API)

Data & Databases

  • Airtable: Records, tables
  • Notion: Pages, databases
  • Google Sheets: Read/write data

Payment & Finance

  • Stripe (via webhook trigger): Payments, subscriptions
  • PayPal (via webhook trigger)

Support & Ticketing

  • Zendesk: Tickets
  • Intercom: Conversations
  • Freshdesk: Tickets

Check node library for complete list and availability


Summary: Integration Patterns

You now understand integration patterns:

Five main patterns:

  • Inbound webhooks (event-driven)
  • Outbound API calls (action-based)
  • Bidirectional sync (two-way)
  • Enrichment waterfall (multi-provider fallback)
  • Batch processing (scheduled bulk operations)

Implementation techniques:

  • Webhook triggers for inbound events
  • Integration columns for outbound API calls
  • Loop prevention with timestamps
  • Fallback logic with multiple providers
  • Error handling and retries

Best practices:

  • Store external IDs
  • Handle failures gracefully
  • Prefer webhooks over polling
  • Validate before sending
  • Log integration activity

Complete examples:

  • Form submission processing
  • HubSpot bidirectional sync
  • Contact enrichment waterfall
  • Nightly CRM batch sync

Wide ecosystem: 50+ pre-built integration services

With these patterns, you can connect Taibles to your entire business ecosystem!


What's Next?

You've completed Chapter 10: Advanced Patterns! You've mastered:

  • Multi-stage pipelines (10.1)
  • Event-driven architectures (10.2)
  • Data aggregation (10.3)
  • Human-in-the-loop workflows (10.4)
  • Integration patterns (10.5)

Next: Part IV: Best Practices and Optimization → Learn how to optimize performance, manage costs, debug issues, and scale your automations effectively.

Continue to Chapter 11: Performance and Cost Optimization to learn how to build efficient, cost-effective automations!

Built with VitePress