Mohamed Elghannam

Section 02 of 10

Automations catalogue

Tools behind this sectionCRM and automation tools

Where a lead is stored, routed and followed up. The CRM holds the record; n8n does the work between systems; Zapier and Apps Script fill the gaps.

  • GoHighLevel

    What it does
    CRM with contacts, opportunities, pipelines, workflows and WhatsApp.
    How I use it
    Single home for every lead at Salsabeel. n8n writes contacts and opportunities into it; stage changes flow back out as conversion events.
    For a developer
    One pipeline the sales manager can trust, with every enquiry assigned and visible.
  • Bitrix24

    What it does
    CRM and telephony suite.
    How I use it
    Brokerage CRM at Ahyan and Imkan: lead scoring, routing and AI callbacks on new leads.
    For a developer
    Fast first contact on portal and paid leads without extra headcount.
  • HubSpot

    What it does
    CRM with email and marketing automation.
    How I use it
    Nurture and lifecycle workflows at Ava and Imkan, fed by paid-social and portal leads.
    For a developer
    Leads that are not ready today keep receiving relevant follow-up.
  • n8n

    What it does
    Self-hosted workflow automation with code steps, data tables and agents.
    How I use it
    About 45 workflows: intake, router, server-side events, budget pacing, reports, coach. Every change is versioned with a rollback ID.
    For a developer
    Custom lead operations without per-task fees, and the data stays on the company’s own instance.
  • Zapier

    What it does
    Hosted no-code automation.
    How I use it
    Bridges for TikTok and Snapchat lead forms into the CRM and stage-change events back to Meta, being moved into n8n step by step.
    For a developer
    A channel goes live in hours, then moves to cheaper infrastructure once it proves itself.
  • Google Apps Script

    What it does
    Scripting for Google Sheets and Workspace.
    How I use it
    Lead-scoring workbook synced across seven sheets, an Arabic summary for the sales team, and a bridge into n8n.
    For a developer
    Management reporting in a format sales already uses, with no new software to buy.

How they work together

Leads enter from forms, n8n validates and routes them into the CRM, and stage changes go back out.CaptureAutomateSellAd forms and websiteMeta, TikTok, Snapchat, siteZapierTikTok and Snap bridgesn8nvalidate, route, scoreApps Script and Sheetsscoring, sales summaryGoHighLevelcontact, opportunity, repStage changesback to ads as events

Leads enter from forms, n8n validates and routes them into the CRM, and stage changes go back out. Silent 10-second loop. Highlights follow the order the work actually happens.

02Automations catalogue

Around 45 n8n workflows and 50 data tables run on a self-hosted instance. The ones below are the backbone. Each has a rollback version recorded before any change, and none sends a message to a customer except the Instagram reply, which was an explicit decision.

Lead Router

Live
Purpose
One router for every paid channel: writes attribution and consent fields, sets the project, opens the opportunity in New, round-robins to active reps, rotates the WhatsApp line weekly, tags A/B form variants and non-buyers.
Trigger
CRM webhook on contact created / form submitted
Data
router_log, intake_config
Guardrails
Duplicate block, excluded reps, test contacts skipped, no customer messaging
Lead Router: stage mapCapture: Ad lead created (Meta, TikTok, Snapchat, WhatsApp ads); Short wait for the form answers. Process: Duplicate check (24 h); Read contact, opportunities, first messages; Decide: website, WhatsApp line or round-robin. CRM: Write attribution, consent and lead tags; Set owner, open or assign the opportunity; Advance the round-robin pointer. Notify: WhatsApp alert to the rep; Email fallback if WhatsApp fails; Log every result; failures alert the manager01 · Capture02 · Process03 · CRM04 · NotifyAd lead created (Meta,TikTok, Snapchat,WhatsApp ads)Short wait for the formanswersDuplicate check (24 h)Read contact,opportunities, firstmessagesDecide: website,WhatsApp line orround-robinWrite attribution,consent and lead tagsSet owner, open orassign the opportunityAdvance theround-robin pointerWhatsApp alert to therepEmail fallback ifWhatsApp failsLog every result;failures alert themanagerLead Router: stage mapCapture: Ad lead created (Meta, TikTok, Snapchat, WhatsApp ads); Short wait for the form answers. Process: Duplicate check (24 h); Read contact, opportunities, first messages; Decide: website, WhatsApp line or round-robin. CRM: Write attribution, consent and lead tags; Set owner, open or assign the opportunity; Advance the round-robin pointer. Notify: WhatsApp alert to the rep; Email fallback if WhatsApp fails; Log every result; failures alert the manager01 · Capture02 · Process03 · CRM04 · NotifyAd lead created (Meta, TikTok,Snapchat, WhatsApp ads)Short wait for the form answersDuplicate check (24 h)Read contact, opportunities,first messagesDecide: website, WhatsApp lineor round-robinWrite attribution, consent andlead tagsSet owner, open or assign theopportunityAdvance the round-robin pointerWhatsApp alert to the repEmail fallback if WhatsAppfailsLog every result; failures alertthe manager
Stage map from the live workflow Every paid lead gets attribution, an owner, an opportunity and a WhatsApp alert to the rep, with no message to the customer.
Stages as text
  1. Capture: Ad lead created (Meta, TikTok, Snapchat, WhatsApp ads) · Short wait for the form answers
  2. Process: Duplicate check (24 h) · Read contact, opportunities, first messages · Decide: website, WhatsApp line or round-robin
  3. CRM: Write attribution, consent and lead tags · Set owner, open or assign the opportunity · Advance the round-robin pointer
  4. Notify: WhatsApp alert to the rep · Email fallback if WhatsApp fails · Log every result; failures alert the manager

Website Lead Intake

Live
Purpose
Receives the Worker payload, normalises fields, labels organic vs campaign source from UTMs, applies first-touch attribution (365-day window) and fires the server-side Lead event asynchronously.
Trigger
Worker webhook (header secret)
Data
lead_capi_keys, intake_config
Guardrails
Turnstile and honeypot upstream, rate limit, dedupe, header auth
Website Lead Intake: stage mapCapture: Website form, through the site’s Worker. Process: Validate phone, email and project; Find an existing contact; Pick the rep by round-robin. CRM: New contact, or re-inquiry tag and note; Open an opportunity if none is open. Notify: Confirm to the website; WhatsApp alert to the rep (email fallback); Server-side Lead event and lead signal (async)01 · Capture02 · Process03 · CRM04 · NotifyWebsite form, throughthe site’s WorkerValidate phone, emailand projectFind an existingcontactPick the rep byround-robinNew contact, orre-inquiry tag and noteOpen an opportunity ifnone is openConfirm to the websiteWhatsApp alert to therep (email fallback)Server-side Lead eventand lead signal (async)Website Lead Intake: stage mapCapture: Website form, through the site’s Worker. Process: Validate phone, email and project; Find an existing contact; Pick the rep by round-robin. CRM: New contact, or re-inquiry tag and note; Open an opportunity if none is open. Notify: Confirm to the website; WhatsApp alert to the rep (email fallback); Server-side Lead event and lead signal (async)01 · Capture02 · Process03 · CRM04 · NotifyWebsite form, through the site’sWorkerValidate phone, email andprojectFind an existing contactPick the rep by round-robinNew contact, or re-inquiry tagand noteOpen an opportunity if none isopenConfirm to the websiteWhatsApp alert to the rep (emailfallback)Server-side Lead event and leadsignal (async)
Stage map from the live workflow A website form becomes a CRM contact with an owner and an open opportunity, and the server-side Lead event fires in the background.
Stages as text
  1. Capture: Website form, through the site’s Worker
  2. Process: Validate phone, email and project · Find an existing contact · Pick the rep by round-robin
  3. CRM: New contact, or re-inquiry tag and note · Open an opportunity if none is open
  4. Notify: Confirm to the website · WhatsApp alert to the rep (email fallback) · Server-side Lead event and lead signal (async)

CAPI funnel

Live
Purpose
Server-side PageView, ViewContent and Lead to Meta, TikTok, Snapchat and GA4 with the pixel’s event_id; stage changes become CRM conversion events; TikTok lead IDs synced every 15 minutes.
Trigger
Beacon webhook + schedule every 10 min
Data
capi_event_log, lead_capi_keys, fact_lead
Guardrails
Hashed identifiers only, 12-month purge, event-name validation (fixed a dataset that had names mapped as events)
CAPI funnel, browse events: stage mapCapture: Page view sent by the website. Process: Build events with the pixel’s event_id; Route by platform; Pass the visit to the Signal Thermometer. Ad platforms: Meta: PageView and ViewContent; TikTok: ViewContent; Snapchat: page view and view content. Log: Send failed?; Log the failure only01 · Capture02 · Process03 · Ad platforms04 · LogPage view sent by thewebsiteBuild events with thepixel’s event_idRoute by platformPass the visit to theSignal ThermometerMeta: PageView andViewContentTikTok: ViewContentSnapchat: page view andview contentSend failed?Log the failure onlyCAPI funnel, browse events: stage mapCapture: Page view sent by the website. Process: Build events with the pixel’s event_id; Route by platform; Pass the visit to the Signal Thermometer. Ad platforms: Meta: PageView and ViewContent; TikTok: ViewContent; Snapchat: page view and view content. Log: Send failed?; Log the failure only01 · Capture02 · Process03 · Ad platforms04 · LogPage view sent by the websiteBuild events with the pixel’sevent_idRoute by platformPass the visit to the SignalThermometerMeta: PageView and ViewContentTikTok: ViewContentSnapchat: page view and viewcontentSend failed?Log the failure only
Stage map from the live workflow Each page view reaches Meta, TikTok and Snapchat server-side with the pixel’s event_id, so every platform keeps one copy; only failed sends are logged.
Stages as text
  1. Capture: Page view sent by the website
  2. Process: Build events with the pixel’s event_id · Route by platform · Pass the visit to the Signal Thermometer
  3. Ad platforms: Meta: PageView and ViewContent · TikTok: ViewContent · Snapchat: page view and view content
  4. Log: Send failed? · Log the failure only

Signal Thermometer

Live, CRM writes under verification
Purpose
Turns site browsing, form activity and conversation signals into a per-contact temperature tier so reps call the warmest leads first.
Trigger
Async calls from browse events, lead intake and the realtime coach
Data
signal_events, signal_state
Guardrails
Secret header, writes only two CRM fields (tier, last signal time), no scoring from customer PII
Signal Thermometer: stage mapCapture: Site visits, forms, WhatsApp replies, Instagram comments; Daily re-check as signals age. Process: Classify the signal into a tier; Join earlier anonymous visits to the contact; Tier = highest in 7 days, one lower up to 14. CRM: Write tier and last-signal time; Keep a single signal tag; Hot: “call today” task for the rep. Notify: Boiling: internal WhatsApp to the rep and manager01 · Capture02 · Process03 · CRM04 · NotifySite visits, forms,WhatsApp replies,Instagram commentsDaily re-check assignals ageClassify the signalinto a tierJoin earlier anonymousvisits to the contactTier = highest in 7days, one lower up to 14Write tier andlast-signal timeKeep a single signaltagHot: “call today” taskfor the repBoiling: internalWhatsApp to the rep andmanagerSignal Thermometer: stage mapCapture: Site visits, forms, WhatsApp replies, Instagram comments; Daily re-check as signals age. Process: Classify the signal into a tier; Join earlier anonymous visits to the contact; Tier = highest in 7 days, one lower up to 14. CRM: Write tier and last-signal time; Keep a single signal tag; Hot: “call today” task for the rep. Notify: Boiling: internal WhatsApp to the rep and manager01 · Capture02 · Process03 · CRM04 · NotifySite visits, forms, WhatsAppreplies, Instagram commentsDaily re-check as signals ageClassify the signal into a tierJoin earlier anonymous visits tothe contactTier = highest in 7 days, onelower up to 14Write tier and last-signal timeKeep a single signal tagHot: “call today” task for therepBoiling: internal WhatsApp tothe rep and manager
Stage map from the live workflow Browsing, form and conversation signals become one temperature tier per contact, so reps call the warmest leads first.
Stages as text
  1. Capture: Site visits, forms, WhatsApp replies, Instagram comments · Daily re-check as signals age
  2. Process: Classify the signal into a tier · Join earlier anonymous visits to the contact · Tier = highest in 7 days, one lower up to 14
  3. CRM: Write tier and last-signal time · Keep a single signal tag · Hot: “call today” task for the rep
  4. Notify: Boiling: internal WhatsApp to the rep and manager

BOF Payment Sheet

Live (v2)
Purpose
Generates a bilingual payment-plan sheet (PDF A4 and 1080×1350 PNG) for a specific unit and lead, stored on the contact and emailed to the manager for the rep to send.
Trigger
Rep request from the CRM
Data
price_sheet
Guardrails
Header auth, rendered by Cloudflare Browser Rendering, never sent to the customer by the system, approved prices only
BOF Payment Sheet: stage mapCapture: Rep requests a sheet from the CRM; Check project, unit type and language. Process: Read the contact and the assigned rep; Approved prices for the unit; Render PDF A4 and PNG 1080×1350. CRM: Store both files on the contact; Add a note with the plan figures. Notify: WhatsApp the files to the rep; No rep phone: email to the manager01 · Capture02 · Process03 · CRM04 · NotifyRep requests a sheetfrom the CRMCheck project, unittype and languageRead the contact andthe assigned repApproved prices for theunitRender PDF A4 and PNG1080×1350Store both files on thecontactAdd a note with the planfiguresWhatsApp the files tothe repNo rep phone: email tothe managerBOF Payment Sheet: stage mapCapture: Rep requests a sheet from the CRM; Check project, unit type and language. Process: Read the contact and the assigned rep; Approved prices for the unit; Render PDF A4 and PNG 1080×1350. CRM: Store both files on the contact; Add a note with the plan figures. Notify: WhatsApp the files to the rep; No rep phone: email to the manager01 · Capture02 · Process03 · CRM04 · NotifyRep requests a sheet from theCRMCheck project, unit type andlanguageRead the contact and theassigned repApproved prices for the unitRender PDF A4 and PNG1080×1350Store both files on the contactAdd a note with the plan figuresWhatsApp the files to the repNo rep phone: email to themanager
Stage map from the live workflow A rep asks from the CRM and gets a bilingual payment-plan sheet with approved prices; the system never sends it to the customer.
Stages as text
  1. Capture: Rep requests a sheet from the CRM · Check project, unit type and language
  2. Process: Read the contact and the assigned rep · Approved prices for the unit · Render PDF A4 and PNG 1080×1350
  3. CRM: Store both files on the contact · Add a note with the plan figures
  4. Notify: WhatsApp the files to the rep · No rep phone: email to the manager

Weekly KPI report

Live
Purpose
Monday email: spend and leads by channel, Verified CPL, SLA buckets, permit tracker, channel policy, why-it-moved notes and the A/B form section with an n<50 guard.
Trigger
Schedule, Monday 09:00
Data
fact_ad_daily, fact_lead
Guardrails
Reads only, no judgement below sample size
Weekly KPI report: stage mapTrigger: Monday 09:00, or on request. Read: Meta spend, leads and change log; Snapchat campaign stats; CRM pipeline, new leads, first replies. Build: Spend, leads and Verified CPL by channel; Why it moved, reply-time buckets, permits; Form A/B section with a sample-size guard. Deliver: Email to the manager01 · Trigger02 · Read03 · Build04 · DeliverMonday 09:00, or onrequestMeta spend, leads andchange logSnapchat campaignstatsCRM pipeline, newleads, first repliesSpend, leads andVerified CPL bychannelWhy it moved,reply-time buckets,permitsForm A/B section with asample-size guardEmail to the managerWeekly KPI report: stage mapTrigger: Monday 09:00, or on request. Read: Meta spend, leads and change log; Snapchat campaign stats; CRM pipeline, new leads, first replies. Build: Spend, leads and Verified CPL by channel; Why it moved, reply-time buckets, permits; Form A/B section with a sample-size guard. Deliver: Email to the manager01 · Trigger02 · Read03 · Build04 · DeliverMonday 09:00, or on requestMeta spend, leads and change logSnapchat campaign statsCRM pipeline, new leads, firstrepliesSpend, leads and Verified CPLby channelWhy it moved, reply-timebuckets, permitsForm A/B section with asample-size guardEmail to the manager
Stage map from the live workflow Every Monday the manager gets spend, leads, Verified CPL, reply-time buckets and the form A/B section, read-only.
Stages as text
  1. Trigger: Monday 09:00, or on request
  2. Read: Meta spend, leads and change log · Snapchat campaign stats · CRM pipeline, new leads, first replies
  3. Build: Spend, leads and Verified CPL by channel · Why it moved, reply-time buckets, permits · Form A/B section with a sample-size guard
  4. Deliver: Email to the manager

Meta budget pacing engine

Live (writes approved)
Purpose
Paces the monthly budget across a 1–20 day flight, moves daily budgets by performance, pauses when the budget is spent and re-activates on day 1. Rules in the next section.
Trigger
Schedule, daily 07:10
Data
budget_engine_log, plan_budget
Guardrails
±20% daily clamp, kill-switch, 7-day learning freeze, manual freeze list, dry-run mode, email of every decision

Instagram comment → DM

Live, awaiting Meta App Review for full scope
Purpose
Replies to a qualifying comment with a DM, creates the CRM contact from the Instagram ID and labels it organic–instagram.
Trigger
Meta webhook on comment
Data
ig_comment_dm_rules, ig_comment_dm_log, ig_dm_suppress
Guardrails
Rules table, suppression list, token refresh check; the only automated customer message in the system, by decision

Monthly market read

Running
Purpose
A monthly read of the Bayut price index for Ajman, pulled automatically into the market-intel table by a scheduled monthly run. Rows wait as pending review until verified.
Trigger
Scheduled, monthly
Data
market_intel
Guardrails
Only verified rows reach the coach and copilot; no scraping

Ad platforms update review

Running
Purpose
A weekly AI agent reads the past week of verified Meta, Google, TikTok, Snap and LinkedIn ads changes, maps each one to the live setup (lead forms, CAPI, placements, creative specs, KPIs) and writes a review with proposed changes to campaign build and monitoring.
Trigger
Scheduled, every Monday
Data
Project knowledge base (weekly review doc)
Guardrails
Sources required for every item; proposals only, nothing changes in ad accounts without approval

AI tools radar

Running
Purpose
Twice a month an AI agent scans new models, Claude skills and connectors, n8n nodes, MCP servers and creative AI tools, compares them with the current stack and ranks what is worth adopting, flagging anything that needs an API connection.
Trigger
Scheduled, 1st and 15th of each month
Data
Project knowledge base (radar doc)
Guardrails
No installs, keys or subscriptions created by the agent; adoption is a manual decision

Also running

  • Nurture A/B/C and re-activation as rep-assist: the rep receives the phone, a summary and a suggested message, and sends it.
  • Not-interested auto-close from WhatsApp text and rep notes, with the lost reason set automatically.
  • Rep nudges in daily batches, 24/40-hour warnings and 48-hour redistribution of idle leads.
  • Conversation intelligence: AI reads rep–customer threads, writes CRM notes and proposes stage moves.
  • Realtime and daily sales coach, sales knowledge bot, objections corpus every weekend, weekly lead scoring tags.
  • Creative-fatigue watcher, Meta↔CRM reconciler, alert sink, error trigger, Monday health check.
  • Ops Console API, ads spend sync (Meta, TikTok, Snap), Won/Lost sync, content factory (drafts only), competitor-ads analyzer.

Earlier captures, 3 October 2026

From the first portfolio. Account identifiers and campaign names are pixelated.

GoHighLevel workflow list
Real workflow (sensitive values hidden) GoHighLevel: Facebook and TikTok lead workflows with weekly reporting, published
Zapier list of lead and conversion Zaps; campaign names pixelated
Real workflow (sensitive values hidden) Zapier: TikTok and Snapchat leads into the CRM with WhatsApp alerts, and Meta conversion events on stage change

Want this for your projects?

The whole stack, or one piece of it. WhatsApp is fastest.