Troubleshooting
Solutions to common SheetLinkWP issues, error messages, Google quota limits, retry queue, license problems, and how to get help.
No Data in Sheet
This is the most common issue. Below are the typical causes and how to resolve them.
I submitted a form but nothing appeared in my Google Sheet.
- Check the Delivery Log (SheetLink > Log) - if the entry shows "Success", the data was sent. Make sure you're looking at the right sheet and tab.
- If it shows "Failed", check the error message. See the Failed Deliveries section below for common errors and fixes.
- If there is no log entry at all, the form plugin hook may not be firing. Verify:
- The correct form plugin is selected in your sync rule
- The form is actually submitting (check the form plugin's own logs/entries)
- The SheetLinkWP plugin is activated
The test button works but real form submissions don't appear.
- Make sure the correct form plugin is selected in the sync rule.
- Check that the form ID matches - some plugins require selecting a specific form.
- Verify the form is actually submitting successfully (check the form plugin's own submissions/entries page).
Data appears but columns are wrong or missing.
- Check your field mapping in the sync rule - each form field should be mapped to the correct column.
- If you added new fields after the initial setup, the Apps Script auto-adds columns for new field names.
- Column headers are created from field names/IDs, so changing field names may create new columns instead of updating existing ones.
Failed Deliveries
When a delivery fails, the error message in the Delivery Log tells you what went wrong. Here are the most common errors and how to fix them.
| Error Message | Cause | Fix |
|---|---|---|
| cURL error 28: Connection timed out | Google's servers didn't respond in time | Automatic retry will handle this. Check your server's outbound HTTPS connectivity. |
| HTTP 403 | Apps Script not deployed as web app, or "Who has access" not set to "Anyone" | Re-deploy the script: Deploy > Manage deployments > Edit > set access to "Anyone" > Deploy |
| HTTP 401 | Script authorization expired or was revoked | Open the Apps Script editor, run the doPost function manually to re-authorize |
| HTTP 500 | Error in the Apps Script code | Open the Apps Script editor, check the Executions log for error details |
| Script function not found | The script doesn't have a doPost function |
Verify the script code - the function must be named exactly doPost (case-sensitive) |
| Invalid URL | The Receiver URL is not a valid Google Apps Script URL | The URL must start with https://script.google.com/macros/s/ and end with /exec |
Google Apps Script Errors
These errors appear in the Google Apps Script editor's Executions log, not in SheetLinkWP.
Google Quotas & Limits
Google Apps Script has account-level quotas that SheetLinkWP cannot control. If you hit a quota, deliveries will fail until the quota resets (typically daily at midnight Pacific Time).
Key limits by account type:
| Resource | Consumer (Free) | Google Workspace |
|---|---|---|
| Script executions | 5,000/day | 20,000/day |
| Script runtime | 6 min/execution | 6 min/execution |
| Spreadsheet cells | 10 million | 10 million |
| API calls | 20,000/day | 100,000/day |
For the full and up-to-date list, see the official Google Apps Script quotas documentation.
Shared Quota
These limits are per Google account, not per sheet. If you have multiple sheets using Apps Script, they share the same quota.
Tip
For high-volume sites (1,000+ submissions/day), consider using a Google Workspace account which has significantly higher quotas.
Retry Queue
When a delivery fails, SheetLinkWP automatically queues it for retry. No data is lost.
- Retries happen every 15 minutes, up to 3 attempts
- After 3 failed attempts, the entry is marked as permanently failed
- View the retry queue at SheetLink > Retry Queue
- You can manually retry any failed entry from the Retry Queue page
- You can also manually retry individual entries from the Delivery Log
WP-Cron Note
The retry queue uses a WordPress cron job. If your site has low traffic, WP-Cron may not fire frequently enough. Consider setting up a real server cron job:
*/5 * * * * curl -s https://yoursite.com/wp-cron.php > /dev/null 2>&1
License Issues
These apply to the Agency Edition only. The Free Edition does not require license activation.
slkey_ followed by 32 hex characters). Lost the email? Sign into the customer portal - the key is visible on the Licenses tab.Free Edition
Free Edition works on any single WordPress site without registration or license activation. If you're using the Free Edition, you can ignore license-related errors entirely.
Portal Sign-in Issues
For issues signing into sheetlinkwp.com/account/, check the table below. See Portal Security for a full breakdown of the magic-link, 2FA, and IP lock flows.
| Symptom | Cause | Fix |
|---|---|---|
| "Check your inbox" but no email arrives | Delivery failed, address is on the suppression list, or mail is filtered as spam | Check spam. Wait 60 seconds, then try again (rate-limited to 5 per 15 min per email). If you previously hard-bounced, contact support to unblock. |
Redirected to /account/?err=expired |
Magic link is older than 15 minutes | Request a new link. Links are single-use and expire in 15 minutes. |
Redirected to /account/?err=used |
Link was already clicked | Request a new link. Each magic link works exactly once. |
Redirected to /account/?err=invalid |
Token was mangled in transit or the link is fake | Request a fresh link. Some email clients add tracking/rewriting that breaks the token - try copying the URL from the email source. |
401 needsReauth: true after a while |
IP lock is enabled and your IP changed (VPN, tethering, mobile network switch) | Sign in again with a fresh magic link, or switch IP lock to "Off" or "Relaxed" in the Security tab. |
401 needsMfa: true repeatedly |
Session is in pending-MFA state waiting for 2FA code | Enter the 6-digit code from your authenticator app, or use a backup code if the device is unavailable. |
401 needsReauth: true on cancel/disable |
Destructive action requires a fresh email re-auth code | Click the action, enter the 6-digit code we send to your email, then retry. |
Audit Log
Every portal action (sign-in, subscribe, cancel, 2FA change, site deactivation, etc.) is recorded with timestamp, IP, and user-agent. Records are retained for 90 days.
When to request the audit log:
- You believe your account was signed into without your knowledge.
- A subscription was cancelled that you don't recall cancelling.
- A client site was deactivated unexpectedly.
- 2FA was disabled without your knowledge.
Contact support with the approximate time window - we can pull the audit trail for your account and review it with you.
Getting Help
If the solutions above don't resolve your issue, we're happy to help.
Contact Support
support@sheetlinkwp.comWhen contacting support, please include:
- WordPress version and PHP version
- SheetLinkWP version (shown on the Dashboard page)
- The form plugin you're using (and its version)
- The error message from the Delivery Log (if applicable)
- Whether the Test button works
We typically respond within a few hours during business days.
Related Guides
Ready to Get Started?
Install SheetLink Forms and connect your first form in under 10 minutes.