Sheet Mailer

Support

Setup, answers, and fixes for the things that actually go wrong — written from the failures that came up building it, not a generic help template.

Fastest route for anything not covered here: email aryasoftechco@gmail.com. If a field came out empty when capturing a post, use the Report broken extraction button in the capture form first — it copies a description of the page's shape to your clipboard, with none of the post's content in it. Pasting that into the email usually makes the cause obvious immediately.

Setting it up

The settings page opens by itself when you install. There are six numbered sections, and only the first two are compulsory — everything else has a working default.

  1. Try it with no account first, if you like. Tick Demo mode at the top. The whole flow — capture, template, preview, dry run, send — runs locally. Rows and "sent" mail stay in your browser and nothing is emailed to anyone.
  2. Google account. Sign in and approve the consent screen.
  3. Your Sheet. Paste the link and press Test connection. Missing columns are created on first write, column order does not matter because everything is matched by header name, and your own extra columns are left untouched.
  4. Roles. One per line. These are the tags you pick when capturing, and they decide which résumé gets attached. Replace the defaults with the roles you actually apply for.
  5. Sending limits. Daily cap 50 and a 1.2 second gap are sensible starting points. Raise them slowly.
  6. Résumé per role and the feed button are both optional and both off by default.

Questions that come up

Do I need a Google Cloud project, an API key, or anything technical?

No. You need a Google account and a spreadsheet. The extension carries its own credentials; you never see or create one.

Why does Google say "this app isn't verified"?

Because it has not completed Google's verification review yet. Expand Advanced and continue. It is a statement about the review process, not about anything being wrong with your account or the extension. Note that while verification is pending, sign-in only works for addresses that have been added as testers — if you get access_denied, email us and ask to be added.

Will this get my LinkedIn account restricted?

We cannot promise it will not, and we would rather say so than reassure you. The extension reads only a post you have opened and explicitly asked it to read — no crawling, no scrolling, no background reads, no calls to LinkedIn's APIs — which is a very different pattern from bulk scraping. But LinkedIn's User Agreement restricts automated data collection, and any enforcement lands on your account rather than ours. The terms cover this.

How many emails a day can I actually send?

Gmail's own limit is 500 a day on a consumer account and 2,000 on Workspace — but that is not your real constraint. Deliverability is. A few hundred near-identical cold emails from a consumer address is precisely the pattern spam filters are tuned for, and a run can look perfectly successful while every message lands in spam. Start at 10 a day, watch for replies rather than for errors, and raise it slowly. The cap defaults to 50 for this reason.

Should I attach my résumé to every email?

Usually not, which is why it is off by default. An attachment on every one of a few hundred cold emails is a strong spam signal. Linking a copy in the body generally delivers better. Turn it on when the file itself genuinely needs to arrive.

What happens if I close the tab in the middle of a send?

Nothing is lost and nothing is sent twice. Each row's outcome is written to your sheet as it happens, and pressing Send again re-reads the sheet and skips anything already marked SENT.

Can I use my own columns in the template?

Yes. Any column in your sheet is available as a placeholder, matched by header name — {{Person}}, {{role}}, {{JD}}, {{email}}, {{Post URL}}, {{Person LinkedIn}}, {{Captured At}}, and anything you add yourself. The three the sender writes during a run — Status, Sent At and Error — are deliberately excluded, because they are empty at the moment the message is built.

Where is my data? Can you see it?

No. There is no server. Everything travels from your browser to Google's APIs as you, and your rows live in your own spreadsheet. See the privacy policy, which lists every endpoint contacted and why.

When something is broken

The capture form opened but every field is empty

LinkedIn changed its page structure and the extension picked the wrong element. Fill the fields in by hand — the form is editable and the row will save perfectly well — and then press Report broken extraction and email us the clipboard contents. That report describes the page's shape without including any of the post's text, and it is what lets a fix ship quickly.

The "+ Sheet" button is not appearing in the feed

Three things to check, in order. In settings §6, confirm the toggle is on and that access to linkedin.com was granted when it asked — the section reports its own state. Then reload the LinkedIn tab, since the script attaches on page load. If you have just reinstalled or updated the extension, reload the tab again: the registration is re-established when the extension starts, and an already-open tab will not have it.

Sign-in fails with redirect_uri_mismatch

This is a configuration problem on our side rather than yours, so please report it — tell us which browser you are using. It means the address the browser was sent back to has not been registered with Google. It is browser-specific, and Firefox is the usual culprit, because Firefox builds a different return address for every installation.

Sign-in fails with access_denied

Your address has not been added as a tester while verification is pending. Email us and ask. There is a hard limit of 100 testers, so this is temporary by nature rather than a policy.

A row will not send and the campaign page says it is blocked

That is intentional, and the reason is given in the preflight table next to the row number: no valid email, no role tag, or no résumé mapped for that role while attachments are on. Fix it in the sheet or in settings and press Read the sheet again. The run deliberately refuses to start rather than send a half-finished message.

Mail is sending but everything lands in spam

Slow down, make the messages less identical, and drop the attachment. Send fewer than ten a day for the first week. A sending reputation is built slowly and damaged quickly, and the extension cannot tell you this is happening — every row will read SENT, because Gmail accepted the message. Judge by replies, not by statuses.

Reporting something, usefully

Email aryasoftechco@gmail.com. What makes a report actionable:

Please do not send screenshots containing other people's contact details, and do not send your spreadsheet. Neither is needed, and we would rather not receive them.