- Destinations
- Files & delivery
MySQL
Overview
Section titled “Overview”Each lead Signals receives is written as a row in a table in a MySQL database you own. Leads land in the database your own application already reads from, so no import step or file handoff sits in between.
It is the only file destination with a field mapping step, so you decide which lead field goes into which column of your table.
Supported sources
Section titled “Supported sources”Sources supported by MySQL
| Category | Supported |
|---|---|
| Lead generation |
Prerequisites
Section titled “Prerequisites”- A MySQL instance Signals can reach over the network.
- The database and the table that leads should be written to, both already created. Signals writes into a table you have created; it does not create one.
- A MySQL user with read and write access to that database.
Authentication
Section titled “Authentication”In Studio, open Destinations, find the Files category, and click the MySQL tile. This connector authenticates with credentials you add manually, so there is no sign-in screen.
Configuration
Section titled “Configuration”Integration type and connection
Section titled “Integration type and connection”Select the Integration Type, which is the lead generation source the leads come from. The options are Meta Lead Ads, Snapchat Lead Generation Ads, TikTok Lead Ads, LinkedIn Lead Ads and Google Forms. Then select the lead ads connection name you want to deliver from, and give the instance a name. The instance name is yours to choose and does not have to match anything. Then click Next.
Credentials
Section titled “Credentials”Enter the following, then click Test Connection.
| Field | What it is | Where to find it |
|---|---|---|
| MySQL Hostname | Hostname of your MySQL server. | From your database administrator, or your cloud provider’s console. |
| Port | The port number of your MySQL instance. | 3306 unless your administrator has moved it. |
| MySQL Username | A user with read and write access to the database. | Created in MySQL by your database administrator. |
| Password | Password for that user. | Set when the user was created. |
| Database Name | The database where leads should be stored. | The database your application uses. |
| Table Name | The table leads should be pushed to. | Created in that database before you connect. |
Field mapping
Section titled “Field mapping”Map the fields from your lead source onto the columns of the MySQL table. The lead ID from the source must be mapped to a column; without it there is nothing stable to key on later. Map whichever other fields you need beyond that.
Column types decide whether a value survives the write. A phone number in a numeric column loses its leading zero, and a long free-text answer into a narrow column is either truncated or rejected. Use text columns wide enough for the real values, and keep the lead ID as text. Once the mapping is complete, click Finish.
Manage instance
Section titled “Manage instance”One connection writes one table. To deliver a second source, or into a second table, add another instance from Manage Connections, entering and testing the credentials and mapping the fields again with the lead ID included. To change an existing one, click the connection name in Manage Connections, click the edit icon in the top right, update the fields or mappings, click Test Connection and click Finish.
Data & identifiers
Section titled “Data & identifiers”Leads are delivered as submitted. Personal data is not hashed on this destination, because the system receiving it is your own and the point is that people and applications can read it.
Once a row is written, retention, access control, encryption at rest and backup are governed by your database and your policies, not by Signals.
Which fields arrive is decided by the lead form on the connected source, so a field you need that is not appearing has to be added there.
Best practices
Section titled “Best practices”- Put a unique index on the lead ID column, so the same lead arriving twice does not become two rows.
- When the database password is rotated, update the instance with the new password. Delivery stops the moment the old one is retired.
- Coordinate schema changes with the connection. Dropping or renaming a mapped column stops delivery.
Troubleshooting & FAQ
Section titled “Troubleshooting & FAQ”Test Connection fails. Work through it in order: the hostname and port are right, the database name is right, and the user has write access to the target table.
The connection works but no rows appear. Confirm the table on the connection is the table you are querying, including the database, then confirm the source has produced leads.
Some rows are rejected and others are not. A type or length mismatch on the rows that fail, or a required column with no mapping and no default.
Phone numbers have lost their leading zero. The column is numeric. Change it to a text column.
Duplicate rows. There is no unique index on the lead ID column. Add one.
Delivery stopped overnight. Usually a password rotation or a schema migration that renamed or dropped a mapped column.

