Excel Online Setup

Send WordPress form submissions to an Excel Online workbook with SheetLink Forms. Mirror alongside Google Sheets for free.

Available on: Free (mirror only) Pro Agency AI Pack Excel as a primary destination needs the AI Pack →

Overview

SheetLink Forms writes form submissions straight into an Excel Online workbook using the Microsoft Graph API. There is no Zapier step and no file download in the middle - rows are appended to a table in your workbook as submissions arrive.

There are two ways to use it, and the difference matters for both setup and billing:

  • Mirror mode (free) - the rule still delivers to Google Sheets as its primary destination, and a copy of each row is inserted into Excel afterwards. Enable it with the Mirror this rule to Excel checkbox.
  • Primary mode (paid) - Excel is the destination. No Google account is involved at all. This requires the AI Pack (which includes Primary Destinations); without it, delivery fails with a 402 and the row is not retried.

Both modes use the same connection, workbook and field mapping, so you can start with the free mirror and switch later without redoing setup.

Requirements: you need a Microsoft 365 work or school account

This is the single most important thing on the page, so it is worth being blunt about it.

Excel Online delivery requires a Microsoft 365 work or school account on a tenant with a SharePoint Online licence. Personal Microsoft accounts - Outlook.com, Hotmail, Live.com, or consumer OneDrive - cannot be used, no matter which SheetLink plan you are on.

This is a Microsoft platform limitation rather than a SheetLink one. Microsoft's Excel REST APIs only operate on files hosted on the business platform, so the endpoints SheetLink needs simply do not exist for consumer drives.

The failure is worth recognising because it looks like success right up until the last step. On a personal account you will be able to sign in, the connection will report Microsoft account connected, and the workbook picker will happily list your .xlsx files. Selecting a workbook then fails with:

itemNotFound: Item does not exist

The file does exist - SheetLink listed it a moment earlier from the same account. The error appears at exactly the point where requests move from drive endpoints (which work for consumer accounts) to workbook endpoints (which do not).

A quick way to tell the two apart: consumer drive item IDs look like DRIVEID!123, while business drives use GUID-style IDs.

If your tenant is a work account but you see BadRequest: Tenant does not have a SPO license, the account is on a Microsoft 365 plan without SharePoint Online. A Business Basic seat or higher resolves it.

Step 1: Prepare the workbook

SheetLink appends rows to a table inside your workbook, not to a bare worksheet. If the workbook has no table, the picker in step 3 will show nothing to select.

  1. Create or open an .xlsx workbook in OneDrive for Business or a SharePoint document library.
  2. Enter your column headers in the first row - for example Name, Email, Message, Submitted.
  3. Select those header cells along with one empty row beneath them.
  4. Choose Insert → Table and make sure My table has headers is ticked.
  5. Give the table a recognisable name (Table Design → Table Name). Several tables in one workbook are fine; you pick one per rule.

Columns must already exist. Unlike the Google Sheets destination, which seeds its header row from the form on first submission, Excel does not create columns for you. Any form field you want stored needs a matching column in the table before submissions arrive.

New rows are appended below the existing rows in the table, so anything already in the workbook is left alone.

Step 2: Connect your Microsoft account

  1. In WordPress, go to SheetLink Forms → Destinations → Excel Online.
  2. Under Microsoft 365 connection, click Connect Excel.
  3. Sign in with your work or school account and accept the permission prompt.
  4. You are returned to the Excel Online settings page, which now shows Connected as: followed by your account.

The connection is per WordPress site. On an agency licence each client site connects its own account.

Reconnect refreshes the connection in place and Disconnect removes it. Disconnecting preserves your workbook, table and field mappings, so reconnecting later does not mean starting over.

If step 3 shows "Approval required" instead of a sign-in prompt, your Microsoft 365 organization requires an administrator to approve apps before anyone can connect them. Expand Seeing "Approval required" instead of a sign-in screen? on the Excel Online page and send the link to whoever administers your tenant. They approve SheetLink Forms once for the whole organization, and everyone connects normally after that - see the troubleshooting section below.

Step 3: Choose the workbook and table

  1. In the Workbook & table panel, pick your file from the Workbook dropdown. It lists .xlsx files from your OneDrive and files shared with you.
  2. Choose the table you created in step 1.
  3. Click Save workbook + table. The Columns list fills in with the table's headers.

If the dropdown is empty, use the Refresh button next to it. On a newly provisioned OneDrive for Business, Microsoft's search index can take several hours to build; SheetLink falls back to enumerating the drive root so the picker still works during that window. That fallback only sees files in the root of the drive, so if your workbook lives in a subfolder and the index is still building, move it to the root temporarily or wait for indexing to finish.

Step 4: Map your form fields to columns

The Field mapping panel pairs each form field key with a column in the table.

  1. Click Add mapping row.
  2. Enter the Form field key exactly as your form plugin emits it - the same key you would use in a Google Sheets mapping.
  3. Pick the matching Excel column from the dropdown, or leave it as - none - to skip that field.
  4. Click Save mapping.

Unmapped columns are left empty rather than being filled with anything invented, and fields with no column are simply not sent.

Use Test delivery to write a sample row without submitting the form. If the row appears at the bottom of your table, the setup is complete. Send Test also exercises the Excel mirror, so a mirror that is enabled but misconfigured reports the problem rather than passing silently.

Mirror mode vs primary mode

To mirror to Excel (free): tick Mirror this rule to Excel on the Excel Online page. The rule keeps delivering to its existing destination, and a row is inserted into Excel after each successful delivery.

To make Excel the primary destination (add-on required): open SheetLink Forms → Sync Rules, edit the rule, and set its destination to Excel Online (Microsoft 365). Google is then out of the path entirely.

One behavioural difference is worth planning around. A primary Excel delivery that fails for a transient reason is queued and retried. A mirror write is fire-and-forget - the primary destination owns the retry, so a failed mirror row is logged but not re-attempted. If Excel is the copy you actually rely on, make it the primary destination rather than a mirror.

Retries and reliability

When Excel is the primary destination, SheetLink distinguishes failures worth retrying from ones that will never succeed:

  • Retried - 429 throttling and 5xx server errors, plus workbook lock conflicts (423 / accessConflict) that happen when someone has the file open. Microsoft's Retry-After header is honoured rather than guessed at.
  • Not retried - 402 (the Primary Destinations add-on is not active), 401/403 (the connection needs re-authorising) and 404 (the workbook or table no longer exists). Retrying these would only repeat the same failure.

Writes to a single workbook are serialised, so two submissions arriving at once cannot collide and overwrite each other's row.

Microsoft expires a refresh token after roughly 90 days of inactivity. A low-traffic site could therefore lose its connection purely through lack of use, so SheetLink runs a weekly keepalive to hold it open. You do not need to configure this, but it is why the connection survives a quiet period.

Failed deliveries surface as an admin notice that clears on the next success, and each attempt is recorded in the Sync Log with its destination.

Troubleshooting

Microsoft says "Approval required" instead of showing a sign-in screen. Your organization's Microsoft 365 tenant requires an administrator to approve an app before its users can consent to it. This is a Microsoft tenant policy: nothing in WordPress, and no change to your SheetLink licence, will clear it. On the Excel Online page, expand Seeing "Approval required" instead of a sign-in screen? and send the link shown there to whoever administers your Microsoft 365 tenant. They sign in once and approve SheetLink Forms for the whole organization; afterwards every user connects without a prompt. The administrator needs no SheetLink licence and no login on your WordPress site, and the approval covers only the permission the plugin already requests - reading and writing the workbooks the signed-in user picks. It can be revoked at any time in the Microsoft Entra admin center under Enterprise applications.

The workbook list is empty. Press Refresh. On a brand-new OneDrive for Business the search index may still be building; the fallback only enumerates the drive root, so a workbook in a subfolder may not appear until indexing completes.

Selecting a workbook fails with itemNotFound. The account is a personal Microsoft account. Excel Online delivery needs a work or school account - see the requirements section above. Connecting and listing files succeeding does not indicate the account will work.

BadRequest: Tenant does not have a SPO license. The work account's tenant has no SharePoint Online licence, so Graph has no business drive to read. A Microsoft 365 Business Basic seat or higher resolves it.

Delivery fails with 402. Excel is set as the rule's primary destination but the Primary Destinations add-on is not active on this site. Either activate the add-on on the License page or switch the rule back to mirror mode, which is free.

Delivery fails with 401 or 403. The connection has lapsed or its permissions were revoked. Click Reconnect on the Excel Online page. Your mappings are preserved.

Rows arrive with blank columns. The form field key in the mapping does not match what the form actually sends. Check the exact key in the Sync Log entry for a recent submission and correct the mapping.

Some fields never arrive. Excel does not create columns automatically. Add the missing column to the table, then remap the field.

The table picker shows nothing. The workbook has no table in it. Select your headers in Excel and use Insert → Table, as described in step 1.

Still stuck? See general troubleshooting or get in touch from the contact page.

Ready to Get Started?

Install SheetLink Forms and connect your first form in under 10 minutes.