{
  "name": "Send candidate outcome emails and SMS and notify referrers with Airtable",
  "nodes": [
    {
      "id": "97230906-69dc-4afc-bfee-e9807082da69",
      "name": "Tag eventType = info",
      "type": "n8n-nodes-base.set",
      "position": [
        864,
        1008
      ]
    },
    {
      "id": "bc36d017-1ce4-4c4b-b209-421555cdbe56",
      "name": "Tag eventType = course",
      "type": "n8n-nodes-base.set",
      "position": [
        864,
        1200
      ]
    },
    {
      "id": "c93fa83a-4ffb-4971-8d13-d3a79b5762aa",
      "name": "Merge — Any Trigger",
      "type": "n8n-nodes-base.merge",
      "position": [
        1088,
        1104
      ]
    },
    {
      "id": "54ade592-b443-4be0-b709-56b328668725",
      "name": "Code — Normalize + Decide Action",
      "type": "n8n-nodes-base.code",
      "position": [
        1312,
        1104
      ]
    },
    {
      "id": "f81f1c42-5553-42d8-88cb-ee1f6571ff26",
      "name": "Switch — Route Action",
      "type": "n8n-nodes-base.switch",
      "position": [
        1536,
        1088
      ]
    },
    {
      "id": "bcc5ebd1-56db-47a0-b149-91625024f2b0",
      "name": "WF6 Complete",
      "type": "n8n-nodes-base.set",
      "position": [
        2880,
        1104
      ]
    },
    {
      "id": "ed248688-095b-4cf9-af96-3934175c7135",
      "name": "Airtable Trigger — Info Outcome Updated At1",
      "type": "n8n-nodes-base.airtableTrigger",
      "position": [
        640,
        1008
      ]
    },
    {
      "id": "76b54aad-41af-4ed2-a536-1b04e4b7c555",
      "name": "Course Outcome Updated At",
      "type": "n8n-nodes-base.airtableTrigger",
      "position": [
        640,
        1200
      ]
    },
    {
      "id": "d042e3ab-1a45-4bbd-a45b-67fc387816e9",
      "name": "Attended email",
      "type": "n8n-nodes-base.sendInBlue",
      "position": [
        1760,
        912
      ]
    },
    {
      "id": "91c4425d-91a0-4210-9e71-84fe60dd63f0",
      "name": "Course outcome email",
      "type": "n8n-nodes-base.sendInBlue",
      "position": [
        1760,
        1488
      ]
    },
    {
      "id": "639245b4-65ca-48b4-964d-1240219619b6",
      "name": "Airtable — Commit Post-Info Attended Sent",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1984,
        816
      ]
    },
    {
      "id": "a52644f3-0c4e-4e3b-ab6e-f5013b10091c",
      "name": "Airtable — Commit Post-Info NoShow Sent",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1984,
        1200
      ]
    },
    {
      "id": "fb1e4931-84a9-4f6a-84a0-695d8eb8b413",
      "name": "Brevo Email — Referrer Course Outcome1",
      "type": "n8n-nodes-base.sendInBlue",
      "position": [
        2432,
        1488
      ]
    },
    {
      "id": "f4d5957a-caf1-419b-9ac5-aa98d885020b",
      "name": "Airtable — Commit Course Outcome Message Sent1",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1984,
        1488
      ]
    },
    {
      "id": "703c43f4-22b3-4bfb-9e7a-ff33cabfe9f8",
      "name": "Referrer notified course start",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2656,
        1488
      ]
    },
    {
      "id": "e26e1e6d-39e4-4df8-82c6-ecf5ba44eaa9",
      "name": "Airtable — Commit Referrer Notified (Info) [No-Show branch]",
      "type": "n8n-nodes-base.airtable",
      "position": [
        2432,
        1008
      ]
    },
    {
      "id": "93c839f4-1699-48c4-9bc5-6b15b22bd876",
      "name": "Brevo Email — Referrer Info Outcome",
      "type": "n8n-nodes-base.sendInBlue",
      "position": [
        2208,
        1008
      ]
    },
    {
      "id": "65d24c37-49ff-4f59-90af-21b854fbd081",
      "name": "Attended sms1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1760,
        720
      ]
    },
    {
      "id": "feeda266-fa94-4f81-9d6d-509cd33dab15",
      "name": "If1",
      "type": "n8n-nodes-base.if",
      "position": [
        2208,
        1488
      ]
    },
    {
      "id": "6a3bcccc-bbe3-4d51-b586-1ec25bb5e3dd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        176
      ],
      "parameters": {
        "width": 368,
        "height": 864,
        "content": "## Candidate outcomes and referrer notifications\n\n## How it works\n\nThis workflow automates post-event and post-course communications for candidates, while also notifying referring partners at the corr"
      }
    },
    {
      "id": "3882dd9b-d6fc-4f5a-a333-498d7556f520",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        800
      ],
      "parameters": {
        "width": null,
        "height": 512,
        "content": "## Trigger & Event Detection\nWatches Airtable-managed timestamp fields for outcome changes.\nAirtable controls when the workflow runs."
      }
    },
    {
      "id": "45e6a764-3d8e-4958-a7f2-452fd62790a9",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1248,
        864
      ],
      "parameters": {
        "width": null,
        "height": 352,
        "content": "## Normalize & Decide Action\nCentral logic layer that normalizes fields and outputs one action path.\nPrevents fragile IF chains."
      }
    },
    {
      "id": "7f891657-972e-4676-8171-1113593a6f16",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1680,
        448
      ],
      "parameters": {
        "width": null,
        "height": 352,
        "content": "## Candidate Messaging — Info Event Outcomes\nHandles post-info-event emails and SMS for attended and no-show outcomes.\nEach message is sent once only."
      }
    },
    {
      "id": "61f43fb4-03fb-4ffc-b25c-d42225e2f75d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1456,
        1312
      ],
      "parameters": {
        "width": null,
        "height": 336,
        "content": "## Candidate Messaging — Course Outcomes\n\nSends course outcome messages (started, withdrawn, completed).\nContent is driven by normalized outcome keys."
      }
    },
    {
      "id": "6e8e5889-947d-4486-95ac-dd5d8697178d",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2160,
        720
      ],
      "parameters": {
        "width": null,
        "height": 352,
        "content": "## Referrer Notifications\nNotifies referring partners when candidates progress or exit the course.\nRuns independently from candidate messaging."
      }
    },
    {
      "id": "d5d5d71d-455f-43d4-b819-3da1cc58d5fe",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2528,
        1168
      ],
      "parameters": {
        "width": null,
        "height": 352,
        "content": "## Commit Flags & Complete\nWrites “sent” flags back to Airtable and ends the workflow.\nGuarantees idempotency across retries."
      }
    },
    {
      "id": "e446da07-26c9-41dc-af94-aa70a5018bf7",
      "name": "Did Not Attended sms",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1760,
        1104
      ]
    },
    {
      "id": "80e6e60d-846b-496f-85a3-6dcf882b2ad2",
      "name": "Did Not Attended email",
      "type": "n8n-nodes-base.sendInBlue",
      "position": [
        1760,
        1296
      ]
    }
  ],
  "connections": {
    "If1": {
      "main": [
        [
          {
            "node": "Brevo Email — Referrer Course Outcome1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Attended sms1": {
      "main": [
        [
          {
            "node": "Airtable — Commit Post-Info Attended Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Attended email": {
      "main": [
        [
          {
            "node": "Airtable — Commit Post-Info Attended Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Course outcome email": {
      "main": [
        [
          {
            "node": "Airtable — Commit Course Outcome Message Sent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Did Not Attended sms": {
      "main": [
        [
          {
            "node": "Airtable — Commit Post-Info NoShow Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tag eventType = info": {
      "main": [
        [
          {
            "node": "Merge — Any Trigger",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge — Any Trigger": {
      "main": [
        [
          {
            "node": "Code — Normalize + Decide Action",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Did Not Attended email": {
      "main": [
        [
          {
            "node": "Airtable — Commit Post-Info NoShow Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Tag eventType = course": {
      "main": [
        [
          {
            "node": "Merge — Any Trigger",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch — Route Action": {
      "main": [
        [
          {
            "node": "Attended email",
            "type": "main",
            "index": 0
          },
          {
            "node": "Attended sms1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Did Not Attended sms",
            "type": "main",
            "index": 0
          },
          {
            "node": "Did Not Attended email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Course outcome email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Course Outcome Updated At": {
      "main": [
        [
          {
            "node": "Tag eventType = course",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Referrer notified course start": {
      "main": [
        [
          {
            "node": "WF6 Complete",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code — Normalize + Decide Action": {
      "main": [
        [
          {
            "node": "Switch — Route Action",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Brevo Email — Referrer Info Outcome": {
      "main": [
        [
          {
            "node": "Airtable — Commit Referrer Notified (Info) [No-Show branch]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Brevo Email — Referrer Course Outcome1": {
      "main": [
        [
          {
            "node": "Referrer notified course start",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable — Commit Post-Info NoShow Sent": {
      "main": [
        [
          {
            "node": "Brevo Email — Referrer Info Outcome",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable — Commit Post-Info Attended Sent": {
      "main": [
        [
          {
            "node": "Brevo Email — Referrer Info Outcome",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable Trigger — Info Outcome Updated At1": {
      "main": [
        [
          {
            "node": "Tag eventType = info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable — Commit Course Outcome Message Sent1": {
      "main": [
        [
          {
            "node": "If1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable — Commit Referrer Notified (Info) [No-Show branch]": {
      "main": [
        [
          {
            "node": "WF6 Complete",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}