SheetLink Forms beta

Shopify forms to Excel

A custom form in your theme posts straight into an Excel workbook - wholesale inquiries, quote requests, and stockist applications as rows, not notification emails.

Plenty of Shopify stores run their back office in Excel: the wholesale price list, the stockist tracker, the quote pipeline. Meanwhile the storefront's inquiry forms arrive as notification emails, and someone retypes them into the workbook. SheetLink Forms closes that gap - each form posts to a permanent endpoint, and every submission is inserted as a row in an Excel table on your OneDrive via Microsoft Graph. It is the same workbook your team already has open, not a CSV to import, and no other hosted form backend offers a native Excel Online destination (the usual alternative is Zapier or Power Automate billing per task). Google Sheets is available too, if that is where a given list lives.

One thing to be plain about up front: Shopify's native contact form ({% form 'contact' %}) posts to Shopify's own handler, so it cannot simply be pointed elsewhere. Sending submissions to SheetLink Forms means adding a custom form to your theme - a copy-paste job in a Custom Liquid block or a section file, not app development. The snippet below is the entire thing.

SheetLink Forms is free during beta and invite-gated - join the waitlist - and there is a live demo if you want to watch rows land first.

The best path for Shopify

The best path on Shopify is a custom HTML form added through a theme edit, with its action pointed at your endpoint (https://sheetlinkforms.com/f/{token}). The endpoint accepts the standard urlencoded post and 303-redirects to a thank-you page or a custom URL - your storefront needs no JavaScript for this to work.

Optionally, load the sl.js embed in theme.liquid before </body>. It binds any form whose action points at /f/, upgrades it to an AJAX submit with inline success text (no navigation away from the product page), auto-injects the honeypot, and - the part store owners running ads care about - captures utm_* plus gclid, wbraid, gbraid, fbclid, and msclkid from the landing URL and persists them in localStorage, so the click that produced an inquiry is still attached when the visitor submits three pages later.

<!-- Add via a "Custom Liquid" section block, or a snippet in Online Store -> Themes -> Edit code --> <form action="https://sheetlinkforms.com/f/slf_yourtoken" method="POST"> <input type="text" name="Name" required> <input type="email" name="Email" required> <textarea name="Message"></textarea> <!-- Honeypot: keep exactly as-is --> <input name="_slhp" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px"> <button type="submit">Send</button> </form> <!-- Optional: in theme.liquid before </body>, for AJAX submit + ad attribution --> <script src="https://sheetlinkforms.com/sl.js" data-token="slf_yourtoken"></script>

1. Connect a Microsoft account and pick your workbook

In the SheetLink Forms dashboard, connect Excel Online via OAuth - a Microsoft 365 account or a personal Microsoft account with OneDrive both work - then choose the workbook and the table inside it. The table's columns define the row shape, and column names are synced from the table itself, so set the table up with the columns you want (Name, Email, Message, and so on) before wiring the form. Prefer Google Sheets for some lists? That destination is one click away too. Either way you get a permanent endpoint at https://sheetlinkforms.com/f/{token}.

2. Add a Custom Liquid block to the page

In the theme editor, add a Custom Liquid section (or block) to your contact or inquiry page and paste the form from the snippet. If you prefer working in code, Online Store -> Themes -> Edit code and drop the same markup into a section or snippet file. Name the inputs after your Excel table's columns - matching is case and punctuation insensitive, and explicit per-field mapping is available in the dashboard if names differ.

3. Keep the honeypot input

The off-screen _slhp input is your first spam layer: shoppers never see it, and anything that fills it is marked spam outright. Every other suspicious signal - per-form and per-IP rate limits, content heuristics with a strictness dial, the timing signal, optional Cloudflare Turnstile - sends the submission to quarantine for one-click review instead, so a real wholesale inquiry is never silently dropped. Details in the docs.

4. Optionally load sl.js store-wide

Add the script tag to theme.liquid just before </body>. Because it binds any form whose action points at /f/, your custom form gets AJAX submission with inline success text - the visitor stays on the page - and ad attribution is captured and persisted across the whole browsing session. Skip it and the plain 303-redirect flow still works.

5. Test and open the workbook

Submit a test from your storefront, then open the workbook in Excel on the web or the desktop app - the row is already there, because it was inserted into the live OneDrive file, not exported to it. The dashboard's delivery log shows every attempt, and retries at 5 minutes, 30 minutes, and 2 hours cover Microsoft Graph hiccups - the full pipeline is on how it works.

FAQ

Can I forward Shopify's built-in contact form instead of replacing it?

Not directly - the native {% form 'contact' %} posts to Shopify's own handler, and SheetLink Forms receives only what posts to its endpoint. The honest path is the small theme edit above: swap the native form's markup for the custom form (or run both on different pages). It is a paste into a Custom Liquid block, not an app build.

Does this touch checkout, orders, or customer accounts?

No. This is a plain HTML form on your storefront posting to an external endpoint. Checkout, order processing, and customer accounts are completely untouched - SheetLink Forms never connects to your Shopify admin at all.

Do I need Microsoft 365, or does a free Microsoft account work?

Either. The Excel destination connects a Microsoft 365 account or a personal Microsoft account with OneDrive - the requirement is simply a workbook on OneDrive containing a table for the rows to land in. You pick the workbook and table in the dashboard when you connect.

Can my team keep working in the Excel desktop app?

Yes - that is the point of this destination. Rows are inserted into the workbook on OneDrive via Microsoft Graph, so they appear in Excel on the web and in the desktop app the moment they are delivered. There is no export/import cycle, and because it is a real workbook, Power BI can connect to it for live dashboards over your inquiry data.

I run Google and Meta ads - can I see which click produced each inquiry?

Yes, and this is rare in the category. With sl.js loaded, gclid, wbraid, gbraid, fbclid, and msclkid plus utm_source/medium/campaign/term/content are captured from the landing URL and persisted in localStorage, so they arrive as columns alongside the inquiry even when the visitor browsed several pages first.

What does it cost alongside my Shopify plan?

SheetLink Forms is free during beta (invite required - join the waitlist) and charges no per-submission fees, ever. Planned post-beta pricing, labeled as planned: a free tier around 50 submissions/month and a paid plan around $15-19/mo, unmetered. Nothing is installed from the Shopify App Store, so there is no app subscription either - and no Zapier or Power Automate task meter running under your lead flow.

Also on: Shopify · Squarespace · Wix · Plain HTML

Request an invite See the live demo