Google Sheets vs Airtable

Relational Data Concepts

erDiagram
    entity "Google Sheets" {
        Campaigns "Flat list"
        Offers "Flat list"
        Performance "Flat list"
        --
        No relationships
        Manual vlookup
        Error-prone
    }
    
    entity "Airtable" {
        Campaigns "Table"
        Offers "Table"
        Performance "Table"
        --
        Linked records
        Rollup fields
        Automatic calculations
    }
    
    Campaigns ||--o{ Offers : "has many"
    Campaigns ||--o{ Performance : "has stats"
                
Feature Google Sheets Airtable
Structure Flat (one tab = one table) Relational (linked tables)
Connections vlookup formulas Linked record fields
Calculations Manual formulas Rollup fields (automatic)

You know Sheets already. Airtable is the same data, structured properly.

Airtable Base Architecture

erDiagram
    entity "Campaigns Table" {
        Campaign Name: Text
        Start Date: Date
        Status: Single Select
        --
        Offers: Link to Offers
        Performance: Link to Performance
    }
    
    entity "Offers Table" {
        Offer Name: Text
        Offer Type: Single Select
        Revenue: Currency
        --
        Campaign: Link to Campaigns
        Performance: Link to Performance
    }
    
    entity "Performance Table" {
        Date: Date
        Clicks: Number
        Revenue: Currency
        Fatigue Score: Formula
        --
        Campaign: Link to Campaigns
        Offer: Link to Offers
    }
    
    Campaigns ||--o{ Offers : "has"
    Campaigns ||--o{ Performance : "tracks"
    Offers ||--o{ Performance : "measures"
                    

Each table links to others. Click into a campaign, see all its offers and performance automatically.

Migrating Your Campaign Tracker

Move from Google Sheets to Airtable for relational power.

  1. Export Google Sheets CSV (Campaigns, Offers, Performance)
  2. Create Airtable base with 3 tables (same structure)
  3. Set up linked fields: Campaigns → Offers, Campaigns → Performance
  4. Import CSVs in order: Campaigns → Offers → Performance
  5. Verify links work (click into related records)
  6. Add Rollup field: Total Revenue per Campaign (sum of Performance)
# Python script to transform Sheets data for Airtable
import csv
import json

def transform_for_airtable(sheets_csv, table_name):
    """Convert flat Sheets export to Airtable-ready JSON"""
    with open(sheets_csv, 'r') as file:
        reader = csv.DictReader(file)
        records = []
        for row in reader:
            # Airtable expects specific field names
            record = {
                'fields': {
                    'Campaign Name': row.get('campaign_name'),
                    'Revenue': float(row.get('revenue', 0)),
                    'Clicks': int(row.get('clicks', 0))
                }
            }
            records.append(record)
    return json.dumps(records, indent=2)

# Use with Claude Code:
# "Transform my looker_export.csv for Airtable import"
                

Airtable API Integration

Same concepts as AWeber/HubSpot API calls you already know.

// Airtable API call (similar to what you did with AWeber API)
const apiKey = 'keyXXXXXXX';
const baseId = 'appXXXXXXXX';
const tableName = 'Campaigns';

const response = await fetch(`https://api.airtable.com/v0/${baseId}/${tableName}`, {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${apiKey}`,
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        'fields': {
            'Campaign Name': 'Spring Sale',
            'Offer': ['rec123456'], // Linked record ID
            'Revenue': 5000
        }
    })
});

const data = await response.json();
console.log('Created:', data);
                

Same HTTP methods (GET, POST) as Make.com HTTP module. Just different base URL and auth header.

Exercise: Rebuild in Airtable

Goal: Move your Looker export tracking from Sheets to Airtable

  1. Create base with Campaigns, Offers, Performance tables
  2. Set up linked fields between all 3 tables
  3. Create Rollup field: Sum Revenue per Campaign
  4. Create View: "High RPE" (filter RPE > $0.50)
  5. Create View: "Fatigue Alert" (filter Fatigue Score > 30%)
  6. Build Form for manual campaign entry (like your current process)

Claude Code Prompt:

"Teach me to build this Airtable base step-by-step:
1. Schema for 3 tables with linked fields
2. Rollup formula for total revenue
3. View for RPE > $0.50
4. Form for manual entry

Use my current Sheets tracker as reference."