| 开发者 | sheetlink |
|---|---|
| 更新时间 | 2026年8月7日 08:52 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
drive.file scope: SheetLink can only ever see sheets it creates or that you pick - never the rest of your Drivesheetlink-forms.zip file./wp-content/plugins/sheetlink-forms/.No. SheetLink Forms works immediately after installation. No account, no registration, no license key required.
Not anymore. Connect your Google account in one click and SheetLink writes rows through Google's official Sheets API - it can create the sheet for you, or you pick an existing one with Google's own file picker. The classic Apps Script method remains fully supported for users who prefer a zero-account, script-only setup; both are free.
No. SheetLink Forms sends data directly from WordPress to Google Sheets - through your one-click connected Google account or via a free Google Apps Script. No third-party services needed.
No telemetry, no analytics beacons, no activation pings. Form submissions are sent only to Google (or, if you enable those mirrors, Microsoft, Airtable, or Notion) - never through SheetLink's servers. If you use the one-click Google or Microsoft connection, the sign-in handshake and periodic token renewal go through SheetLink's OAuth broker at sheetlinkwp.com; your form data never does. The optional Lead Scoring add-on (disabled by default, requires an API token and an explicit consent checkbox) is the only feature that sends submission data to SheetLink. See "External services" above for the full disclosure.
Elementor Pro Forms, Contact Form 7, Gravity Forms, WPForms, Fluent Forms, Formidable Forms, Ninja Forms, Forminator, Everest Forms, Beaver Builder, Divi, and WS Form.
SheetLink Forms generates the Google Apps Script for you. Click "Get Script" on any rule, copy the code, and paste it into your Google Sheet's Apps Script editor (Extensions > Apps Script). Then deploy it as a web app.
Yes. Create multiple sync rules, each pointing to a different Google Sheet (a different connected sheet, or a different Apps Script URL with the classic method).
Form submission data is sent directly from your WordPress server to Google over HTTPS: to sheets.googleapis.com (Google's official Sheets API) when you use the one-click connection, or to the Google Apps Script URL you configure with the classic method (only script.google.com and script.googleusercontent.com URLs are allowed as receivers). It never passes through SheetLink's servers. If - and only if - you enable the optional Lead Scoring add-on on the Analytics page, a copy of each submission is also sent over HTTPS to https://sheetlinkwp.com/api/sheetlinkwp/lead-score. Every other feature of the plugin runs locally on your WordPress server.
The submission is logged as failed and automatically retried up to 3 times (every 15 minutes). You can also retry manually from the Retry Queue page.
Yes. Zapier's base plan starts around $20/month and charges per task. SheetLink delivers unlimited form submissions from your WordPress site directly to Google Sheets at no cost - no per-task fees, no subscription, no registration. You own the entire pipeline.
Yes. WPForms is fully supported in the free core, both Pro and Lite. Every submission is mapped to your chosen Google Sheet with the fields you select.
Yes. Elementor Pro Forms are fully supported in the free core. Create a sync rule, map fields, connect Google in one click (or paste the generated Apps Script) - done.
Yes. Fluent Forms is fully supported in the free core, along with 11 other form plugins (Contact Form 7, WPForms, Gravity Forms, Elementor Pro, Formidable, Ninja Forms, Forminator, Everest Forms, Beaver Builder, Divi, WS Form).
Yes, with the WooCommerce Sync add-on. It pushes orders (created, completed, refunded), customers, and product catalogue changes (price, SKU, stock, status) to Google Sheets in real time. This is a premium feature; the free core covers form submissions.
Most CF7-to-Sheets or form-to-Sheets plugins handle one form type. SheetLink supports 12 form plugins from a single admin interface, includes an automatic retry queue that recovers failed deliveries, captures UTM and click-ID parameters for marketing attribution, runs local analytics on your own WordPress database, and ships a guided setup wizard that takes new installs from zero to a working Google Sheet in about three minutes.
Yes. The free core includes a network-admin overview of all subsites. Multisite-wide central management and the Agency Dashboard are available in the Agency Plus tier.
kzn0j, Ninja Forms name_1512... - so a column called "Email" matched nothing and the row was never written. Columns are now matched on the field's label as well, which is what you actually name your columns after. Gravity Forms and WPForms were unaffected because they happen to key by the label already.sheetlinkwp.com for licence activation and entitlement checks, instead of siteanswerai.com - a legacy domain the API happened to be hosted under. Nothing to do on your side, and older installs keep working because the old address forwards to the new one. If you listed siteanswerai.com as a data processor in your privacy notice, update it to sheetlinkwp.com.SheetLink -> Features -> Formula Guard). Sanitises every payload value before dispatch so spreadsheet formula-injection attempts (=HYPERLINK(...), =cmd|..., leading @/+/- etc.) cannot be embedded in form input. Defaults ON.SheetLink -> Meta Ads Conversions). Capture fbclid from Meta traffic and export completed conversions as a Meta-compliant CSV (hashed email/phone, SHA-256 normalized).SheetLink -> Microsoft Ads Conversions). Same pattern as Meta for msclkid traffic.SHEETLINK_ADS_TOKEN) now authorizes Google + Meta + Microsoft ads exports. Existing Google Ads token continues to work.SheetLink -> Meta CAPI). Sends a server-side conversion event to Meta on every successful delivery using a long-lived system-user token. Fires at hook priority 30 on sheetlink_after_delivery.SheetLink -> Email Digest). Daily or weekly summary email of submission volume and delivery health. Frequency configurable.SheetLink -> Webhook Health). Hourly cron pings every active rule's destination plus an in-admin "Test now" button. Surfaces a wp-admin notice if a destination has been failing for the last hour. Uses a new _sheetlink_ping=1 payload marker that newly-generated Apps Scripts handle silently; older deployed scripts ignore it.SheetLink -> Duplicates). SHA-1 hash store in transients with configurable key field + window. Modes: suppress (drop the duplicate) or reroute to a Duplicates sheet tab.SheetLink -> User Sync). New non-form source: user_registration. Dispatches a row whenever a WordPress user registers (configurable role filter, configurable fields).SheetLink -> Form Abandonment). Frontend partial-capture writes to a transient store on every keystroke; hourly cron sweeps abandoned sessions into a Abandoned sheet tab. Defaults OFF (privacy-sensitive).SheetLink -> ACF Sync). Register one source per enabled custom post type (acf_book, acf_event, ...) via the new sheetlink_register_dynamic_sources filter. Fires on post save with ACF field values flattened into the payload.SheetLink -> Airtable). Free, decoupled from the Integrations Bundle. Mirrors every successful delivery into an Airtable base via the official API. Fires at hook priority 40 on sheetlink_after_delivery.SheetLink -> Notion). Smart-typed property mapping infers Notion property types from field values (Number, Date, Email, URL, etc.). Fires at priority 45.SheetLink -> SMS Alerts). Per-rule condition gating + {field} placeholder rendering. Internal-key fields (_*) are excluded from rendering. Fires at priority 50 on sheetlink_after_delivery so external destinations fan out before notifications.SheetLink -> Vertical Packs). 6 industry-specific rule templates that pre-fill column maps, conditional routing rules, and CRM/destination configuration: real estate, legal intake, healthcare, education, e-commerce quote, agency client intake. One-click apply per pack.SheetLink -> White-Label. Clears the active profile's branding back to "SheetLink" defaults - recovery path when a customer accidentally saves a placeholder string into the menu label.plugin_name, menu_label, menu_icon, accent_color, or support_email now fall back to defaults at save time rather than persisting a blank that would render as an invisible sidebar entry. Applies to the legacy single-config and per-client profiles.crm_fanout slug, option keys, and license entitlement type are unchanged so no data migration is needed.SheetLink_Sync_Engine::dispatch() to a public static method. Required so non-form sources (user sync, form abandonment, ACF, vertical packs) can dispatch through the same pipeline without instantiating a second sync engine (which would double-register form hooks). Existing $instance->dispatch(...) calls continue to work.sheetlink_register_dynamic_sources applied by SheetLink_Settings::get_all_sources() so feature classes can register sources at runtime. Static sources cannot be clobbered.default_on flag per feature, so newly-shipped features can default-enable without a one-shot migration. Used by Formula Guard, Email Digest, Notion, Airtable, Webhook Health, SMS Alerts.sheetlink_payload_before_dispatch (10 ad-conversion columns -> 20 Formula Guard sanitisation -> 50 Duplicate Prevention) and sheetlink_after_delivery (30 Meta CAPI -> 40 Airtable -> 45 Notion -> 50 SMS)._sheetlink_ping=1 (webhook health check) and _updateMode=1 + _updateKey=<col> + _updateValue=<val> (upsert). Older deployed scripts ignore both harmlessly; new behavior requires regenerating + redeploying the script.sheetlink_deactivate(): sheetlink_email_digest_cron, sheetlink_form_abandonment_sweep, sheetlink_webhook_health_sweep. Existing sheetlink_retry_queue continues unchanged.sheetlink_payload_before_dispatch filter for extending the outbound payload after data enrichment but before delivery._wp_http_referer, embed post id) are filtered out. Add explicit field-map rows only when you want to pin specific fields to specific spreadsheet columns, skip fields, or reorder.names => {first_name, last_name}) is now addressable as names.first_name and names.last_name in explicit field maps. The flat names key still works and now produces a space-joined display value (was comma-imploded).email, subject, message) continue to work; rules built with the wizard's label keys should be re-saved or simply cleared to use the new pass-through default.Network Template admin page lets the license owner snapshot one site's rules and settings, publish it as the canonical fleet template via the customer portal, and pull-and-apply it on every other licensed site. Webhook URLs and per-site secrets are deliberately excluded from the template - each site keeps its own destination credentials. Settings are merged; rules are replaced wholesale with local URLs preserved by rule ID.sheetlinkwp_sheet_update no longer receive the plugin's own writes bouncing back. Eliminates the most common loop-risk scenario on the Two-Way Sync add-on.wp_sheetlink_consent_log table captures consent field name, submitted value, form source + ID, anonymized IP, User-Agent, and timestamp. Heuristically detects fields by name (consent / gdpr / privacy / terms / opt-in / accept / agree / newsletter). Surfaced in the WP privacy export and erasure flows so DSAR responses include the consent record alongside the submission data.contact/sync endpoint so duplicate emails update the existing contact rather than failing.wp_sheetlink_consent_log table is created on activation and via dbDelta on plugin upgrade. Existing installs auto-migrate on first admin page load.sheetlink_deliver_submission is dispatched once per rule per submission so add-ons can fan-out alongside the primary Google Sheets delivery.next_retry_at timestamp; the cron handler picks up only rows that are due. Retries now spread over a longer window so customers do not accumulate retry traffic during sustained Google-side outages.response_body and next_retry_at columns. Existing installs auto-migrate via dbDelta on first admin page load after upgrade - no manual intervention required.do_action( 'sheetlink_deliver_submission', $rule, $payload, $source ) in the sync-engine dispatch path. Listeners receive each rule that matched a submission, the assembled payload (post-enrichment), and the source plugin key. Fires regardless of Sheets primary delivery success so alt destinations are not gated by Google availability.SheetLink_Logger::log() and SheetLink_Retry_Queue::enqueue() accept an optional payload / response-body parameter respectively; both are stored truncated to 4KB. Backward compatible - existing call sites keep working without the new parameter.portal object with security state (totpEnabled, ipLockMode, notifyOnChange, hasWebhook) so the plugin can surface the current setup without a separate API call. Data is cached alongside entitlements (12-hour TTL, auto-refresh).sheetlinkwp_sheet_update action. Requires an active Two-Way Sync add-on.fanoutMaxDest entitlement as Advanced Routing; the pricing distinction is retained for marketing but both unlock the same delivery pathway.https://siteanswerai.com/api/sheetlinkwp/lead-score. Fully disclosed in the External Services section.plugins_loaded to init to resolve the "translation loading triggered too early" notice introduced in WordPress 6.7.uninstall.php now removes the analytics table and every v1.7 feature flag / config option when the plugin is deleted.