
- Tired of installing too many WordPress plugins just to collect leads?
- Want to send your custom form data directly to Google Sheets and ConvertKit (Now know as Kit) – without slowing down your site?
In this guide, Iβll show you how to send custom WordPress form data to Google Sheet and ConvertKit, using custom PHP – no plugin required.
This method is fast, secure, lightweight, and gives you complete control over your automation – especially useful if you’re a developer, freelancer, or agency building optimized themes.
Letβs get started π
Table of Contents
π Why Use Google Sheet + KIT β formerly ConvertKit (No Plugin)?
- β No plugin bloat β faster page speed
- β Full control over form fields and where data goes
- β Store leads in Google Sheets for backup
- β Add subscribers to KIT β formerly ConvertKit (your email list)
- β Tag leads based on form types or services
- β Track leads for different websites easily
- β Works with custom themes or any theme
π§© Basic Concept (How it Works)
When a user submits a form:
- You capture the form data with PHP (
$_POST) - You send the data to a Google Apps Script Webhook (which writes to Google Sheet)
- You also send the same data to KIT β formerly ConvertKit via their API (V3 β supports tag + form)
π οΈ What You Need
- β Google Account (for Sheets + Apps Script)
- β KIT β formerly ConvertKit account (V3 API key, form ID, tag ID)
- β WordPress theme access (functions.php or custom plugin)
- β Your existing contact form (HTML + custom handler)
βοΈ Step-by-Step Setup
πΉ Step 1: Create a Google Sheet
- Go to https://sheets.new
- Name it
WP Leads - Add these columns in Row 1:
Name,Email,Phone,Service,Message,Source,Date
πΉ Step 2: Create Google Apps Script Webhook
- Click:
Extensions β Apps Script - Paste the script

function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var params = JSON.parse(e.postData.contents);
sheet.appendRow([
new Date(),
params.full_name,
params.email,
params.mobile,
params.website_url,
params.choose_service,
params.message,
params.source
]);
return ContentService.createTextOutput("OK");
}
Code language: JavaScript (javascript)
- Deploy β
Web App - Set: Anyone with the link
- Copy the Web app/Webhook URL

π Youβll use this in your PHP code.
πΉ Step 3: Get KIT β formerly ConvertKit API Info
- Log in to KIT – formerly ConvertKit
- Go to Settings β Advanced
- Copy:
- β API Key
- β Form ID
- β Tag ID (if tagging)
πΉ Step 4: Create Your HTML Form (Simple Example)
<form method="post" action="">
<input type="text" name="full_name" placeholder="Your Name" required>
<input type="email" name="email" placeholder="Your Email" required>
<input type="text" name="mobile" placeholder="Mobile Number">
<select name="choose_service">
<option value="wordpress_dev">WordPress Development</option>
<option value="bug_fix">Bug Fix</option>
</select>
<textarea name="message" placeholder="Your Message"></textarea>
<button type="submit">Send</button>
</form>Code language: HTML, XML (xml)
πΉ Step 5: Handle Submission in PHP (Example)
Place this in your functions.php or custom plugin:
add_action('init', function() {
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['email'])) {
$data = [
'full_name' => sanitize_text_field($_POST['full_name']),
'email' => sanitize_email($_POST['email']),
'mobile' => sanitize_text_field($_POST['mobile']),
'choose_service' => sanitize_text_field($_POST['choose_service']),
'message' => sanitize_textarea_field($_POST['message']),
'source' => 'bloggingstep.com'
];
// β
Send to Google Sheet (JSON)
wp_remote_post('https://script.google.com/macros/s/<strong>XYZ</strong>/exec', [
'body' => json_encode($data),
'headers' => ['Content-Type' => 'application/json'],
'method' => 'POST',
'data_format' => 'body',
]);
// β
Send to ConvertKit (V3 API)
wp_remote_post('https://api.convertkit.com/v3/forms/<strong>123456</strong>/subscribe', [
'body' => [
'api_key' => '<strong>your_api_key</strong>',
'email' => $data['email'],
'first_name' => $data['full_name'],
'tags' => ['Lead - WordPress Form']
]
]);
}
});Code language: PHP (php)
β Replace:
XYZβ your Google Apps Script ID123456β your ConvertKit Form IDyour_api_keyβ your ConvertKit API key
π€ Common Use Cases
- Freelancers capturing leads
- Developers building custom themes
- Agencies handling client forms
- Bloggers creating lead magnets
- eCommerce sites with service inquiries
β Top 10 FAQs
-
Can I do this without using any plugin?
-
Can I track where each lead came from?
-
Is this method secure?
-
Can I add tags dynamically in ConvertKit?
-
What if I want to use WPForms or Contact Form 7?
-
Does this work on shared hosting?
-
Can I connect more services (MailerLite, Brevo)?
-
Will the user see any confirmation?
-
How do I test if itβs working?
-
Will this slow down my site?
Want this done professionally for your website?
I offer custom lead capture form integrations with Google Sheets + ConvertKit + MailerLite
β Optimized for speed, tracking, and GDPR
π Hire Me at LalitDudeja.com
Or just reply via my contact form β happy to help π
Disclaimer:
Always test any code changes or custom form automation on a staging or localhost environment first. Avoid making direct edits on your live website without proper testing, as incorrect implementations can affect your siteβs functionality or lead to data issues. BloggingStep.com and the author take no responsibility for any issues caused by misuse of this guide. Proceed with caution and always keep backups.
π Conclusion
This simple yet powerful method allows you to bypass plugin limitations and build your own fast, custom lead capture system.
You own the data.
You control the process.
And your website stays lightning-fast π₯
Stay tuned β I’m publishing detailed posts for Contact Form 7, WPForms, Elementor, and others next.
All using this same efficient method π‘
π© Subscribe to BloggingStep and grab your free checklist today!


