The difference between a workflow you run and a workflow that runs is trigger-based automation. GA-4 covers the architecture of always-on, event-driven GTM systems.
GA-4 · GTM Architect · 150 XP · ~22 min
Every workflow you’ve built so far has been batch-based: you run it manually when you have a list to process. That’s fine for getting started. But the highest-performing GTM teams run on triggers: something happens → workflow fires → result delivered. No manual intervention.This module covers the architecture of trigger-based automation.
For time-sensitive signals (job changes, funding events, pricing page visits), batch processing is a competitive disadvantage — your competitors acting on the same signal with a trigger will get there first.
Evaluate whether this event should trigger the enrichment workflow:Event: {{event_type}} at {{company_name}}Event date: {{event_date}}Checks:1. ICP fit: is {{company_name}} in our defined ICP? (Industry: {{company_industry}}, Size: {{company_size}})2. Recent duplicate: have we triggered for {{company_name}} in the last 30 days? Last trigger date: {{last_trigger_date}}3. Already in sequence: is the primary contact already enrolled? CRM status: {{crm_sequence_status}}4. Blacklist: is {{company_name}} on the do-not-contact list? {{blacklist_status}}Result: proceed / skip_duplicate / skip_in_sequence / skip_blacklist / skip_no_fitReturn as JSON: {"decision": "proceed or skip_[reason]", "reason": "brief explanation"}
Deduplication window:
Don’t trigger multiple times for the same company within 30 days. This prevents spamming a company that has multiple overlapping signals.
Design your trigger workflows to run continuously with minimal maintenance:Structure of an always-on workflow:
ALWAYS-ON: Series B Funding TriggerTrigger: New Series B announcement from Crunchbase webhookCondition: ICP check → no duplicate → not in sequenceOn trigger:1. Enrich company (Clearbit + LinkedIn)2. Find VP Sales / CRO / Head of SDR contact (waterfall enrichment)3. Score: fit × timing composite4. If score > 65: → Generate personalized funding-triggered email → QA check → If QA passes: add to "funding_trigger" sequence in sequencer → Log activity in CRM → Send Slack notification: "Tier 1 funding trigger: [Company]"5. If score 40-65: → Add to review queue grid → Send Slack notification: "Tier 2 trigger to review: [Company]"6. If score < 40: → Log signal in CRM, no outreachRuns: continuously (webhook-triggered)Review: weekly scan of Tier 2 queueMaintenance: monthly calibration of scoring thresholds
Document every always-on workflow with this structure. It makes handoffs, debugging, and optimization much easier.
Auto-retry once; if retry fails, add to review queue
CRM sync failure
API call to CRM returns error
Retry 3x with exponential backoff; alert if all fail
Duplicate trigger
Same company triggers twice in 24 hours
Dedup check catches it; log second trigger, don’t act
Enrichment API down
Provider returns 503
Queue for retry in 1 hour; max 3 retries
Quick Check: What’s the core difference between batch and trigger architecture? What are the three components of a trigger-based workflow? Name three trigger failure types and how to handle them.