Automate MySQL Data Updates via Gmail Integration

Seamlessly automate data updates from MySQL to your Gmail inbox using a powerful integration. This workflow is perfect for communication teams looking to streamline their data management processes. Requires 2 accounts: MySQL and Gmail OAuth2. Save hours of manual data entry and ensure timely communication by instantly receiving important database updates directly in your email.

1 Trigger
220 views7 nodesJul 2025Lucas Bennett

Categories

Lead Generation

Credentials

2 required

Quick Actions

Copy or download to import into your n8n instance

Workflow JSON
{
  "meta": {
    "instanceId": "d6e2f2f655b1125bbcac14a4cac6d2e46c7a150e927f85fc96fdca1a6dc39e0e",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "c6250c78-41e1-4977-8f3b-d34a76a24f82",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        140,
        -340
      ],
      "parameters": {
        "height": 1480,
        "content": "## This workflow processes emails received in Gmail and adds the sender's **name** and **email address** to a MySQL database.\n\n## Use Cases:\n- A sales or marketing agency can use this to automatically save client contact info to a database to build a list of leads\n- Companies can use this to automatically save contacts to a database in case of Gmail data loss / losing access to their Gmail account\n- Companies can build mailing lists to automatically send promotions to all of the clients who have contacted them in a given time period\n\n## Before using, you need to have:\n- Gmail credential\n- MySQL database credential\n- A Table in the MySQL database to store your contacts\n- The table should have a \"name\" column, which allows NULL values\n- The table should have an \"email\" column, which should be UNIQUE\n\n## How it works:\n- The Gmail Trigger will listen for a new email every minute\n- For each email, the code node will extract the name and email address of the sender. If there is no name, it will return null\n- The MySQL node will insert the new contact into a table in your database\n- If the contact email already exists in your database, the MySQL node will update the contact name\n\n\n## How to use:\n- Please set up the MySQL node by selecting the correct table to store contacts in\n- Please choose your \"email\" column to match on\n- Please choose your \"name\" column to store names\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3688fcda-44ad-47c1-bc76-3f3fa04ca436",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        -80
      ],
      "parameters": {
        "width": 300,
        "height": 680,
        "content": "## Please setup this node first\n- Create a table in your MySQL database to store your contacts.\n- The table should include the following fields\n  - Name column (should allow null values)\n  - Email column (should be set to unique)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## How to use:\n- Please set up the MySQL node by selecting the correct table to store contacts in\n- Please choose your \"email\" column to match on\n- Please choose your \"name\" column to store names"
      },
      "typeVersion": 1
    },
    {
      "id": "1cbe3946-6b48-483e-9983-2f0c3f243c40",
      "name": "Insert New Client in MySQL",
      "type": "n8n-nodes-base.mySql",
      "onError": "continueRegularOutput",
      "position": [
        1040,
        200
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "contacts",
          "cachedResultName": "contacts"
        },
        "options": {},
        "dataMode": "defineBelow",
        "operation": "upsert",
        "valuesToSend": {
          "values": [
            {
              "value": "={{ $json.name }}",
              "column": "name"
            }
          ]
        },
        "valueToMatchOn": "={{ $json.email }}",
        "columnToMatchOn": "email"
      },
      "credentials": {
        "mySql": {
          "id": "MYdqb2i2fz5O21ui",
          "name": "BT Operations Database"
        }
      },
      "typeVersion": 2.4,
      "alwaysOutputData": true
    },
    {
      "id": "ff005111-3172-4022-92b1-9280458d6741",
      "name": "Receive Email",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        500,
        200
      ],
      "parameters": {
        "filters": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "YVZiLPppXZw84rIU",
          "name": "Gmail account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "5a266f76-1c4d-48ed-a50b-65998cfe135c",
      "name": "Extract Client Name and Email",
      "type": "n8n-nodes-base.code",
      "position": [
        760,
        200
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "let email = $json.From.trim();\nlet name = null;\n\nif (email.includes('<')) {\n  name = email.split('<')[0].trim();\n  email = email.split('<')[1].replace('>', '').trim();\n}\n\nreturn {\n  \"name\": name,\n  \"email\": email\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "0b4cf2a9-e890-4561-a6c5-e0c85838a777",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        440,
        -80
      ],
      "parameters": {
        "color": 5,
        "height": 460,
        "content": "## Customize this to your liking\n\nYou can add filters to this node to only save certain contact emails\n\n**Example:** You can add a \"Label\" filter to only add emails with a specific label"
      },
      "typeVersion": 1
    },
    {
      "id": "58e5e9bd-3bf7-4c3a-80be-c4ac2ff0f370",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        -20
      ],
      "parameters": {
        "color": 5,
        "height": 420,
        "content": "## Customizing this Workflow:\n- You can customize this workflow to save more data to MySQL. Here are some examples:\n- In the MySQL node, click \"Add Value\", and choose one of the fields from the Gmail node to save in your database column. You can try saving the following items:\n  - Subject line\n  - MessageID\n  - ThreadID\n  - Snippet\n  - Recipient Info"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Receive Email": {
      "main": [
        [
          {
            "node": "Extract Client Name and Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Client Name and Email": {
      "main": [
        [
          {
            "node": "Insert New Client in MySQL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Related Workflows

Scrape Google Maps Emails to Google Sheets with Automation

This workflow utilizes the Google Sheets API to automatically scrape email addresses from Google Maps, filtering and batching the results for efficient data management. Ideal for professionals in data management, it requires just 1 account: Google Sheets OAuth. Save hours of manual data entry and generate targeted email lists quickly, driving your marketing efforts with precision.

172,227 views
Lead Generation

Automate Lead Generation from Google Maps to Google Sheets

Effortlessly extract business data from Google Maps using the Google Sheets API and store it directly into Google Sheets. This automation is perfect for data management professionals looking to streamline lead generation. Requires 1 account: Google Sheets OAuth. Save hours of manual entry and generate 100+ targeted leads weekly with this seamless integration.

88,443 views
Lead Generation

Automate Data Extraction and Analysis with OpenAI & Google Sheets

This workflow utilizes the OpenAI API and Google Sheets API to extract HTML data, analyze it with OpenAI GPT, and seamlessly merge it into Google Sheets for easy access. Ideal for data management professionals, this automation simplifies complex data processing. Requires 2 accounts: OpenAI API Key and Google Sheets OAuth. Save hours of manual data entry and streamline your reporting process, generating actionable insights in minutes.

79,823 views
Lead GenerationAI Summarization

Automate Data Parsing and Enrichment with Google Sheets API & OpenAI

Streamline data management by automating the parsing and enrichment of information using the Google Sheets API and OpenAI GPT. This workflow is tailored for data management professionals who need accurate and enriched data insights. Requires 3 accounts: OpenAI API, Serp API, and Google Sheets OAuth. Save hours of manual data entry and enhance your reporting capabilities with structured outputs, increasing productivity and accuracy in your data processes.

73,708 views
Lead GenerationAI Summarization

How to Use This Workflow

1Import to n8n

  1. Copy the JSON using the button above
  2. Open your n8n instance
  3. Click “Import workflow” or press Ctrl+V
  4. Paste the JSON and click “Import”

2Before Running

Configure credentials and update service-specific settings before executing the workflow. Review required credentials in the Technical Details section above.

220