Table of Contents
- 1 The Business Situation
- 2 The Existing Process
- 2.1 Operational Problems
- 2.2 Business Effects
- 3 What the New System Needed to Do
- 4 Implementation Approaches Considered
- 4.1 Improved spreadsheets
- 4.2 HubSpot-centered implementation
- 4.3 Airtable with native automations
- 4.4 Custom application
- 5 The Selected Solution
- 6 System Architecture and Data Flow
- 7 Data Structure
- 7.1 Campaign fields
- 7.2 Event and integration fields
- 8 Workflow Statuses and Ownership
- 9 Step-by-Step Implementation
- 9.1 Step 1: Prepare the Accounts and Permissions
- 9.2 Step 2: Build the Intake
- 9.3 Step 3: Create the System of Record
- 9.4 Step 4: Connect the Tools
- 9.5 Step 5: Build the Core Automation
- 9.6 Step 6: Add Approvals, Reminders, and Escalations
- 9.7 Step 7: Add Documents and File Management
- 9.8 Step 8: Add Reporting and Operational Views
- 9.9 Step 9: Add Security and Governance Controls
- 9.10 Step 10: Deploy and Test
- 10 Code and Configuration
- 10.1 Airtable Campaign ID formula
- 10.2 Campaign slug validation
- 10.3 UTM tracking URL formula
- 10.4 Launch readiness formula
- 10.5 ROI and cost-per-lead formulas
- 10.6 Google Sheets staging configuration
- 10.7 Canonical event payload
- 10.8 Native Zap configuration pattern
- 11 Failure Handling and Operational Reliability
- 12 A Complete Example
- 13 Implementation Cost
- 14 Estimated Time and Cost Savings
- 15 Adding AI to the Automation
- 15.1 The Recommended AI Enhancement
- 15.2 Benefits of the AI Enhancement
- 15.3 What Remains Rule-Based or Human-Controlled
- 15.4 Estimating the Additional Value of AI
- 16 Testing Checklist
- 17 Ongoing Maintenance
- 18 When to Move to Dedicated Software
- 19 Implementation Checklist
The Business Situation
Valecrest Equipment Services is a fictional 42-person B2B equipment maintenance provider. Its four-person marketing team runs email, paid social, webinar, partner, and sales-support campaigns. A revenue operations analyst maintains HubSpot, while a finance manager reviews higher-value campaign budgets.
Note: This case study is provided as a representative example of the types of AI integration and digital transformation solutions Intelligex designs and delivers. Actual engagements are tailored to each client’s goals, constraints, existing systems, timeline, and available resources, so the approach, tools, and outcomes may vary.
The marketing department launches approximately six campaigns per month. A typical month also produces about 800 audience, lead, lifecycle, and campaign-result events that need to be associated with the correct campaign. A typical email send reaches approximately 3,000 subscribed contacts, although the audience varies by campaign.
The company already uses HubSpot for contacts and deals, Mailchimp for marketing email, Google Workspace for documents and spreadsheets, and shared folders for campaign assets. Campaign briefs, budgets, launch dates, UTM parameters, and result exports are maintained in separate files.
The process is workable at low volume, but it has become difficult to answer basic operational questions:
- Which campaigns are approved and ready to launch?
- Who owns the next action?
- Are tracking links using the correct UTM values?
- Which Mailchimp audience tag belongs to a campaign?
- How much has been spent against the approved budget?
- How many leads, opportunities, and closed-won deals were attributed to the campaign?
- Which result figures were imported, validated, or corrected?
- Which campaigns still need a post-campaign review?
The business needed a campaign operations system without replacing its CRM, email platform, or Google Workspace environment. Airtable was selected as the campaign system of record, with Zapier coordinating data movement among Airtable, HubSpot, Mailchimp, Google Sheets, and Google Drive.
The Existing Process
The original workflow followed these steps:
- A campaign manager copied a Google Docs brief and entered the campaign objective, proposed channels, dates, and budget.
- The campaign manager emailed the brief to the marketing director for review.
- Budget approval was requested separately when finance involvement was required.
- Assets were stored in a shared Google Drive folder, but file names and folder structures varied.
- UTM parameters were created manually in a spreadsheet or copied from a previous campaign.
- A contact list was selected in HubSpot, exported when necessary, and prepared for Mailchimp.
- After launch, Mailchimp results, paid-channel spend, HubSpot leads, and deal revenue were copied into a reporting spreadsheet.
- The revenue operations analyst reconciled campaign names across systems and prepared a monthly management summary.
Operational Problems
- Campaign names differed across HubSpot, Mailchimp, spreadsheets, and folders.
- Approval evidence was distributed across email threads.
- UTM values contained inconsistent capitalization, spaces, and abbreviations.
- Contacts could be added to the wrong email segment.
- Spend files were updated without a consistent source reference.
- Revenue attribution depended on manual campaign-name matching.
- Duplicate exports could inflate result totals.
- Late campaigns had no consistent escalation path.
Business Effects
- Marketing could not reliably compare campaign performance.
- Launch readiness depended on one employee’s memory.
- Finance could not easily reconcile approved and actual spend.
- Sales and marketing disputed attribution when campaign names differed.
- Management reports required repeated spreadsheet cleanup.
- Incomplete campaigns remained open without a post-campaign review.
- Errors were often found during monthly reporting rather than at entry.
- There was no central queue for integration failures.
The main problem was not the absence of data. The problem was that each tool held a different part of the process, and there was no common campaign identifier connecting those parts.
What the New System Needed to Do
The team defined the operating requirements before selecting the final configuration.
| Requirement | Required behavior | Control |
|---|---|---|
| Campaign intake | Capture objective, audience, owner, dates, budget, channels, and requested assets. | Required fields and controlled choices. |
| Unique identity | Assign one permanent campaign ID used in every connected system. | Autonumber-based Airtable formula. |
| Ownership | Identify the campaign owner and the person responsible for each approval. | Collaborator fields and role-based views. |
| UTM governance | Create source, medium, campaign, content, and term values from controlled inputs. | Slug validation and generated tracking URLs. |
| Approval gates | Require marketing approval for every campaign and finance approval above the budget threshold. | Sequential status rules and recorded approvers. |
| Audience synchronization | Add eligible HubSpot contacts to one Mailchimp audience and apply the campaign tag. | Consent filters, campaign validation, and idempotency keys. |
| Lifecycle updates | Move contacts forward only when a defined high-intent event occurs. | Deterministic rules that never reduce an existing stage. |
| Spend capture | Import validated spend rows with source references. | Google Sheets staging and duplicate checks. |
| Outcome logging | Record leads, lifecycle events, opportunities, revenue, and email metrics. | Source-specific event keys. |
| Attribution | Associate revenue only after a primary campaign has been confirmed. | HubSpot deal property and revenue operations review. |
| Reporting | Show budget, spend, leads, revenue, ROI, overdue work, and automation failures. | Airtable views and a protected Google Sheets dashboard. |
| Exception handling | Prevent incomplete or failed records from disappearing. | Manual-review and synchronization-exception queues. |
| Audit evidence | Record approvals, status changes, source IDs, import dates, and automation activity. | Last-modified fields and activity records. |
| Human control | Keep budget approval, audience selection, revenue attribution, and final performance conclusions under human control. | Approval fields and review statuses. |
Implementation Approaches Considered
| Approach | Connected tools | Effort | Customization | Main limitation |
|---|---|---|---|---|
| Improve the existing spreadsheet process | Google Sheets, Drive, email | Low | Moderate | Weak workflow control and difficult cross-system synchronization. |
| Move all campaign work into HubSpot | HubSpot, Mailchimp, Sheets | Moderate | Depends on licensed features | Would not fully replace the flexible planning and asset workflow the team wanted. |
| Airtable with native automations only | Airtable, Google Workspace | Moderate | High for internal workflow | Less suitable for coordinating all HubSpot and Mailchimp events. |
| Airtable coordinated through Zapier | Airtable, HubSpot, Mailchimp, Zapier, Google Sheets, Drive | Moderate | High | Requires disciplined monitoring and task-volume management. |
| Custom application and data warehouse | Custom database, APIs, CRM, email, BI | High | Very high | More engineering and maintenance than the current volume justifies. |
Improved spreadsheets
A better workbook could standardize campaign names, budgets, and results. It would be inexpensive to start, but row-level ownership, linked assets, approvals, contact-event deduplication, and reliable cross-tool synchronization would remain difficult.
HubSpot-centered implementation
HubSpot remains the correct authority for contacts, lifecycle stages, and deals. However, Valecrest wanted to retain Mailchimp and needed a flexible operational workspace for briefs, assets, approvals, channel plans, spend entries, and post-campaign reviews. The suitability of a HubSpot-only design would also depend on the exact campaign and workflow features available in the company’s subscription.
Airtable with native automations
Airtable can manage forms, linked records, internal notifications, and status changes. Native automations could handle much of the internal process, but Zapier offered a more practical orchestration layer for the existing HubSpot, Mailchimp, and Google Workspace connections.
Custom application
A custom application would provide stronger transaction controls, database constraints, and highly tailored reporting. At six campaigns and approximately 800 related events per month, the additional build and operational burden was not justified.
The Airtable and Zapier approach offered the most appropriate balance of implementation effort, control, integration coverage, and maintainability.
The Selected Solution
The selected implementation uses Airtable as the operational campaign system of record. It does not attempt to make Airtable authoritative for every kind of business data.
| Tool | Responsibility | Authoritative data |
|---|---|---|
| Airtable | Campaign briefs, channels, approvals, assets, spend links, outcome events, status, ownership, and ROI calculations. | Campaign operations and campaign ID. |
| HubSpot | Contacts, forms, lifecycle stages, companies, deals, and confirmed revenue attribution. | CRM contact and deal records. |
| Mailchimp | Subscribed email audience, campaign tags, email sends, and email engagement reports. | Email subscription and send activity. |
| Zapier | Validation, routing, record lookup, audience synchronization, event logging, reminders, and failure notifications. | No master data. It transports and transforms records. |
| Google Sheets | Validated import staging and executive reporting. | Temporary import status and published reporting snapshot. |
| Google Drive | Campaign folders and final assets. | Canonical campaign files. |
| Approval requests, reminders, escalations, completion notices, and error alerts. | Notification delivery only. |
Airtable was selected because the campaign process contains related records rather than one flat list. One campaign can have several channel plans, assets, spend entries, audience synchronization records, and outcome events.
Zapier was selected because it could coordinate the existing tools without introducing a custom application runtime. Google Sheets was retained because finance and executive users were comfortable reviewing a protected tabular report and because exported Mailchimp or paid-channel results could be validated before entering the campaign record.
The new design removed manual campaign-ID reconciliation, most audience-copying work, repeated lifecycle-event entry, and repeated dashboard preparation. It retained human decisions for budget approval, audience definition, consent governance, send authorization, primary revenue attribution, and the final post-campaign assessment.
System Architecture and Data Flow
- Campaign intake: A marketing employee submits an internal Airtable form. Airtable validates required fields, creates the record, and generates a Campaign ID. Incomplete or potentially duplicate submissions enter a review view instead of advancing.
- Brief approval: Zapier detects a campaign awaiting approval and emails the marketing director. The director approves, rejects, or requests more information in Airtable. The last-modified user and time are retained as evidence.
- Budget approval: If planned budget exceeds $10,000, Zapier routes the record to finance after marketing approval. Campaigns at or below the threshold bypass this gate.
- Campaign provisioning: Once approvals and readiness checks pass, Zapier creates a Google Drive folder, stores its returned folder ID in Airtable, and sets the campaign to Approved. A failed folder operation sets Automation Status to Error.
- Channel preparation: Campaign channel records use controlled source and medium values. Airtable generates UTM campaign names and tracking URLs. Invalid slugs or missing destination URLs block launch readiness.
- Audience synchronization: A HubSpot contact whose campaign-tag property changes is evaluated by Zapier. Zapier confirms that the Campaign ID exists and is approved, verifies the synchronization eligibility fields, finds or creates the Mailchimp subscriber, and applies the Campaign ID as a tag. Returned subscriber information is logged in Airtable.
- Lead processing: A HubSpot form submission containing the Campaign ID triggers Zapier. The Zap validates the campaign, records a lead event, stores the latest UTM values on the contact, and advances the lifecycle stage only when the defined form and current stage meet the rule.
- Spend and campaign results: Mailchimp result exports and channel spend files are entered in Google Sheets. Only rows marked Validated and passing formula checks are imported into Airtable. The source row is stamped with its import time and destination record ID.
- Revenue event: A HubSpot deal moving to Closed Won is eligible for campaign revenue only when its primary campaign property is populated and attribution is confirmed. Zapier upserts one revenue event using the deal ID as part of the idempotency key.
- Reporting and review: Airtable rolls up spend, leads, opportunities, and attributed revenue. Zapier publishes a flattened campaign summary to Google Sheets. When the reporting window closes and data is validated, the campaign enters Review Required.
- Intake: Internal Airtable campaign request form.
- System of record: Airtable for campaign operations, with HubSpot remaining authoritative for CRM records.
- Automation layer: Zapier multi-step workflows with filters, paths, lookups, delays, and error handling.
- Document storage: Google Drive campaign folders linked from Airtable.
- Notifications: Role-based email notifications sent through a controlled Google Workspace connection.
- Reporting: Airtable operational views and a protected Google Sheets executive dashboard.
- AI layer: Optional generation of a draft campaign summary from validated aggregate data.
Data Structure
The Airtable base contains related tables rather than one campaign spreadsheet.
| Table | Relationship | Purpose |
|---|---|---|
| Campaigns | Parent record | One record per campaign. |
| Campaign Channels | Many channels to one campaign | Channel-specific UTM values, destination URLs, and external campaign IDs. |
| Assets | Many assets to one campaign | File requirements, owners, versions, approvals, and Drive links. |
| Spend Entries | Many entries to one campaign | Validated cost records by date, channel, and source reference. |
| Outcome Events | Many events to one campaign | Leads, lifecycle events, opportunities, revenue, and aggregate email metrics. |
| Audience Sync | Many contacts to one campaign | Synchronization status without making Airtable the contact master. |
| Activity Log | Many activities to one campaign | Approval, status, automation, and manual-recovery evidence. |
| Sync Exceptions | Optional link to a campaign | Failures that require correction or replay. |
Campaign fields
| Field | Type and requirement | Source or allowed values | Purpose and automation |
|---|---|---|---|
| Record ID | Airtable record identifier, required | System generated | Used by Zapier when updating a record. |
| Sequence | Autonumber, required | System generated | Creates a non-reused Campaign ID. Deleted records may leave gaps. |
| Campaign ID | Formula text, required | CMP-YYYY-NNNN | Permanent cross-system identifier. |
| Campaign Name | Single-line text, required | Requester | Human-readable campaign name. |
| Campaign Slug | Single-line text, required | Lowercase letters, digits, and hyphens | Used in the UTM campaign value. |
| Requester | Collaborator, required | Airtable user | Person requesting the work. |
| Owner | Collaborator, required | Marketing team | Accountable for completion. |
| Status | Single select, required | Controlled workflow statuses | Determines queues and automation paths. |
| Priority | Single select, required | Low, Normal, High, Critical | Controls operational ordering, not strategic value. |
| Objective | Long text, required | Requester | Defines the intended outcome. |
| Audience Description | Long text, required | Requester | Describes the approved segment without storing contact details. |
| Planned Launch Date | Date and time, required | Requester | Drives reminders and readiness checks. |
| Planned End Date | Date, required | Requester | Starts the results-collection window. |
| Planned Budget | Currency, required | Zero or positive | Determines whether finance approval is required. |
| Brief Approval | Single select, required | Pending, Approved, Rejected, More Information | Marketing director decision. |
| Brief Approval Modified By | Last-modified-by field | System generated | Records who changed the approval field. |
| Brief Approval Time | Last-modified-time field | System generated | Records approval timing. |
| Finance Approval | Single select, conditional | Not Required, Pending, Approved, Rejected | Required above the budget threshold. |
| Drive Folder ID | Text, automation managed | Google Drive | Prevents duplicate folder creation. |
| Document Link | URL, automation managed | Google Drive | Opens the canonical campaign folder. |
| Actual Spend | Rollup currency | Spend Entries | Sums validated spend. |
| Leads | Rollup number | Outcome Events | Sums unique lead units. |
| Opportunities | Rollup number | Outcome Events | Sums unique opportunity events. |
| Attributed Revenue | Rollup currency | Confirmed Closed Won events | Sums revenue under the agreed attribution rule. |
| ROI | Formula percentage | Spend and revenue | Calculates return relative to recorded spend. |
| Automation Status | Single select | Pending, Running, Complete, Error, Manual Review | Shows the most recent automation state. |
| Last Automation Run | Date and time | Zapier | Supports monitoring and reconciliation. |
| Retry Count | Integer | Zapier or operator | Limits repeated replay attempts. |
| Error Message | Long text | Automation | Stores a concise actionable failure description. |
| Created Date | Created-time field | System generated | Supports ID generation and audit review. |
| Last Updated | Last-modified-time field | System generated | Supports synchronization monitoring. |
| Post-Campaign Summary | Long text | Human or reviewed AI draft | Stores the approved performance summary. |
| Notes | Long text | Authorized users | Records operational context that does not fit a controlled field. |
Event and integration fields
| Field | Table | Validation | Example |
|---|---|---|---|
| Idempotency Key | Outcome Events, Spend Entries, Audience Sync | Must be found before a new record is created | hs:1048821:CMP-2026-0042:lead |
| Source System | Outcome Events, Spend Entries | Controlled single select | HubSpot |
| External System ID | All integration tables | Required when the source supplies one | HubSpot deal ID or Mailchimp campaign ID |
| Metric Type | Outcome Events | Lead, MQL, Opportunity, Revenue, Delivered, Open, Click | Revenue |
| Metric Value | Outcome Events | Numeric and non-negative | 18000 |
| Event Time | Outcome Events | Valid date and time | 2026-09-18 14:30 |
| Contact ID | Audience Sync, Outcome Events | HubSpot identifier, not contact name | 1048821 |
| Deal ID | Outcome Events | Required for deal-based events | 781245 |
| Consent Check | Audience Sync | Eligible, Ineligible, Review | Eligible |
| Sync Status | Audience Sync | Queued, Complete, Skipped, Error | Complete |
| Source Reference | Spend Entries | Required and stable | invoice-4821-line-3 |
| Validated | Spend Entries, Outcome Events | Checkbox or controlled Yes/No | Yes |
| Imported At | Spend Entries, Outcome Events | Automation timestamp | 2026-09-25 09:15 |
| Retry Count | Sync Exceptions | Zero or positive integer | 1 |
| Error Message | Sync Exceptions | Required for open failures | Campaign ID not found |
Airtable does not provide the same database-level unique constraint as a relational database. Duplicate prevention is therefore implemented by searching for the idempotency key before creation, logging the source identifier, and maintaining a duplicate-review view.
Workflow Statuses and Ownership
| Status | Meaning and owner | Entry and exit conditions | Reminder and escalation |
|---|---|---|---|
| Draft | Campaign owner is completing the brief. | Created by intake. Exits when all required fields pass validation. | Reminder after three calendar days without activity. |
| Awaiting Brief Approval | Marketing director owns the decision. | Enters after brief validation. Exits through approval, rejection, or request for information. | Reminder after 48 hours; escalation after 96 hours. |
| Awaiting Budget Approval | Finance manager owns the decision. | Enters after brief approval when budget exceeds $10,000. | Reminder after 48 hours; escalation to the director after 96 hours. |
| Approved | Campaign owner prepares channels and assets. | All required approvals complete. Exits when launch readiness passes. | Alert if launch is within five days and readiness is blocked. |
| Scheduled | Campaign owner confirms send and launch timing. | Channels, UTMs, assets, audience, and dates are ready. | Escalation if blocked within two days of launch. |
| Live | Campaign owner monitors delivery and issues. | Launch confirmed. Exits after the planned end date or manual stop. | Operational alerts are immediate for synchronization failures. |
| Awaiting Results | Marketing coordinator and revenue operations collect results. | Campaign has ended. Exits when required metrics are validated. | Reminder five days after end date; escalation after ten days. |
| Review Required | Campaign owner drafts findings; director reviews. | Required result fields are validated. | Reminder after five days. |
| Closed | No active owner action. | Final review approved and open exceptions resolved. | No reminders unless later data changes. |
| More Information | Campaign owner must revise the brief. | Approver identifies missing or unclear information. | Reminder after three days. |
| Rejected | Campaign owner receives the reason. | An approver rejects the request. Reopening requires a new review. | No automated progression. |
| On Hold | Campaign owner records the reason and review date. | Manual decision due to timing, budget, or dependency. | Reminder on the recorded review date. |
| Automation Error | Revenue operations owns technical recovery. | A required integration action fails or produces invalid data. | Immediate error alert and daily unresolved-error reminder. |
A rejected campaign does not automatically return to approval. The campaign owner must correct the record, clear the rejection reason only when appropriate, and deliberately resubmit it. A campaign enters manual review when identifiers conflict, consent is uncertain, the attribution property is missing, or an imported result fails validation.
Step-by-Step Implementation
Step 1: Prepare the Accounts and Permissions
- Create an Airtable workspace or dedicated base for campaign operations. Select an account level that supports the required record volume, form controls, collaborator permissions, automation history, and interfaces.
- Confirm that HubSpot supports the custom contact and deal properties required by the design. Confirm that authorized users can maintain lists and update contact and deal records.
- Confirm that the Mailchimp account supports the required audience, tags, user permissions, and campaign reporting process.
- Use a Zapier account that supports the required number of multi-step workflows, filters, paths, task volume, error handling, and scheduling features.
- Create a Google Shared drive for marketing when the company’s Google Workspace configuration supports it. Otherwise, use a folder owned by a controlled role account rather than an employee’s personal drive.
- Create or designate a role mailbox such as
YOUR_EMAIL_ADDRESSfor automation alerts and operational ownership. - Create dedicated integration connections in Zapier. Authenticate with OAuth where the connector provides it. Avoid personal accounts that may be disabled when an employee leaves.
- Limit the integration account to the Mailchimp audience, Airtable base, HubSpot records, and Google folders required by the process.
- Create a development Airtable base, a test Mailchimp audience, test HubSpot contacts and deals, and a test Google Drive root folder. Do not test audience synchronization against live subscribers.
- Document connection owners, renewal dates, recovery contacts, and the process for revoking access.
No direct API keys are required for the core implementation because Zapier’s managed application connections use each platform’s supported authentication flow. If a connector later requires an API credential, store it in the automation platform’s credential store and use placeholders such as YOUR_API_KEY in documentation.
Recommended roles
- Marketing contributors: Create and update campaign records, channels, and assets.
- Marketing director: Approve briefs and final reviews.
- Finance approver: View budgets and record approval decisions.
- Revenue operations: Administer integrations, attribution, exceptions, and reporting.
- Executive viewers: Read-only access to dashboards and approved summaries.
- Automation identity: Update integration fields without broad workspace administration.
Step 2: Build the Intake
Create an internal Airtable form connected to the Campaigns table. Restrict it to authorized employees where the account configuration supports authenticated access. Because this is an internal request form, restricting access is the primary spam-prevention control.
| Field | Required | Input control | Validation |
|---|---|---|---|
| Campaign Name | Yes | Short text | At least one meaningful name; duplicate check occurs after submission. |
| Campaign Slug | Yes | Short text | Lowercase letters, numbers, and single hyphens only. |
| Requester | Yes | Collaborator or authenticated submitter | Must be an active user. |
| Owner | Yes | Collaborator | Must be a member of the marketing team. |
| Objective | Yes | Long text | Describe the business outcome and intended action. |
| Audience Description | Yes | Long text | Do not paste contact lists or sensitive personal data. |
| Primary Campaign Type | Yes | Single select | Email, Webinar, Paid Social, Paid Search, Partner, Event, Content, Other. |
| Requested Channels | Yes | Multiple select | At least one channel. |
| Planned Launch Date | Yes | Date and time | Must allow sufficient review time unless marked urgent. |
| Planned End Date | Yes | Date | Cannot precede the launch date. |
| Planned Budget | Yes | Currency | Zero or positive. |
| Budget Justification | Conditional | Long text | Required when planned budget exceeds $10,000. |
| Destination URL | Conditional | URL | Required for tracked digital channels. |
| Requested Assets | Yes | Multiple select | Email, landing page, ad, webinar deck, image, sales handout, other. |
| Initial Attachments | No | Attachment | Subject to Airtable and connector file limits. |
| Priority | Yes | Single select | Low, Normal, High, Critical. |
Configure conditional field visibility where the form supports it. For example, show Budget Justification when the amount is above the threshold and show Destination URL when a digital channel is selected. Readiness formulas must still enforce these requirements because form visibility alone is not a transaction control.
After submission, display a confirmation explaining that a Campaign ID will be assigned and that approval notification will follow. Do not include confidential campaign details in the confirmation page.
Create a Duplicate Key formula using normalized campaign name and launch date. A Zap searches open Campaigns for the same key. A suspected duplicate is marked Manual Review rather than automatically deleted.
Step 3: Create the System of Record
- Create the eight Airtable tables described in the data model.
- Add the Campaigns fields, including the Autonumber Sequence and Created Date fields.
- Create the Campaign ID formula. Do not use the campaign name as the identifier because names can change.
- Create controlled single-select fields for status, approval, priority, source system, metric type, channel, and automation state.
- Link Campaign Channels, Assets, Spend Entries, Outcome Events, Audience Sync, Activity Log, and Sync Exceptions back to Campaigns.
- Create numeric helper fields in Outcome Events, such as Lead Units, Opportunity Units, and Revenue Value. Each helper returns the metric value only when the event type matches.
- Roll those helper values up to Campaigns with
SUM(values). - Create rollups for Actual Spend, asset counts, missing required assets, and open exceptions.
- Create the ROI, cost-per-lead, budget variance, and launch-readiness formulas.
- Add a Last Updated field that observes operational and integration fields.
- Create filtered views for each workflow queue and automation trigger.
- Enable record history according to the selected Airtable account capabilities, but retain the Activity Log because history availability and retention can vary.
Naming conventions
- Campaign ID:
CMP-2026-0042 - UTM campaign:
cmp-2026-0042-q3-preventive-maintenance - Campaign folder:
CMP-2026-0042_Q3-Preventive-Maintenance - Asset file:
CMP-2026-0042_Email_Header_v01_2026-09-18.png - Mailchimp tag:
CMP-2026-0042 - Spend source reference:
invoice-4821-line-3
Operational views
- New Intake Review
- Possible Duplicates
- Awaiting Brief Approval
- Awaiting Finance Approval
- Launch Readiness Blocked
- Campaigns Launching in Five Days
- Live Campaigns
- Awaiting Results
- Review Required
- Open Automation Errors
- Unmatched Imported Rows
- Closed This Month
Step 4: Connect the Tools
Connector event and action labels can change. Configure the underlying trigger, filter, lookup, and destination behavior described below rather than relying only on a specific interface label.
| Connection | Trigger and authentication | Mapping and returned value | Failure behavior |
|---|---|---|---|
| Airtable to Google Drive | Approved campaign enters the provisioning view; OAuth connection. | Campaign ID and name become the folder name. Drive returns folder ID and URL. | Set campaign Automation Status to Error and create a Sync Exception. |
| HubSpot to Mailchimp | Eligible contact is created or its campaign-tag field changes; OAuth connections. | Email, first name, last name, HubSpot Contact ID, and Campaign ID. Mailchimp returns subscriber identity and status. | Skip ineligible contacts; log invalid campaigns, email errors, and connector failures. |
| Mailchimp to HubSpot | Subscriber becomes unsubscribed; OAuth connections. | Email or HSCID locates the HubSpot contact. Update the custom Mailchimp synchronization status. | Never automatically resubscribe. Unmatched contacts enter manual review. |
| HubSpot forms to Airtable | New form submission; OAuth connections. | Contact ID, Campaign ID, UTM values, form ID, and event time become an Outcome Event. | Unknown Campaign IDs enter the exception queue and do not update campaign totals. |
| HubSpot deals to Airtable | Deal stage or relevant property changes; OAuth connections. | Deal ID, confirmed campaign ID, amount, close date, and stage become an upserted event. | Missing or unconfirmed attribution is routed to revenue operations. |
| Google Sheets to Airtable | Staging row changes to Validated and is not imported; OAuth connections. | Campaign ID, metric, value, date, channel, and source reference become a Spend Entry or Outcome Event. | Invalid rows retain the error text and are not stamped as imported. |
| Airtable to Google Sheets | Campaign reporting fields change or daily reconciliation runs. | Campaign ID is the lookup key. Sheet row receives current status, spend, leads, revenue, and ROI. | Log dashboard-write failures without changing the underlying campaign totals. |
HubSpot configuration
Create organization-defined contact properties for the integration. Example internal names are:
latest_marketing_campaign_idlatest_utm_sourcelatest_utm_mediumlatest_utm_campaignmailchimp_campaign_tagmailchimp_sync_status
Create deal properties for primary_marketing_campaign_id and campaign_attribution_confirmed. These are custom properties defined by the business, not assumed standard fields.
Create one permanent HubSpot list for Mailchimp-eligible contacts. Its criteria must reflect the organization’s approved consent and suppression policy. Do not treat a generic contact property as a substitute for legal review of email subscription requirements.
Mailchimp configuration
Use one primary audience unless a documented business or regulatory reason requires more. Create a merge field such as HSCID for the HubSpot Contact ID and use the Airtable Campaign ID as a Mailchimp tag.
The automation must not automatically change an existing unsubscribed or cleaned contact to subscribed. New subscription status may be set only when the source record contains the organization’s accepted evidence of permission.
Google Sheets configuration
Create one workbook with these protected tabs:
- Results_Staging: Validated Mailchimp, spend, and other aggregate result rows.
- Campaign_ROI: One published row per Airtable campaign.
- Lists: Controlled source-system, metric-type, channel, and currency values.
- Exceptions: Optional read-only export of open Airtable failures.
Protect formula columns and restrict the Validated field to designated reviewers.
Step 5: Build the Core Automation
Automation 1: Validate a new campaign
- Trigger: A new Airtable campaign record is created.
- Conditions: Campaign ID exists, owner is assigned, dates are valid, and the duplicate key is not already used by another open campaign.
- Actions: Search for a duplicate, set the initial status, write the validation result, and create an Activity Log record.
- Fields updated: Status, Automation Status, Last Automation Run, Error Message.
- Notification: Notify the owner if required data is missing or a duplicate is suspected.
- Exception: Send the record to Manual Review rather than deleting it.
Automation 2: Provision an approved campaign
- Trigger: The campaign enters the Approved Provisioning view.
- Conditions: Brief Approval is Approved, Finance Approval is Approved or Not Required, Drive Folder ID is blank, and readiness validation is not in error.
- Actions: Set Automation Status to Running, create the Google Drive folder, capture the returned folder ID and URL, create missing channel records, and mark provisioning Complete.
- Fields updated: Drive Folder ID, Document Link, Automation Status, Last Automation Run.
- Notification: Email the owner with the folder link and launch-preparation checklist.
- Exception: If folder creation fails, set Automation Status to Error and create a Sync Exception.
The folder ID check makes this Zap idempotent. Replaying the Zap does not create another folder when an ID is already stored.
Automation 3: Synchronize an eligible contact to Mailchimp
- Trigger: A HubSpot contact is created or the campaign-tag property changes.
- Conditions: Email is present, the contact meets the approved eligibility criteria, Mailchimp synchronization status is not Unsubscribed or Cleaned, and the Campaign ID exists in Airtable with an Approved, Scheduled, or Live status.
- Actions: Find the Airtable campaign, build an idempotency key, find the Mailchimp subscriber, add or update allowed merge fields, apply the Campaign ID tag, and upsert an Audience Sync record.
- Fields updated: HubSpot mailchimp_sync_status, Airtable Sync Status, External System ID, Last Automation Run.
- Notification: No message for normal records; send a batch exception summary to revenue operations.
- Exception: Invalid consent state, invalid email, unknown campaign, or existing suppression becomes Skipped or Manual Review.
For larger audience batches, add a queued delay so records are processed at a controlled rate. The exact interval should be adjusted to observed connector responses and current platform limits.
Automation 4: Record a HubSpot lead event
- Trigger: A new HubSpot form submission contains a Campaign ID.
- Conditions: Campaign exists, form is approved for marketing attribution, and the contact-event idempotency key does not already exist.
- Actions: Find the campaign, find or create the Outcome Event, store the latest UTM properties on the HubSpot contact, evaluate the lifecycle rule, and update the contact only if a forward movement is allowed.
- Fields updated: Latest Campaign ID, latest UTM values, lifecycle stage when allowed, event source fields, campaign rollups.
- Notification: Notify the assigned sales owner only for defined high-intent forms.
- Exception: Unknown Campaign IDs and conflicting UTM data enter the manual-review queue.
A marketing-content download does not automatically become an MQL. A demo request may move an eligible Subscriber to Lead if that is the company’s approved rule. Later qualification stages remain controlled by sales and revenue operations.
Automation 5: Record opportunity and revenue events
- Trigger: A HubSpot deal’s stage, amount, close date, or attribution fields change.
- Conditions: Primary Marketing Campaign ID is valid. Revenue requires Closed Won and Campaign Attribution Confirmed equals Yes.
- Actions: Build a deal-based idempotency key, find the existing event, create or update its current value, and refresh the campaign rollups.
- Fields updated: Deal ID, Metric Type, Metric Value, Event Time, Validation Status, Last Automation Run.
- Notification: Notify revenue operations when a Closed Won deal lacks confirmed campaign attribution.
- Exception: A reverted stage or corrected amount updates the existing event rather than creating another revenue row.
Automation 6: Import validated spend and performance rows
- Trigger: A Google Sheets staging row changes and Imported At is blank.
- Conditions: Validated equals Yes, Validation Status equals READY, Campaign ID exists, value is non-negative, and source reference is present.
- Actions: Find the campaign, build the row key, find an existing Spend Entry or Outcome Event, create or update it, and write the Airtable record ID back to the sheet.
- Fields updated: Imported At, Airtable Record ID, Error, campaign rollups.
- Notification: Send one daily summary of rows that could not be imported.
- Exception: Invalid rows stay unimported with an actionable error message.
Stamping Imported At causes the row-change trigger to run again, but the filter stops the second execution. This prevents a loop.
Automation 7: Publish the executive campaign row
- Trigger: Airtable campaign reporting fields change or a daily reconciliation schedule runs.
- Conditions: Campaign ID exists and the campaign is not a test record.
- Actions: Find the Campaign_ROI row by Campaign ID, create it if absent, update current metrics, and stamp Last Refreshed.
- Fields updated: Status, owner, dates, budget, spend, leads, opportunities, revenue, ROI, and refresh timestamp.
- Notification: None for normal updates; dashboard-write failures go to revenue operations.
- Exception: Duplicate Campaign IDs in the report are flagged and not automatically consolidated.
Automation 8: Capture integration errors
- Trigger: Zapier reports a failed workflow, or a reconciliation check finds a source record without a destination record.
- Conditions: The failure is not already open under the same workflow and source event key.
- Actions: Create or update a Sync Exception with workflow name, source ID, campaign, error message, time, and retry count.
- Fields updated: Exception Status, Retry Count, Last Failure Time, Error Message.
- Notification: Immediate alert for launch-blocking or consent-related errors; daily digest for lower-priority errors.
- Exception: If Airtable itself is unavailable, send the alert to the role mailbox and retain the failed-run identifier in Zapier.
Step 6: Add Approvals, Reminders, and Escalations
The approval process is sequential:
- The campaign owner submits the validated brief.
- The marketing director receives the approval request.
- If the director approves and budget is at or below $10,000, Finance Approval becomes Not Required.
- If the director approves and budget exceeds $10,000, the campaign moves to Awaiting Budget Approval.
- The finance manager approves or rejects the budget.
- Only campaigns with all required approvals can enter Approved.
Each approval field has a corresponding Last Modified By and Last Modified Time field. The automation also creates an Activity Log record containing the campaign, decision, approver, time, and any decision notes.
A rejection requires a reason. A request for more information moves the record backward to the campaign owner without clearing previous approval evidence. If material fields such as budget, objective, audience, or launch date change after approval, a formula marks Reapproval Required and the campaign returns to the appropriate gate.
A scheduled Zap runs daily, retrieves records in reminder views, and processes each result through a loop:
- Send an initial approval reminder after 48 hours.
- Escalate an unanswered approval after 96 hours.
- Alert the owner five days before launch when readiness is blocked.
- Escalate two days before launch when a critical requirement is still missing.
- Remind revenue operations five days after campaign end when results are incomplete.
- Escalate incomplete results ten days after campaign end.
If the primary approver is unavailable, an authorized administrator assigns the Delegate Approver field. The automation sends future notifications to the delegate while preserving the original approver. It does not infer availability from calendars.
Step 7: Add Documents and File Management
Create one controlled Google Drive root folder for marketing campaigns. Each approved campaign receives this structure:
Campaigns/
2026/
CMP-2026-0042_Q3-Preventive-Maintenance/
01_Brief/
02_Working-Assets/
03_Approved-Assets/
04_Reports/
05_Post-Campaign-Review/
The root folder is shared with the marketing team and automation identity. Finance receives access only where budget documents require it. Executive viewers receive read-only access to approved reports, not working assets.
When an Asset record contains an Airtable attachment, a Zap can upload the file to the campaign’s Working-Assets folder immediately and store the returned Drive file ID and URL. Because temporary attachment URLs may expire, the upload must occur promptly. For files exceeding connector limits, users upload directly to Drive and paste the canonical link into the Asset record.
Use a version number in the file name. When an approved binary asset is replaced, create a new Asset record or mark the previous record Superseded. Do not rely on identical file names to indicate the current version.
- Canonical location: Google Drive, not email attachments.
- Required link: Every approved asset record must contain a Drive file ID or URL.
- Duplicate control: Campaign ID, asset type, channel, and version form the asset key.
- Missing-document handling: Required assets without an approved file block launch readiness.
- Failed upload handling: Preserve the Airtable attachment, set Asset Status to Upload Error, and create a Sync Exception.
- Retention: Apply the company’s documented marketing, contract, and privacy retention policy.
- Archiving: Closed-campaign folders become read-only for most contributors after the review period.
Step 8: Add Reporting and Operational Views
Airtable provides operational views for people doing the work. Google Sheets provides the flattened management report.
| View | Filter | Owner and action |
|---|---|---|
| New Records | Status equals Draft and Created Date is recent | Campaign owner completes intake. |
| Awaiting Action | Approval status is pending | Current approver records a decision. |
| Overdue Records | Due date has passed and status is not Closed | Marketing director reassigns or escalates. |
| Incomplete Records | Readiness equals Blocked | Campaign owner resolves missing fields or assets. |
| Exceptions | Automation Status equals Error | Revenue operations investigates. |
| Rejected Items | Status equals Rejected | Campaign owner reviews the reason. |
| By Owner | Grouped by Owner and Status | Team balances workload. |
| Upcoming Deadlines | Launch date in the next 14 days | Marketing coordinator checks readiness. |
| Recently Completed | Status equals Closed and close date is within 30 days | Director reviews recent results. |
| Automation Failures | Open Sync Exceptions | Revenue operations replays or corrects. |
| Processing Time | Approval and completion timestamps populated | Management reviews cycle time. |
| Volume by Status | All active campaigns | Management reviews pipeline volume. |
| Manual Review Queue | Validation or consent state equals Review | Authorized owner resolves ambiguity. |
The Campaign_ROI sheet contains one row per Campaign ID. Protected formulas calculate budget variance, cost per lead, and ROI from the values published by Airtable. Pivot tables summarize volume and performance by month, campaign type, owner, and channel.
The dashboard is refreshed by event-driven updates and a daily reconciliation. Revenue operations owns the report. Suggested alert thresholds include:
- Actual spend above 110 percent of approved budget.
- Launch within two days while readiness remains blocked.
- Any unresolved high-priority automation failure.
- Results still incomplete ten days after campaign end.
- Closed Won deal with an unconfirmed primary campaign.
These thresholds are business rules, not AI decisions, and should be adjusted to the company’s operating policy.
Step 9: Add Security and Governance Controls
- Least privilege: Give contributors access only to the base, tables, folders, and CRM actions they need.
- Role-based views: Finance sees budget fields but does not need Mailchimp administration. Executive users receive read-only reporting access.
- Sensitive fields: Do not copy contact names, email addresses, deal notes, or customer details into reporting sheets when identifiers and aggregate metrics are sufficient.
- Shared links: Restrict Google Drive links to approved domains or named users. Disable public links.
- Credentials: Store OAuth connections in Zapier. Do not place tokens in Airtable, Sheets, prompts, or documentation.
- Connection ownership: Use controlled integration identities where platform policy permits.
- Activity logs: Retain approval changes, source IDs, imported timestamps, failed-run identifiers, and recovery actions.
- Former employees: Remove access from Airtable, HubSpot, Mailchimp, Zapier, and Google Workspace through the offboarding process.
- Backups: Export campaign and event tables on a documented schedule and test restoration procedures.
- Privacy: Keep campaign audience descriptions aggregate. Contact-level marketing permissions remain in the approved source systems.
- Consent: Never use the integration to bypass an unsubscribe, suppression, or legal-basis requirement.
- AI restrictions: Send only validated aggregate campaign data to an approved AI service.
- Human approval: Keep budget, send authorization, attribution, and final reporting conclusions under named human owners.
Regulatory requirements depend on industry, geography, data type, and business activity. The company should have its privacy and legal advisers validate retention, consent, cross-border processing, and AI-service terms before processing personal or regulated information.
Step 10: Deploy and Test
- Build the Airtable base, Google workbook, Drive structure, HubSpot properties, Mailchimp test audience, and Zaps in test environments.
- Create at least 20 sample campaigns covering low and high budgets, missing assets, duplicate names, approval rejection, future launches, and completed campaigns.
- Create test HubSpot contacts using non-production addresses under a controlled test domain.
- Create test deals covering open, lost, Closed Won, corrected amount, missing attribution, and confirmed attribution cases.
- Run each Zap one action at a time and inspect every mapped value before enabling automatic execution.
- Perform user acceptance testing with the campaign manager, marketing director, finance manager, and revenue operations analyst.
- Pilot the process with two campaigns while maintaining the previous report as a temporary comparison.
- Reconcile contact counts, spend, leads, revenue, and dashboard rows between source and destination systems.
- Document defects, correct the configuration, and rerun the complete testing checklist.
- Activate integrations in phases: campaign intake first, approvals second, audience synchronization third, event logging fourth, and reporting last.
- Assign revenue operations as launch support owner and the marketing coordinator as backup.
- Publish a short operating guide covering intake, approvals, errors, and manual recovery.
- Retain exports of the old campaign spreadsheets before making them read-only.
- Define rollback as pausing the affected Zap, preserving source events, correcting the error, and replaying only after reconciliation.
Code and Configuration
The core implementation does not require a custom application or server runtime. Airtable formulas, Google Sheets formulas, and native Zapier triggers and actions provide the required automation. This reduces code maintenance, but the formulas and workflow configuration still require version control, testing, and documentation.
Airtable Campaign ID formula
Place this formula in the Campaign ID field of the Campaigns table. It requires an Autonumber field named Sequence and a Created Time field named Created Date.
"CMP-" &
DATETIME_FORMAT({Created Date}, "YYYY") &
"-" &
RIGHT("0000" & {Sequence}, 4)
A new record should produce a value such as CMP-2026-0042. If the formula returns blank, confirm the field names and types. Gaps caused by deleted records are acceptable because IDs must not be reused.
Campaign slug validation
Place this formula in a field named Slug Validation. It returns Valid only when the slug contains lowercase letters, numbers, and single hyphens.
IF(
REGEX_MATCH(
{Campaign Slug},
"^[a-z0-9]+(-[a-z0-9]+)*$"
),
"Valid",
"Invalid"
)
Test values such as q3-preventive-maintenance, Q3 Campaign, and q3--campaign. Only the first should pass.
UTM tracking URL formula
Place this formula in the Campaign Channels table. The UTM inputs must already be controlled slugs, so additional URL encoding is not required for those values.
IF(
AND(
{Destination URL},
{UTM Source},
{UTM Medium},
{Campaign ID},
{Campaign Slug}
),
{Destination URL} &
IF(FIND("?", {Destination URL}) > 0, "&", "?") &
"utm_source=" & {UTM Source} &
"&utm_medium=" & {UTM Medium} &
"&utm_campaign=" & LOWER({Campaign ID} & "-" & {Campaign Slug}) &
IF({UTM Content}, "&utm_content=" & {UTM Content}, "") &
IF({UTM Term}, "&utm_term=" & {UTM Term}, ""),
BLANK()
)
Test one destination URL without a query string and one with an existing query string. Confirm that the formula adds ? to the first and & to the second.
Launch readiness formula
Place this formula in the Campaigns table after creating the referenced approval, rollup, date, and validation fields.
IF(
AND(
{Brief Approval} = "Approved",
IF(
{Planned Budget} > 10000,
{Finance Approval} = "Approved",
TRUE()
),
{Slug Validation} = "Valid",
{Channel Count} > 0,
{Missing Required Assets} = 0,
{Open High-Priority Exceptions} = 0,
{Planned Launch Date}
),
"Ready",
"Blocked"
)
Test budgets immediately below, equal to, and above the threshold. A budget of exactly $10,000 does not require finance approval under this rule. Change the comparison if company policy differs.
ROI and cost-per-lead formulas
Place these formulas in the Campaigns table and format the first as a percentage and the second as currency.
IF(
{Actual Spend} > 0,
({Attributed Revenue} - {Actual Spend}) / {Actual Spend},
BLANK()
)
IF(
{Leads} > 0,
{Actual Spend} / {Leads},
BLANK()
)
The ROI formula uses attributed revenue minus recorded spend, divided by recorded spend. It does not prove that the campaign caused the revenue. Attribution depends on the documented campaign-assignment rule.
Google Sheets staging configuration
Create the Results_Staging columns in this exact order:
A: Row Key
B: Campaign ID
C: Metric Date
D: Source System
E: Metric Type
F: Channel
G: Metric Value
H: Currency
I: External ID
J: Validated
K: Validation Status
L: Imported At
M: Airtable Record ID
N: Error
Place this row-key formula in A2 and fill it down:
=LOWER(B2&"|"&D2&"|"&E2&"|"&I2)
Place this validation formula in K2 and fill it down:
=IF(
AND(
REGEXMATCH(B2,"^CMP-[0-9]{4}-[0-9]{4}$"),
ISNUMBER(C2),
D2<>"",
E2<>"",
ISNUMBER(G2),
G2>=0,
I2<>""
),
"READY",
"ERROR"
)
Protect columns A, K, L, M, and N. Use data validation for Source System, Metric Type, Channel, Currency, and Validated. The Zap triggers only when J equals Yes, K equals READY, and L is blank.
Canonical event payload
The following JSON represents the normalized data mapped inside Zapier before an Airtable Outcome Event is created or updated. It is a mapping contract, not a public webhook endpoint.
{
"idempotency_key": "hs:1048821:CMP-2026-0042:lead",
"campaign_id": "CMP-2026-0042",
"source_system": "HubSpot",
"external_system_id": "1048821",
"metric_type": "Lead",
"metric_value": 1,
"event_time": "2026-09-18T14:30:00Z",
"contact_id": "1048821",
"deal_id": null,
"utm_source": "mailchimp",
"utm_medium": "email",
"utm_campaign": "cmp-2026-0042-q3-preventive-maintenance",
"validated": true
}
Each Zap should produce these fields before the Airtable lookup. Required fields are idempotency_key, campaign_id, source_system, external_system_id, metric_type, metric_value, event_time, and validated.
Native Zap configuration pattern
- Configure the source event and test it with a sample record.
- Add a formatting step to trim IDs, normalize email case, and convert dates to one documented time zone.
- Add a filter for required fields and eligible statuses.
- Find the Airtable Campaign by exact Campaign ID.
- Stop and create an exception when zero or multiple campaigns are found.
- Build the idempotency key from immutable source identifiers.
- Search the destination table for that key.
- Use paths to create when absent and update when present.
- Store returned destination IDs in the source or integration-log record.
- Set the success timestamp only after all required destination actions complete.
- Configure failure notification or a separate failed-run workflow.
- Test create, update, duplicate, invalid, and replay scenarios before activation.
Likely errors include expired OAuth connections, renamed Airtable fields, deleted Google Sheets columns, invalid campaign IDs, inaccessible Drive folders, and suppressed Mailchimp contacts. Inspect Zapier task history, Airtable Sync Exceptions, and the source record before replaying a failed event.
Failure Handling and Operational Reliability
| Failure | Automated response | Manual recovery | Owner |
|---|---|---|---|
| Missing Campaign ID | Stop processing and create an exception. | Correct the source record, verify the campaign, and replay. | Campaign owner |
| Duplicate event | Find the existing idempotency key and update instead of creating. | Review the duplicate view if conflicting values exist. | Revenue operations |
| Duplicate campaign | Set Manual Review and prevent approval routing. | Confirm whether to merge, close, or retain both requests. | Marketing director |
| Invalid field value | Leave the record unimported and write the validation error. | Correct the value and change Validated back to Yes. | Data reviewer |
| Partial completion | Retain returned IDs and set Automation Status to Error. | Resume from the failed action without repeating successful creation. | Revenue operations |
| Authentication expiry | Zap fails and generates an integration alert. | Reconnect the authorized account and replay affected runs. | System administrator |
| Mailchimp suppression | Mark the audience record Skipped and do not resubscribe. | Review only if the person independently supplies valid new permission. | Marketing operations |
| Unavailable approver | Escalate after the configured time limit. | Assign an authorized delegate. | Marketing director |
| Failed folder creation | Set campaign Automation Status to Error. | Correct Drive access and replay. The blank Folder ID permits creation. | Revenue operations |
| Failed file upload | Retain source attachment and mark Asset Upload Error. | Upload manually or replay after resolving the size or permission issue. | Asset owner |
| Invalid email address | Skip the subscriber action and log the connector response. | Correct HubSpot only when an authoritative address is available. | Contact owner |
| Notification failure | Campaign status remains unchanged and an alert is logged. | Use the Airtable queue as the authoritative task list and resend. | Marketing coordinator |
| Rate limit | Use queued processing and retry transient responses according to connector behavior. | Reduce batch rate and replay unresolved records. | Revenue operations |
| Timeout | Do not assume completion without a returned destination ID. | Search the destination before replaying to avoid duplication. | Revenue operations |
| Attribution conflict | Set the event to Manual Review and exclude it from revenue rollups. | Revenue operations confirms the primary campaign with sales. | Revenue operations |
| Dashboard update failure | Log the error without changing Airtable totals. | Run the daily reconciliation or update the report row. | Report owner |
Every external event needs an idempotency key. A retry must first search the destination using that key. This protects against duplicate events caused by webhook delivery, source edits, timeouts, user replay, or a successful destination action followed by a failed source update.
Zapier may retry some transient connector failures depending on the response and account features. The implementation must not rely solely on automatic retry. The daily reconciliation compares:
- Validated Google Sheets rows against Airtable destination IDs.
- Approved campaigns against Drive Folder IDs.
- Audience Sync records against Mailchimp result status.
- HubSpot Closed Won deals with confirmed attribution against Airtable revenue events.
- Airtable campaigns against Campaign_ROI sheet rows.
Open Sync Exceptions act as the dead-letter queue. Each exception includes the failed workflow, source ID, campaign, error, retry count, owner, and resolution notes. After correction, the operator replays the source event or runs the designated recovery workflow, verifies the returned ID, and marks the exception Resolved.
A Complete Example
The following walkthrough uses sample data for Valecrest Equipment Services. It is an implementation example, not a verified business result.
- The campaign manager submits a brief named Q3 Preventive Maintenance Webinar with a planned launch date of September 18, 2026, a planned budget of $12,500, and email, paid social, and webinar channels.
- Airtable creates record
recEXAMPLE0042and generates Campaign IDCMP-2026-0042. - The entered slug is
q3-preventive-maintenance. Slug Validation returns Valid. - The marketing director approves the brief. Because the budget exceeds $10,000, the campaign moves to Awaiting Budget Approval.
- The finance manager approves the budget. The Activity Log records the decision, user, and time.
- Zapier creates the Drive folder
CMP-2026-0042_Q3-Preventive-Maintenanceand stores its returned folder ID in Airtable. - The email channel record uses source
mailchimp, mediumemail, and destinationhttps://www.company-domain.example/webinar. - Airtable generates
https://www.company-domain.example/webinar?utm_source=mailchimp&utm_medium=email&utm_campaign=cmp-2026-0042-q3-preventive-maintenance. - A HubSpot contact with example ID
1048821becomes eligible and receivesCMP-2026-0042in the approved campaign-tag property. - Zapier confirms the Airtable campaign is Approved, finds the subscriber in Mailchimp, applies the tag, and writes an Audience Sync record. The idempotency key is
aud:1048821:CMP-2026-0042. - The contact submits a demo-request form containing the Campaign ID and UTM values. Zapier creates one Lead event with key
hs:1048821:CMP-2026-0042:lead. - The contact’s current lifecycle value is eligible to advance under the approved high-intent rule, so HubSpot moves it forward to the organization’s Lead stage. The automation does not assign MQL or SQL status.
- After the campaign, the coordinator imports a Mailchimp result row with external campaign ID
mc-example-8842. The sample validated metrics include 2,800 delivered messages and 148 clicks. - Paid-channel and vendor spend rows are imported through Google Sheets. One duplicate invoice-line reference is detected, so the existing Spend Entry is updated rather than duplicated.
- The validated sample actual spend totals $9,200. Airtable rolls up 42 unique lead events.
- A HubSpot deal with example ID
781245later moves to Closed Won with an amount of $18,000. Revenue operations confirmsCMP-2026-0042as the primary campaign. - Zapier creates or updates the revenue event using
hsdeal:781245:CMP-2026-0042:closedwon. - Airtable calculates sample ROI as
($18,000 - $9,200) ÷ $9,200 = 95.7%. - Zapier updates the Campaign_ROI sheet. The campaign enters Review Required after metrics are validated.
- The campaign owner writes the post-campaign assessment, the director approves it, and the record moves to Closed.
If the deal amount is later corrected, the existing deal event is updated. If attribution is removed or the deal is no longer Closed Won, the event is marked invalid or its value is corrected according to the reconciliation rule, preventing stale revenue from remaining in the campaign total.
Implementation Cost
All amounts below are representative planning assumptions, not vendor quotes or verified client costs. Software pricing, plan features, taxes, currency, usage, and implementation rates must be confirmed directly for the selected accounts.
| Cost item | Assumption | Estimated amount |
|---|---|---|
| Professional discovery, design, build, and deployment | 72 hours at $125 per hour | $9,000 |
| Internal requirements and data preparation | 16 hours at $45 per hour | $720 |
| User acceptance testing | 12 hours at $45 per hour | $540 |
| Training | 6 hours at $45 per hour | $270 |
| Internal documentation and handover | 4 hours at $45 per hour | $180 |
| Total representative economic implementation cost | 110 combined external and internal hours | $10,710 |
| Cost item | Assumption | Estimated amount |
|---|---|---|
| Airtable feature and editor allowance | Five operational editors and required controls | $125 |
| Zapier task and feature allowance | Multi-step workflows and approximately 800 monthly events | $100 |
| Existing HubSpot subscription | Already used by the business | $0 incremental |
| Existing Mailchimp subscription | Already used by the business | $0 incremental |
| Existing Google Workspace subscription | Already used by the business | $0 incremental |
| Operational maintenance labour | 4 hours at $45 per hour | $180 |
| Total recurring operating allowance | Software plus maintenance labour | $405 |
The $0 incremental entries do not mean those platforms are free. They indicate that the representative business already pays for them and that the implementation assumes no subscription change. The full cost should be included if a business is acquiring those tools specifically for this system.
| Cost item | Assumption | Estimated amount |
|---|---|---|
| AI workflow configuration and testing | 8 hours at $125 per hour | $1,000 one time |
| AI usage allowance | Six aggregate campaign summaries per month | $8 per month |
Estimated Time and Cost Savings
The estimate separates campaign administration from lead and outcome-event reconciliation.
| Assumption | Value |
|---|---|
| Campaigns per month | 6 |
| Current campaign handling time | 240 minutes per campaign |
| New campaign handling time | 75 minutes per campaign |
| Lead and outcome events per month | 800 |
| Current reconciliation time | 1.5 minutes per event |
| New routine spot-check time | 0.1 minute per event |
| Exception rate | 4 percent |
| Manual exception handling | 5 minutes per exception |
| Monthly maintenance | 4 hours |
| Loaded hourly labour cost | $45 |
| Recurring core software cost | $225 per month |
| One-time implementation cost | $10,710 |
Current monthly labour hours: Monthly volume × current minutes per record ÷ 60
Campaign administration: 6 × 240 ÷ 60 = 24 hours
Event reconciliation: 800 × 1.5 ÷ 60 = 20 hours
Total current monthly labour hours: 24 + 20 = 44 hours
New monthly labour hours: Monthly volume × new minutes per record ÷ 60, plus exception handling and maintenance
New campaign administration: 6 × 75 ÷ 60 = 7.5 hours
Routine event spot checks: 800 × 0.1 ÷ 60 = 1.33 hours
Exception handling: 800 × 4% × 5 ÷ 60 = 2.67 hours
Maintenance: 4 hours
Total new monthly labour hours: 7.5 + 1.33 + 2.67 + 4 = 15.5 hours
Monthly hours recovered: Current monthly labour hours minus new monthly labour hours
Monthly hours recovered: 44 – 15.5 = 28.5 hours
Estimated monthly labour value: Monthly hours recovered × loaded hourly labour cost
Estimated monthly labour value: 28.5 × $45 = $1,282.50
Net estimated monthly value: Monthly labour value minus recurring tool costs
Net estimated monthly value: $1,282.50 – $225 = $1,057.50
Estimated payback period: One-time implementation cost ÷ net estimated monthly value
Estimated payback period: $10,710 ÷ $1,057.50 = approximately 10.1 months
The maintenance labour is included in the new monthly labour calculation, so it is not subtracted again as a separate cash cost in the net-value formula.
Recovered time does not automatically reduce payroll. It may instead provide additional campaign capacity, quicker launches, reduced overtime, fewer administrative tasks, more time for analysis, and less dependency on one employee.
Non-financial benefits include:
- Clearer campaign ownership.
- Consistent UTM values and campaign identifiers.
- Fewer email approval follow-ups.
- Better visibility into incomplete work.
- More consistent audience synchronization.
- Improved consent and suppression controls.
- Stronger attribution evidence.
- Faster management reporting.
- Traceable source IDs and import history.
- A defined process for recovering failed records.
Readers should replace campaign volume, event volume, handling time, exception rate, loaded labour cost, subscription cost, implementation labour, and maintenance requirements with their own measured figures.
Adding AI to the Automation
AI should be added only after campaign identifiers, validation, attribution, spend imports, and reporting are reliable. It should not be used to compensate for missing required fields or inconsistent source data.
Useful AI applications in this process include:
- Drafting a post-campaign performance summary from validated aggregate metrics.
- Summarizing approved campaign briefs for internal handoff.
- Classifying unstructured campaign requests into suggested campaign types.
- Identifying likely missing context in long-form briefs.
- Comparing approved messaging with final asset text for human review.
- Supporting semantic search across approved post-campaign reviews.
Required fields, UTM construction, budget thresholds, exact duplicate matching, consent rules, ROI formulas, campaign status, and approval routing should remain deterministic. Normal automation provides the central records, ownership, synchronization, rollups, and reporting. AI adds value only when it works with unstructured language, such as preparing a draft narrative.
The Recommended AI Enhancement
The recommended enhancement generates a draft performance summary when a campaign enters Review Required and all required metrics are validated.
- Trigger: Airtable campaign status becomes Review Required, Metrics Validated equals Yes, and AI Summary Status is blank.
- AI input: Campaign objective, approved audience description, dates, channels, budget, spend, leads, opportunities, attributed revenue, ROI, email metrics, data-quality notes, and prior approved benchmarks when available.
- System instruction: Use only supplied values, identify missing data, avoid unsupported causal claims, and return structured JSON.
- Expected output: A concise headline, summary, performance observations, caveats, follow-up questions, and missing-field list.
- Validation: Confirm valid JSON, exact Campaign ID, permitted keys, expected arrays, and maximum field lengths.
- Record update: Write the output to AI Draft fields, not the approved Post-Campaign Summary field.
- Human review: The campaign owner edits the draft and the marketing director approves the final summary.
- Low-confidence handling: Missing or conflicting data changes AI Summary Status to Manual Review.
- Prohibited data: Contact names, email addresses, individual-level behavior, customer notes, contract terms, and sensitive deal details.
- Logging: Record generation time, provider, model identifier when exposed, input campaign version, validation result, and reviewer.
- Cost monitoring: Track monthly request count and provider-reported usage where available.
- Failure behavior: Leave the approved summary blank and assign the campaign owner a manual drafting task.
Reusable system instruction
You are a marketing performance analyst preparing a draft campaign review.
Use only the validated campaign data supplied by the user. Do not invent metrics, causes, benchmarks, customer reactions, or business outcomes. Do not claim that correlation proves causation. If a required value is missing or conflicting, identify it explicitly.
Treat attributed revenue as an accounting and reporting convention, not proof that the campaign caused the sale. Do not make budget, personnel, customer, or legal decisions.
Return valid JSON matching the supplied schema. Do not include text outside the JSON.
Reusable user prompt
Prepare a draft performance summary for the campaign data below.
Requirements:
1. Keep the headline under 120 characters.
2. Keep the summary under 700 characters.
3. Provide no more than five performance points.
4. Provide no more than five caveats.
5. Provide no more than four recommended follow-up questions.
6. Use only supplied numbers.
7. Set requires_human_review to true.
8. Set data_quality to complete, incomplete, or conflict.
9. Do not expose or infer personal information.
Validated campaign data:
{{CAMPAIGN_JSON}}
Return JSON using the required schema.
Required structured output
{
"campaign_id": "CMP-2026-0042",
"data_quality": "complete",
"headline": "Webinar campaign generated qualified interest within budget",
"summary": "The campaign recorded validated spend, lead, and attributed revenue data. Results should be interpreted under the confirmed primary-campaign attribution rule.",
"performance_points": [
"Actual spend remained below the approved budget.",
"The campaign recorded 42 validated lead events."
],
"caveats": [
"Attributed revenue does not establish that the campaign caused the sale."
],
"recommended_follow_ups": [
"Review lead-to-opportunity conversion with sales."
],
"missing_fields": [],
"requires_human_review": true
}
Zapier configuration
- Trigger on the Airtable view containing AI-ready campaigns.
- Find the full Campaign record and linked validated rollups.
- Construct a JSON input containing only approved aggregate fields.
- Send the system instruction and user prompt to the organization’s approved AI action or provider connection.
- Request structured output when the selected action supports it.
- Parse the returned JSON.
- Confirm that campaign_id exactly matches the Airtable Campaign ID.
- Confirm that requires_human_review is true and that all expected keys exist.
- Reject output containing unapproved fields or excessive length.
- Write valid output to AI Draft Headline, AI Draft Summary, AI Caveats, and AI Follow-Ups.
- Set AI Summary Status to Ready for Human Review.
- For malformed output, create a Sync Exception and set AI Summary Status to Manual Draft Required.
The AI action requires an approved provider connection and any required provider credentials. Credentials remain in the automation platform’s secure connection store. Test the workflow with synthetic aggregate campaign data before enabling it for real campaigns.
Benefits of the AI Enhancement
The core automation already creates consistent IDs, validated data, approvals, synchronization, calculations, dashboards, and audit records. The AI enhancement does not create those benefits.
AI-specific benefits are narrower:
- Less time spent converting metrics into a first narrative draft.
- More consistent inclusion of data-quality caveats.
- Faster identification of missing context for the review meeting.
- A standard summary structure across campaigns.
- Faster preparation of follow-up questions for marketing and sales.
- Improved handling of campaign objectives and review notes that are not naturally represented by formulas.
The draft still requires human review because source data can be technically valid but incomplete, attribution can be disputed, and the business context may not be visible in aggregate metrics.
What Remains Rule-Based or Human-Controlled
| Decision | Control type | Reason |
|---|---|---|
| Campaign ID and UTM values | Rule based | Exact identifiers should be deterministic. |
| Budget threshold | Rule based | The company’s policy can be expressed as a precise amount. |
| Budget approval | Human controlled | It authorizes company spending. |
| Audience selection | Human controlled with rule-based eligibility | Strategic selection and consent interpretation require accountable review. |
| Subscription suppression | Rule based | An unsubscribe or cleaned status must not be overridden by a model. |
| Lifecycle qualification | Rule based and human controlled | Only approved events move early stages; later qualification belongs to sales. |
| Primary revenue attribution | Human controlled | Attribution can affect reporting and management decisions. |
| ROI calculation | Rule based | The formula uses validated numeric fields. |
| Final campaign conclusion | Human controlled | Management context, causality, and future investment require judgment. |
| High-value customer communication | Human controlled | Incorrect or inappropriate language can create customer and legal risk. |
Estimating the Additional Value of AI
The estimate assumes six post-campaign reviews per month.
| Measure | Core automation without AI | Automation with AI |
|---|---|---|
| Summary preparation | 30 minutes per campaign | 10 minutes of normal review per campaign |
| Expected correction rate | Not applicable | 25 percent require 5 additional minutes |
| Expected AI failure rate | Not applicable | 3 percent require a 20-minute manual fallback |
| Monthly AI usage cost | $0 | $8 planning allowance |
Without AI: 6 × 30 minutes = 180 minutes, or 3 hours.
Normal AI review: 6 × 10 minutes = 60 minutes.
Expected correction time: 6 × 25% × 5 minutes = 7.5 minutes.
Expected failure fallback: 6 × 3% × 20 minutes = 3.6 minutes.
Total with AI: 60 + 7.5 + 3.6 = 71.1 minutes, or approximately 1.19 hours.
Additional monthly capacity: 3 – 1.19 = approximately 1.81 hours.
Additional labour value: 1.81 × $45 = approximately $81.45.
Net additional monthly value: $81.45 – $8 = approximately $73.45.
This value should not be added to the core estimate if summary-writing time is already included in the measured campaign-handling baseline. AI does not eliminate review, corrections, or service failures.
Testing Checklist
Use synthetic sample data and test accounts before processing real contacts, deals, campaign assets, or financial information.
| Test | Expected result | Evidence |
|---|---|---|
| Normal submission | Campaign ID is created and status becomes Draft or Awaiting Approval. | Airtable record and Activity Log. |
| Missing required field | Readiness remains Blocked and owner is notified. | Validation field and notification record. |
| Invalid slug or date | Record cannot advance. | Validation error. |
| Duplicate submission | Record enters Manual Review. | Duplicate key and matching records. |
| Duplicate event | Existing destination record is updated, not duplicated. | One idempotency-key match. |
| Failed authentication | Workflow stops and error is logged. | Zapier run and Sync Exception. |
| Expired credential | Alert is sent and no unverified completion is recorded. | Connection error and alert. |
| Failed API request | Transient failure is retried where supported or queued for recovery. | Run history and retry count. |
| Unavailable approver | Reminder and escalation are sent. | Notification timestamps. |
| Approval rejection | Status becomes Rejected and reason is required. | Approval and Activity Log. |
| Return for information | Ownership returns to the campaign owner. | Status and owner. |
| Reassignment | New owner receives the task and prior owner remains in history. | Owner field and Activity Log. |
| Overdue item | Record appears in the overdue view. | Filtered Airtable view. |
| Reminder | Reminder is sent once per configured interval. | Reminder timestamp. |
| Escalation | Escalation goes to the correct role. | Notification log. |
| Failed file upload | Source attachment remains and Asset Status becomes Upload Error. | Asset record and exception. |
| Failed folder creation | Campaign becomes Automation Error without a false folder ID. | Campaign and Sync Exception. |
| Failed notification | Workflow status remains authoritative in Airtable. | Queue record and error alert. |
| Unauthorized user | User cannot view or modify restricted fields or folders. | Permission test. |
| Suppressed Mailchimp contact | Contact is not resubscribed. | Audience Sync status. |
| Unknown Campaign ID | Event is excluded from campaign totals. | Manual-review exception. |
| Correct lifecycle rule | Eligible early stage moves forward without regression. | HubSpot property history. |
| Closed Won without attribution | No revenue event is included. | Revenue operations queue. |
| Corrected deal amount | Existing revenue event is updated. | One deal idempotency key. |
| Malformed AI output | No AI draft is published and a failure is logged. | AI Sync Exception. |
| Inaccurate AI statement | Human reviewer rejects or edits the draft. | Review notes and approved summary. |
| AI service failure | Campaign receives a manual drafting task. | AI Summary Status. |
| Successful completion | Campaign reaches Closed with required approvals and review. | Status history. |
| Correct reporting | Airtable and Google Sheets totals reconcile. | Comparison export. |
| Correct audit record | Approver, time, source IDs, and automation run are retained. | Activity Log. |
| Correct retry behavior | Replay completes without duplicate folder, event, subscriber, or report row. | Destination IDs and idempotency keys. |
Ongoing Maintenance
Revenue operations is the primary system owner. The marketing coordinator is the backup owner for campaign operations and first-line user support.
| Frequency | Task | Owner |
|---|---|---|
| Daily | Review failed Zap runs and high-priority Sync Exceptions. | Revenue operations |
| Daily | Check blocked launches and overdue approvals. | Marketing coordinator |
| Weekly | Reconcile validated staging rows, destination IDs, and dashboard updates. | Revenue operations |
| Weekly | Review audience synchronization errors and suppression handling. | Marketing operations |
| Monthly | Archive closed-campaign working views and inspect record growth. | Airtable administrator |
| Monthly | Review automation task consumption and software costs. | System owner |
| Monthly | Sample AI drafts against validated data and reviewer corrections. | Marketing director |
| Quarterly | Review Airtable, HubSpot, Mailchimp, Zapier, and Google permissions. | System administrator |
| Quarterly | Test credentials, integration paths, retries, and recovery procedures. | Revenue operations |
| Quarterly | Review UTM source and medium lists. | Marketing director |
| Quarterly | Confirm backup exports and test a sample restoration. | System administrator |
| When staff change | Remove former users, transfer ownership, and rotate affected credentials. | IT or system administrator |
| When fields change | Update mappings, formulas, documentation, and regression tests. | Revenue operations |
| Annually | Review retention, consent, privacy, and AI-service controls. | Business, privacy, and legal owners |
Every production change should record the date, reason, affected tables or Zaps, tester, and rollback procedure. Field renaming should be treated as an integration change because mapped actions may depend on the original field.
When to Move to Dedicated Software
The Airtable-based implementation should not be replaced solely because the company grows. It should be reviewed when operational risk or complexity exceeds what the team can control reliably.
Potential upgrade indicators include:
- Campaign and event volume approaches the practical limits of the selected accounts.
- Audience synchronization requires near-real-time, high-volume processing.
- Multiple brands, business units, or countries need isolated permissions and consent rules.
- Campaign attribution requires multi-touch models across many channels.
- Spreadsheet reporting no longer performs adequately.
- Formal audit requirements demand immutable logs and stronger transaction controls.
- Exception rates or failed-run recovery consume excessive staff time.
- Workflow changes require frequent specialist maintenance.
- Customer-facing campaign portals or approval portals are required.
- Mobile or offline campaign operations become important.
- Assets require formal digital rights, localization, or complex version management.
- Security risk increases because more sensitive contact or financial data is being copied.
- The organization requires contractual vendor support and service commitments.
- Advanced forecasting, experimentation, or cross-channel attribution becomes a core requirement.
Relevant next-step categories may include marketing resource management platforms, customer data platforms, dedicated attribution systems, digital asset management software, a cloud data warehouse with BI reporting, or a custom campaign operations application. The correct choice depends on the limitation being addressed.
Implementation Checklist
- Confirm campaign volume, event volume, users, and business requirements.
- Document which system is authoritative for campaigns, contacts, subscriptions, deals, files, and reports.
- Confirm Airtable, HubSpot, Mailchimp, Zapier, and Google Workspace account features.
- Create test environments, test users, and test data.
- Assign platform administrators, operational owners, approvers, and backup owners.
- Configure least-privilege permissions and controlled integration connections.
- Build the Airtable tables, links, controlled fields, formulas, and views.
- Create the internal campaign intake form.
- Implement Campaign ID and duplicate-detection rules.
- Configure campaign statuses and ownership.
- Create HubSpot contact and deal properties.
- Configure the Mailchimp audience, merge fields, tags, and suppression controls.
- Create the Google Drive root folder and campaign-folder convention.
- Create Results_Staging, Campaign_ROI, Lists, and Exceptions sheets.
- Document every source-to-destination field mapping.
- Build campaign validation and provisioning automation.
- Build audience synchronization and unsubscribe handling.
- Build lead, lifecycle, opportunity, and revenue event workflows.
- Build validated spend and performance imports.
- Build brief and budget approval gates.
- Configure reminders, escalations, reassignment, and delegation.
- Configure notifications and role mailbox ownership.
- Build operational views and executive reporting.
- Create idempotency keys and duplicate-event controls.
- Create the Sync Exceptions queue and manual-recovery process.
- Configure logs, retries, reconciliation, and failed-run alerts.
- Apply file permissions, retention, backup, privacy, and consent controls.
- Test normal, duplicate, invalid, rejected, failed, replayed, and completed records.
- Complete user acceptance testing and phased deployment.
- Validate implementation cost and recurring software assumptions.
- Replace time-saving assumptions with measured internal data.
- Add the AI summary workflow only after core data is reliable.
- Keep AI output in draft status until human approval.
- Assign ongoing maintenance, permission review, and credential-rotation owners.
- Define measurable criteria for moving to dedicated software.
Get a FREE
Proof of Concept
& Consultation
No Cost, No Commitment!


