Nima Salimi
- Marketing Automation Specialist - Marketing Workflow Architect - Optimizing Marketing Processes
Templates by Nima Salimi
Automate email marketing campaigns with NocoDB & Brevo
Description๐ This n8n workflow is a complete marketing automation system that connects to your CDP (Customer Data Platform), selects which flows to send, and delivers personalized emails using Brevo. It's modular and extensible โ you can also add SMS, push notifications, Telegram messages, or other channels. To build a full marketing automation system, you need four key components: Workflow Automation โ using n8n (this workflow) CDP โ store and manage user data (e.g., NocoDB, Metabase, Power BI, etc.) Database โ track transactions, templates, and send statuses (e.g., NocoDB) BI / Analytics โ monitor performance by flows, journeys, and sent events This workflow represents the Workflow Automation layer. You can connect it to your own data stack or use the included example databases (cdp-ecrm, n8n-templates-ecrm, and n8n-transaction-ecrm) to get started quickly. ๐ค Whoโs it for? Growth & CRM teams managing user engagement flows Ecommerce marketers running time-sensitive email journeys Marketing automation pros using low-code CRM stacks Data teams building custom campaign triggers from CDPs โ Features ๐ Two modular flows: "Insert user_id" and "Sending Email" ๐ง Select flow using flow_id from templates in NocoDB โ๏ธ Insert user data into n8n-transaction-ecrm with processing status ๐ Filter duplicate users by user_id to avoid over-sending ๐ง Validate email fields and flag disposables ๐จ Send personalized emails using Brevo template parameters ๐ Track delivery with sentresult, sentat, and status updates ๐ Runs every 30 minutes via schedule trigger ๐ How to Use Set your flow In the Setup Flow node, change the flow_id to match a row in your n8n-templates-ecrm table. Prepare your tables in NocoDB cdp-ecrm: contains users (userid, email, firstname, phone_number) n8n-templates-ecrm: contains flows with metadata n8n-transaction-ecrm: stores and updates user send status Configure credentials NocoDB API Token Brevo (Sendinblue) API Key Trigger the flows Run โInsert user_idโ manually or on a schedule to prepare users โSending Emailโ runs automatically every 30 minutes ๐ Notes Disposable email domains are filtered using regex Status: 0-processing โ just inserted 1-sending โ ready to send 2-sent โ email sent successfully 3-no-email โ missing email address 4-disposal-email โ disposable or banned email Easily duplicate the "Insert user_id" flow to add more campaigns
Automate SEO keyword & SERP analysis with DataForSEO and Google Sheets
๐ง Automated SEO Keyword and SERP Analysis with DataForSEO for High-Converting Content | n8n workflow template Overview ๐ ----------------- This is a complete SEO automation workflow built for professionals who want to manage all their DataForSEO operations inside n8n โ no coding required โ๏ธ You can easily choose your operator (action), such as: ๐ SERP Analysis โ Get ranking data for specific keywords ๐ Keyword Data โ Retrieve search volume, CPC, and trends ๐ง Competitor Research โ Analyze which domains dominate target queries Once the workflow runs, it automatically creates a new Google Sheet ๐ (if it doesnโt exist) and appends the results โ including metrics like keyword, rank, domain, and date โ to keep a growing historical record of your SEO data ๐ ๐ก Ideal for SEO specialists, agencies, and growth teams who want a single automation to handle all keyword and ranking data pipelines using DataForSEO + Google Sheets + n8n. --- Examples related keyword sheet Each operator (SERP, Keywords Data, Competitors) automatically creates a separate Google Sheet ๐ --- ๐ค Whoโs it for? ๐งฉ SEO Specialists who need accurate keyword & SERP insights daily โ๏ธ Content Marketers planning new blog posts or landing pages ๐ Digital Marketing Teams tracking top-performing keywords and competitors ๐ผ Agencies managing multiple websites or niches with automated reports ๐ง AI-Driven SEOs building GPT-powered content strategies using live ranking data --- โ๏ธ How It Works Trigger & Input Setup Start the workflow manually or schedule it to run daily / weekly ๐ Import a keyword list from Google Sheets ๐, NocoDB, or an internal database Keyword Data Retrieval (DataForSEO Keyword API) Sends requests to the keywords_data endpoint of DataForSEO Gathers search volume, CPC, competition level, and trend data Identifies the most promising keywords for conversion-focused content SERP Analysis (DataForSEO SERP API) Fetches the top organic results for each keyword Extracts domains, titles, snippets, and ranking positions Highlights which competitors dominate the search landscape Data Enrichment & Filtering Uses Code nodes to clean and normalize the DataForSEO JSON output Filters out low-intent or irrelevant keywords automatically Optionally integrates OpenAI or GPT nodes for insight generation โจ Store & Visualize Saves results into Google Sheets, Airtable, or NocoDB for tracking Each run adds fresh data, building a performance history over time ๐ Optional AI Layer (Advanced) Use OpenAI Chat Model to summarize SERP insights: > โTop 3 competitors for cloud storage pricing focus on cost transparency โ recommend including pricing tables.โ Automatically generate content briefs or keyword clusters --- ๐งฉ Workflow Highlights โก Multiple DataForSEO Endpoints Supported (keywords_data, serp, competitors) ๐ Automated Scheduling for daily / weekly updates ๐ง Data Normalization for clean, structured SEO metrics ๐ Easy Export to Google Sheets or NocoDB ๐งฉ Expandable Design โ integrate GPT, Google Search Console, or Analytics ๐ Multi-Language & Multi-Location Support via languagecode and locationcode --- ๐ Example Output (Google Sheets) | keyword | rank | domain | volume | cpc | competition | date | |----------|------|----------------|---------|---------|---------------|------------| | cloud hosting | 1 | cloud.google.com | 18,100 | $2.40 | 0.62 | 2025-10-25 | | cloud server | 3 | aws.amazon.com | 12,900 | $3.10 | 0.75 | 2025-10-25 | | hybrid cloud | 5 | vmware.com | 9,800 | $2.90 | 0.58 | 2025-10-25 | Each run appends new keyword metrics for trend and performance tracking. --- ๐ก Pro Tips ๐ Combine this workflow with Google Search Console for even richer insights โ๏ธ Adjust the locationcode and languagecode for local SEO targeting ๐ฌ Add a Slack or Gmail alert to receive weekly keyword opportunity reports ๐ค Extend with OpenAI to automatically create content briefs or topic clusters --- ๐ Integrations Used ๐งญ DataForSEO API โ Keyword & SERP data source ๐ Google Sheets / Airtable / NocoDB โ Storage and visualization ๐ค OpenAI Chat Model (optional) โ Insight generation and summarization โ๏ธ Code Nodes โ JSON parsing and custom data processing --- โ Features ๐ Choose from 100+ Locations Select your target country, region, or city using the location_code parameter. Perfect for local SEO tracking or multi-market analysis. ๐ฃ๏ธ Choose from 50+ Languages Define the language_code to get accurate, language-specific keyword and SERP data. Supports English (en), Spanish (es), French (fr), German (de), and more. ๐ Auto-Creates Google Sheets for You No need to manually set up a spreadsheet โ the workflow automatically creates a new Google Sheet (if it doesnโt exist) and structures it with the right columns (query, rank, domain, date, etc.). ๐ Append New Data Automatically Every run adds fresh SEO metrics to your sheet, building a continuous daily or weekly ranking history. โ๏ธ Flexible Operator Selection Choose which DataForSEO operator (action) you want to run: keywords_data, serp, or competitors. Each operator retrieves a different type of SEO insight. ๐ง Fully Expandable Add Slack alerts, Airtable sync, or AI summaries using OpenAI โ all within the same workflow. --- โ๏ธ How to Set Up ๐ Add DataForSEO Credentials Get your API login from dataforseo.com Add it under HTTP Request โ Basic Auth in n8n ๐ Connect Google Sheets Authorize your Google account The workflow will auto-create the sheet if it doesnโt exist ๐ Choose Operator (Action) Pick one: serp, keywords_data, or competitors Each operator runs a different SEO analysis ๐ Set Location & Language Example: locationcode: 2840 (US), languagecode: en ๐ Run or Schedule Trigger manually or set a daily schedule New results will append to your Google Sheet automatically --- ๐บ Check Out My Channel ๐ฌ Learn more about SEO Automation, n8n, and AI-powered content workflows ๐ Connect with me on LinkedIn: Nima Salimi Follow for more templates, AI workflows, and SEO automation tutorials ๐ฅ
Daily Import Yesterday's Forex Factory Calendar to Google Sheets with Telegram Alerts
Overview This n8n workflow automatically fetches the Forex Factory calendar for yesterday using Rapid API, then saves the data to a connected Google Sheet and sends Telegram alerts for high and medium impact events. It runs daily on schedule, collecting key fields such as currency, time, impact, and market indicators, and organizes them for easy tracking and analysis. Perfect for forex traders and analysts who need quick access to reliable market data from the previous dayโs events. โ Tasks โฐ Runs automatically every day ๐ Fetches yesterdayโs Forex Factory calendar via Rapid API ๐งพ Collects key data fields: year, date, time, currency, impact, actual, forecast, previous ๐ Saves all records to Google Sheets for tracking and analysis ๐จ Sends Telegram alerts for high and medium impact events โ๏ธ Keeps your market data updated and organized with no manual work required ๐ How to Use ๐ Create a Google Spreadsheet Create a new spreadsheet in Google Sheets and add two sheets: High Impact and Low Impact. Connect it to your Google Sheets nodes in n8n. ๐ Find the API on Rapid API Go to Rapid API and search for Forex Factory Scraper. Subscribe to the API to get your access key. ๐ Connect Rapid API to n8n In your HTTP Request node, add the header below to authenticate your request: ๐ฌ Add Your Telegram Chat ID In the Telegram node, paste your Chat ID to receive daily alerts for high-impact news. ๐ Activate the Workflow Enable the Schedule Trigger to run daily. The workflow will automatically fetch yesterdayโs Forex Factory calendar, save it to Google Sheets, and send Telegram notifications.
Daily import validated contacts from NocoDB to Brevo
Overview Automate your daily contact imports from NocoDB to Brevo.The workflow updates the record status in NocoDB at each step. For every email campaign, itโs essential to keep your Brevo contact list updated so you can send personalized and targeted emails. This flow automates that process. โ Tasks โฐ Runs automatically every day ๐ Fetches only new/unimported records from NocoDB ๐ Checks for missing required fields ๐ซ Filters out disposable/temporary emails ๐ฌ Creates contacts in Brevo ๐ Updates NocoDB status after each step ๐ How to Use 1๏ธโฃ Set your schedule The Schedule Trigger node runs the flow daily adjust to your preferred time. 2๏ธโฃ Prepare your table in NocoDB Your NocoDB table should contain at least: id first_name last_name email status (default: 0-not-imported) 3๏ธโฃ Configure your credentials Connect your NocoDB API Token in the NocoDB nodes. Connect your Brevo API Key in the Brevo node. 4๏ธโฃ Map your fields In the Brevo: Create Contact node, make sure first name, last name, and email match your NocoDB column names. ๐ Notes ๐ก Make sure your NocoDB project/table IDs match the ones in this template. ๐ This workflow processes contacts one-by-one to avoid heavy API calls and rate limit issues with Brevo. โ status values: 0-not-imported โ new record 1-empty-fields โ missing required fields 2-disposal-email โ disposable email detected 3-contact-created โ successfully created in Brevo
Build a complete email CRM with Google Sheets & MailerSend
โ๏ธ Automate MailerSend Email (Google Sheets) --- ๐ Overview This workflow converts Google Sheets into a full Email CRM โ no HubSpot or Customer.io needed! It automates segmentation, sending, validation, and delivery tracking using: โ Google Sheets โ CDP + Email Performance DB โ MailerSend โ Email Template Delivery โ n8n โ Automation + Logic + Scheduling It automatically: โข Reads subscribers from a selected segment sheet โข Validates email + checks for disposable domains โข Sends a MailerSend email template โข Updates send status + delivery result in Sheets Perfect for onboarding emails, promo campaigns, retention flows, newsletters & more! --- โ Key Features โข ๐ฏ Unlimited audience segments โข ๐ซ Deduplication system per execution โข ๐ก๏ธ Disposable email filtering โข ๐ Automatic recurring runs (every 30 minutes) โข ๐งฉ Template-based personalization (name, codes, journey) โข ๐ Real-time delivery tracking + analytics-ready data โข ๐ Zero CRM vendor lock-in --- ๐ Database Sheets (Google Sheets Required) Use this database template: ๐ https://docs.google.com/spreadsheets/d/17KqltP-NqchPhZV7gk6QToqCZX6IiA5EBkDCBNsIX_0/edit?usp=sharing | Sheet Name | Purpose | Required Fields | |-----------|---------|----------------| | template | Campaign configuration | Id, templatename, journey, type, typetemplateid, discountcode | | segment1 / segment2 | Audience lists | userid, email, firstname, number | | transaction | Status + results history | userid, status, sentresult, sentat, templatename | transaction | CreatedAt | UpdatedAt | userid | email | number | firstname | status | databaseid | type | templateid | typetemplateid | templatename | journey | discountcode | gift_code | |----------------------------------|----------------------------------|-----------------|------------------------|-------------|------------|------------|-------------|------|-------------|-------------------|-----------------|---------|---------------|-----------| | 2025-10-25T13:11:41.567-04:00 | 2025-10-25T13:11:41.567-04:00 | uid_0000000001 | nimasalimi42@gmail.com | 9362000000 | Liam | 1-sending | segment1 | email | 1 | v28xxl2sq8dg785k | SMS-TEST | Test | disxxx | | | 2025-10-25T13:11:41.567-04:00 | 2025-10-25T13:11:41.567-04:00 | uid_0000000002 | user2@gmail.com | 9362000001 | Noah | 1-sending | segment1 | email | 1 | v28xxl2sq8dg785k | SMS-TEST | Test | disxxx | | | 2025-10-25T13:11:41.567-04:00 | 2025-10-25T13:11:41.567-04:00 | uid_0000000003 | user3@gmail.com | 9362000002 | Oliver | 1-sending | segment1 | email | 1 | v28xxl2sq8dg785k | SMS-TEST | Test | disxxx | | template | Id | templatename | journey | databaseid | type | typetemplateid | discountcode | giftcode | |----|---------------------------|----------------|-------------|------|-------------------|---------------|-----------| | 3 | Order-Confirmation | Order | segment3 | email | v28xxl2sq8dg785k | discount2 | | | 4 | Shipping-Notification | Notification | segment4 | email | v28xxl2sq8dg785c | discount3 | | | 5 | Add-to-Cart-day1 | Add-to-Car | segment5 | email | v28xxl2sq8dg785d | discount4 | | | 6 | Welcome-New-Customer | Welcome | segment6 | email | v28xxl2sq8dg785s | discount5 | | | 7 | Churn-Pro-Plan | Churn | segment7 | email | v28xxl2sq8dg785g | proxc | | | 8 | Churn-Pro-Plan-1day-ago | Churn | segment8 | email | v28xxl2sq8dg785h | | shipx | segment1 | userid | email | number | firstname | database_id | |-----------------|-------------------------|--------------|------------|-------------| | uid_0000000001 | nimasalimi42@gmail.com | 09362000000 | Liam | segment1 | | uid_0000000002 | user2@gmail.com | 09362000001 | Noah | segment1 | | uid_0000000003 | user3@gmail.com | 09362000002 | Oliver | segment1 | | uid_0000000004 | user4@gmail.com | 09362000003 | Elijah | segment1 | | uid_0000000005 | user5@gmail.com | 09362000004 | James | segment1 | ๐ Add more segments simply by creating new sheets (segment3, segment4...) ๐ Change campaign by updating template_id in Setup Flow node --- ๐ค Whoโs it for? โข Ecommerce email retention teams โข SaaS CRM automation operators โข Digital marketing & lifecycle pros โข Agencies running multi-brand campaigns โข No-code builders who want scalable CRM logic --- โ๏ธ Automations Included Flow 1 โ Insert Users (Triggered on schedule) โข Pull users from selected segment tab โข Insert into transaction sheet โข Status: 0-processing โ 1-sending โข Prevent duplicate sending โ Flow 2 โ Send Emails (Runs every 30 min) โข Selects โreadyโ users (1-sending) โข Checks: Missing email โ 3-no-email Disposable โ 4-disposal-email โข Sends via MailerSend template ID in sheet โข Updates status โ 2-sent + message result ๐ฏ Your entire CRM sending logic runs automatically every day --- ๐ง Personalization Support Available merge-fields: โข first_name โข discount_code โข gift_code (Modify jsonBody to add more!) --- ๐ MailerSend Setup Required Inside MailerSend node: Replace โinfo@example.comโ with your verified sender email โ You must: โ Verify domain โ Approve sender email โ Copy correct template ID โ Google Sheet --- ๐ก Optional Enhancements โข Slack alerts for failed sends โข Connect Looker Studio for dashboards โข Add SMS / WhatsApp parallel flows โข A/B test templates by duplicating rows โข Add AI for subject optimization or copy rewrite --- ๐บ Connect With Me More workflows, CRM strategy & AI marketing automation ๐ LinkedIn: https://linkedin.com/in/nima-salimi-a655a6231 Follow & โญ๏ธ this template if it helped you ๐
Inserting Brevo contact reports into NocoDB
Overview This n8n workflow automatically retrieves Brevo contact reports and inserts summarized engagement data into NocoDB. It groups campaign activity by email, creating a clean, unified record that includes sent, delivered, opened, clicked, and blacklisted events. This setup keeps your CRM or marketing database synchronized with the latest Brevo email performance data. --- โ Tasks โฐ Runs automatically on schedule or manually ๐ Fetches contact activity data from Brevo API ๐งฉ Groups all campaign activity per email ๐พ Inserts summarized data into NocoDB โ๏ธ Keeps engagement metrics synced between Brevo and NocoDB --- ๐ How to Use ๐งฑ Prepare your NocoDB table Create a table with fields for: email, messagesSent, delivered, opened, clicked, done, and blacklisted. ๐ Connect your Brevo credentials Add your Brevo API Key in the HTTP Request node to fetch contact data securely. ๐งฎ Review the Code Nodes These nodes group contact activity by email and prepare a single dataset for insertion. ๐ Run or schedule the workflow Execute it manually or use a Schedule Trigger to automate the data sync process. --- ๐ Notes ๐ Make sure the field names in NocoDB match those used in the workflow. ๐ Keep your Brevo API Key secure and private. โ๏ธ The workflow can be expanded to include additional fields or filters. ๐ Use the data for engagement analytics, segmentation, or campaign performance tracking.
Automate monthly CrUX report transfer from BigQuery to NocoDB with data cleanup
Overview This n8n workflow automatically retrieves the monthly CrUX (Chrome User Experience) Report from Google BigQuery and updates the data in NocoDB. It removes the previous monthโs data before inserting the new dataset, ensuring your database always contains the latest CrUX rankings for website origins. The flow is fully automated, using schedule triggers to handle both data cleanup and data insertion each month. --- โ Tasks โฐ Runs automatically on a monthly schedule ๐ข Converts the month name to a numeric value for table selection ๐งน Deletes last monthโs CrUX data from NocoDB ๐ Queries Google BigQuery for the latest monthly dataset ๐พ Inserts the new CrUX rankings into NocoDB โ๏ธ Keeps your database up to date with zero manual effort --- ๐ How to Use 1๏ธโฃ Set Up BigQuery Access Connect your Google BigQuery credentials. Make sure your project includes access to the chrome-ux-report public dataset. 2๏ธโฃ Adjust the Query In the Google BigQuery node, change the LIMIT value to control how many top-ranked sites are retrieved. Ensure the {{ $json.table }} field correctly references the dataset for the desired month (e.g., 202509). 3๏ธโฃ Prepare NocoDB Table Create a table in NocoDB with fields: origin, crux_rank, and any additional metadata you wish to track. 4๏ธโฃ Schedule Automation The workflow includes two Schedule Trigger nodes: One runs the data cleanup process (deletes last month). One runs the data insertion for the new month. 5๏ธโฃ Run or Activate the Workflow Activate it to run automatically each month. You can also run it manually to refresh data on demand. ๐ Prerequisites Before running this workflow, make sure you complete the following setup steps: ๐งฑ Enable BigQuery API Go to Google Cloud Console โ APIs & Services Enable the BigQuery API for your project. ๐ Access the Chrome UX Report Dataset In BigQuery, search for โChrome UX Reportโ in the Marketplace or go directly to: https://console.cloud.google.com/marketplace/product/chrome-ux-report/chrome-ux-report Click โView Datasetโ and add it to your BigQuery project. ๐ Connect BigQuery to n8n In n8n, create credentials for your Google BigQuery account using Service Account Authentication. Ensure the account has permission to query the chrome-ux-report dataset. ๐๏ธ Create a NocoDB Table In NocoDB, create a new table to store your CrUX data with the following fields: origin โ Short text crux_rank โ Number โ๏ธ Connect NocoDB to n8n Use your NocoDB API Token to connect and allow the workflow to read/write data. What is CrUX Rank? CrUX Rank (Chrome User Experience Rank) is a metric from Googleโs Chrome UX Report (CrUX) dataset that indicates a websiteโs popularity based on real user visits. It reflects how frequently an origin (website) is loaded by Chrome users around the world. A lower rank number means the site is more popular (e.g., rank 1 = top site). The data is collected from anonymized Chrome usage statistics, aggregated monthly. This rank helps you track site popularity trends and compare your domainโs visibility over time.