Google Sheets Integration
Time to read: 5 minutes
The Google Sheets integration lets you link a Google Sheet as a data source for your credentials. Once connected, you can trigger a sync from the Credentials page — CertLister reads new rows from the sheet, maps columns to credential fields, and imports them using the same pipeline as CSV import.
Plan required: Basic or Pro
Part 1: Connect Your Google Sheet
Step 1 — Open the Portal Settings page
Go to Portal Settings in the left sidebar (or navigate directly to /integrations), then scroll to the Google Sheets section.
Step 2 — Click "Connect Google Sheets"
This opens Google's OAuth consent screen. You'll be asked to grant two permissions:
| Permission | What it's used for |
|---|---|
| View your Google Sheets spreadsheets | Read rows from the sheet you select |
| View metadata about your Google Drive files | List your Sheets files so you can pick one |
Both permissions are read-only. CertLister never modifies your spreadsheet or accesses any file other than the one you explicitly select.
Step 3 — Select a spreadsheet and tab
After connecting, a spreadsheet picker appears. Choose the Google Sheet you want to link, then select the specific tab (sheet tab) within it. Click Save to confirm.
CertLister stores which sheet and tab you've selected. On future syncs you won't be asked again unless you change sheets.
Part 2: Sync New Rows
Trigger a sync
Go to the Credentials page. A Sync Sheet button appears in the header (next to Import). Click it to open the sync dialog.
The sync dialog — 4 steps
Step 1 — Preview
CertLister reads your sheet from the last synced row onward and shows you:
- How many new rows were found
- How many rows were skipped (already imported)
- A preview table of the new rows
If the row count looks wrong, cancel and check your sheet for blank rows or header issues.
Step 2 — Column Mapping
Map each CertLister field to the matching column in your sheet. The left column shows the CertLister field name; the right column is a dropdown of your sheet's header row.
Required fields:
- Recipient name — the person receiving the credential
- Credential title — what the credential is for
Optional fields (map if your sheet has them):
- Recipient email, Issue date, Expiry date, Credential number, and any custom attributes
Column mapping is saved after your first sync. On subsequent syncs, Step 2 is skipped unless you've added new columns.
Step 3 — Import
Select the category to assign the imported credentials to. Click Import to run the sync.
CertLister processes each new row through the same validation as CSV import. Rows with missing required fields are skipped and counted as failed.
Step 4 — Complete
A summary shows how many credentials were created and how many failed. Click Done to close the dialog. Newly created credentials appear immediately in your Credentials list.
How sync tracking works
CertLister tracks which row it synced up to (the last row number). On the next sync it reads only rows after that point — so you never import duplicates. Only new rows are imported in V1; updates to existing rows are not detected.
The last synced date and time is shown on the Portal Settings page next to your linked sheet.
Change or disconnect your sheet
To link a different spreadsheet or tab, go to Portal Settings → Google Sheets and click Change Sheet. Select a new spreadsheet and tab, then save.
To disconnect entirely, click Disconnect. This removes the stored tokens and clears the linked sheet. Your existing credentials are not affected.
Preparing your Google Sheet
For the best results, structure your sheet like this:
- Row 1 — header row with column names (e.g. "Name", "Email", "Course", "Issue Date")
- Row 2 onward — one recipient per row
- No blank rows between data rows — blank rows are treated as the end of new data
- Dates — use a consistent format (e.g.
2026-03-15or15 Mar 2026); CertLister parses most common date formats
Troubleshooting
"Connect Google Sheets" button doesn't appear. The Google Sheets integration requires a Basic or Pro plan. If you're on the Free plan, upgrade first.
Google shows an "unverified app" warning. Click Advanced → Go to CertLister (unsafe) to proceed. This warning appears while CertLister's Google OAuth app is in the verification process. It is safe to continue.
Sync shows 0 new rows, but I added rows to the sheet. Check that new rows were added below the last row that was previously synced. If you inserted rows above previous data, they won't be detected. Also check for blank rows between old and new data — they stop the sync read early.
Some rows were imported with missing fields. Open the sync dialog, go to Step 2 (Column Mapping), and verify that each required field maps to the correct column header. If you renamed headers in your sheet, the mapping needs to be updated.
I reconnected Google but lost my sheet selection. Disconnecting clears the linked sheet. After reconnecting, go through the sheet picker again to re-select your spreadsheet and tab.
Frequently Asked Questions
Q: Can I sync from multiple sheets?
A: V1 supports one linked sheet per organization. To import from a different sheet, disconnect the current one and connect the new sheet — or use CSV Import for one-off batches from other sources.
Q: Does CertLister write anything back to my sheet?
A: No. The integration is read-only. CertLister never modifies, writes to, or deletes anything in your Google Sheet.
Q: Will existing credentials be updated if I change a row in my sheet?
A: Not in V1. Only new rows (added after the last sync) are imported. Changes to rows that were already synced are not detected or applied.
Q: What if my sheet has thousands of rows?
A: CertLister reads only from the last synced row onward, so performance is based on the number of new rows — not the total sheet size. Large historical sheets import fine on first sync.
Q: Can I use Google Forms as a source?
A: Yes, indirectly. Google Forms automatically appends responses to a linked Google Sheet. Connect that response sheet to CertLister, and each form submission becomes a credential after your next sync.