Your SheetLinkWP license is ready. Download the plugin below and follow the quick setup steps to start syncing forms to Google Sheets.
Save this file - you can re-download it anytime from this page.
Download Plugin (.zip)In WordPress, go to Plugins → Add New → Upload Plugin. Choose the ZIP file you just downloaded, then click Install Now and Activate.
Go to SheetLinkWP → License in your WordPress admin. Enter the email you used to purchase and click Activate. That's it - no license keys needed.
Quickest way (v1.12.0+): go to SheetLinkWP → Google Sheets (OAuth), click Connect Google, and pick or create a spreadsheet in the Google file picker - no code needed. Then click Add Rule, pick your form plugin, map your fields, and save. Prefer the classic route? Copy our template sheet below, deploy the script, and paste the Google Apps Script URL into your rule instead.
Since v1.12.0 you can skip this section entirely and use the one-click Connect Google button in the plugin. Prefer the self-hosted Apps Script route? Copy our pre-built template sheet - the script is already included. Just deploy and go.
Copy Template Sheetfunction doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = JSON.parse(e.postData.contents);
// Create header row on first submission
if (sheet.getLastRow() === 0) {
sheet.appendRow(Object.keys(data));
}
// Get current headers
var lastCol = sheet.getLastColumn();
var headers = lastCol > 0
? sheet.getRange(1, 1, 1, lastCol).getValues()[0]
: [];
// Auto-add columns for any new fields
var keys = Object.keys(data);
for (var i = 0; i < keys.length; i++) {
if (headers.indexOf(keys[i]) === -1) {
headers.push(keys[i]);
sheet.getRange(1, headers.length).setValue(keys[i]);
}
}
// Build row in header order
var row = headers.map(function(h) { return data[h] || ''; });
sheet.appendRow(row);
return ContentService.createTextOutput(
JSON.stringify({ status: 'ok' })
).setMimeType(ContentService.MimeType.JSON);
}
// Run this to verify the script works
function testDoPost() {
doPost({ postData: { contents: JSON.stringify({
timestamp: new Date().toLocaleString(),
name: 'Test User',
email: 'test@example.com',
message: 'Hello from SheetLinkWP!'
})}});
Logger.log('Test row added!');
}
Reply to your purchase confirmation email or reach us at support@sheetlinkwp.com. We typically respond within a few hours.