Thank you for your purchase!

Your SheetLinkWP license is ready. Download the plugin below and follow the quick setup steps to start syncing forms to Google Sheets.

Download SheetLinkWP Plugin

Save this file - you can re-download it anytime from this page.

Download Plugin (.zip)
sheetlink-forms.zip · WordPress Plugin · v1.6.2

Quick Setup (3 minutes)

1

Install the plugin

In WordPress, go to Plugins → Add New → Upload Plugin. Choose the ZIP file you just downloaded, then click Install Now and Activate.

2

Activate your license

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.

3

Connect a Google Sheet

Copy our template sheet below, deploy the script, then go to SheetLinkWP → Settings. Click Add Rule, pick your form plugin, paste the Google Apps Script URL, map your fields, and save.

Google Sheets Setup

Copy our pre-built template sheet - the script is already included. Just deploy and go.

Copy Template Sheet

After copying:

  1. In your new sheet, go to Extensions → Apps Script
  2. Click Deploy → New deployment
  3. Select type: Web app
  4. Set "Who has access" to Anyone
  5. Click Deploy and copy the URL
  6. Paste the URL into SheetLinkWP's "Google Script URL" field
or paste manually
function 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!');
}

Need help?

Reply to your purchase confirmation email or reach us at support@sheetlinkwp.com. We typically respond within a few hours.