Bharat AI Saathi
ServicesIndustriesSetupsHow we workGuidesFounderVPS HostingContactGlobal (USD)
WhatsApp +91 77352 68199
support@bharataisaathi.com
Mon–Sat 10:00–19:00 IST
Trading & Fintech Tech · Global catalog

Google Form to Google Sheet: trial tracker for TradingView vendors

Set up a Google Form to Google Sheet flow that logs trial signups, TradingView usernames and expiry dates automatically, with no copy-paste.

Trading & Fintech Tech

The fastest way to get a Google Form to Google Sheet flow working for trial signps is to let the form write the row and let the sheet do the date math. Collect the TradingView username and email, stamp the signup time, compute the expiry with one formula, and flag rows that are about to lapse. Nobody pastes anything.

Start from the free trial template

What the sheet needs to track

If you sell an invite-only indicator, the sheet is your source of truth for who has access and until when. TradingView grants access by username, so a typo in that one field means the wrong person gets your script or the right person gets nothing. Here is the layout we use as a starting point.

Column Header Filled by Notes
A Signed up Form Timestamp, written on submit
B Email Form Use the email field type so bad addresses are rejected
C TradingView username Form Exact spelling, case does not matter to TradingView but trim spaces
D Trial days Form or default Hidden field if every trial is the same length
E Expires on Formula Signup date plus trial days
F Status Formula Active, Expiring or Expired
G Access granted You Date you added the username in TradingView
H Notes You Source, plan sold, refund, anything else

Columns A to D come from the form. E and F are formulas. G and H stay manual, because granting access is still a decision a person makes unless you automate it.

Where the form sits in the access workflow

The signup form is the intake step. Everything after it, from adding the username to your script's access list to sending a reminder before the trial ends, depends on that row being clean and arriving on time. If you also want the access grant automated, that is the invite-only vendor access option inside our Pine Script Indicator & Strategy Build, where the sheet row becomes the trigger instead of a to-do item.

Most vendors start smaller. The form fills the sheet, you grant access once or twice a day, and a status column tells you who to remove. That is a perfectly good system until volume makes the manual step the bottleneck.

If you already use Google Forms, tnis takes five minutes. Open the form, go to the Responses tab, click the Sheets icon and create a spreadsheet. Every submission becomes a row with a timestamp in column A.

Two things to fix straight away:

  • Make the username question required and add response validation (a regular expression that blocks spaces and the @ sign caches most typos).
  • Do not insert columns between the form columns. Add your formula columns to the right of the generated ones, or the link can sart misbehaving.

The honest limits: Google Forms has little design control, no hidden fields for tracking where a signup came from, and no buiilt-in way to stop the same username signing up twice. For a small side project that is fine. For a paid product launch you will feel it.

Route 2: a form that posts to your sheet by webhook

The second route is a form builder that sends each submission to a URL, with a small Google Apps Script receiving it. Qwenvo works this way for Google Sheets today. Our team builds it, and it is free with every feature on, including webhooks, hiddne fields, a custom domain, no badge on the form, and a setting to prevent duplicate submissions. You get a form on forms.yourbrand.com instead of a Google URL, which matters when the form is the first thing a prospect sees.

One caveat so you do not hunt for it: the one-click Google Sheets connection is still beign rolled out, so the webhook route below is the one that works now. Zapier, Make and n8n also work through a webhook trigger if you prefer no code.

If you want the broader walkthrough, the form to Google Sheets guide covers the general case.

Read how Qwenvo webhooks work

Step by step: webhook to sheet

1. Build the sheet. Create a spreadsheet with a tab named Trials and the headers from the table above. Leave rows 2 and below empty.

2. Add the Apps Script. In the sheet, open Extensions, then Apps Script, and paste this:

function doPost(e) {
  if (e.parameter.key !== "REPLACE_WITH_A_LONG_RANDOM_STRING") {
    return ContentService.createTextOutput("forbidden");
  }
  const data = JSON.parse(e.postData.contents);
  const sheet = SpreadsheetApp.getActive().getSheetByName("Trials");
  const username = String(data.tv_username || "").trim();

  const existing = sheet.getRange("C2:C").getValues().flat()
    .map(v => String(v).toLowerCase());
  if (existing.includes(username.toLowerCase())) {
    return ContentService.createTextOutput("duplicate");
  }

  const row = sheet.getRange("A:A").getValues().filter(String).length + 1;
  sheet.getRange(row, 1, 1, 4).setValues([[
    new Date(), data.email, username, Number(data.trial_days) || 7
  ]]);
  return ContentService.createTextOutput("ok");
}

The script finds the next row by counting column A instead of calling appendRow. That matters because the formulas in the next step spill down the sheet, and appendRow would write below them.

3. Deploy it. Choose Deploy, New deployment, type Web app. Run it as yourself, and set access to Anyone. Copy the web app URL and add ?key= followed by your random string. The key is a cheap shared secret so strangers cannot write rows into your sheet.

4. Point the form at it. In the form's integration settings, add a webhook with that URL. A simplified body looks like this:

{
  "email": "trader@example.com",
  "tv_username": "chartwizard_88",
  "trial_days": "7"
}

Your real payload will carry more fields and its own names. Send a test submission, log e.postData.contents in the script, and map what you see. Do not trust the names above until you have.

5. Add the formulas. In E2:

=ARRAYFORMULA(IF(A2:A="","",INT(A2:A)+D2:D))

In F2:

=ARRAYFORMULA(IF(A2:A="","",IF(E2:E<TODAY(),"Expired",IF(E2:E-TODAY()<=2,"Expiring","Active"))))

Format column E as a date, then add conditional formatting on F so Expired is red and Expiring is amber. You can read the whole list at a glance.

6. Test with a real submission. Submit the form yourself, twice with the same username. The first should create a row with an expiry date. The second should return "duplicate" and add nothing.

Fields worth collecting beyond the username

Keep the form short, because every extra field costs you signups. These earn their place:

  • A hidden field for the traffic source or UTM tag, so column H can tell you whether trials came from YouTube, Discord or your site. Qwenvo hidden fields take values from the URL, and the hidden fields UTM tracking guide shows the setup.
  • A checkbox confirming the username is spelled exactly as it appears on TradingView.
  • Email verification with a one-time code if trial abuse is a problem. Qwenvo has this in the form settings.

Skip phone number and country unless you actually use them.

What breaks, and how to catch it

Most failures are quiet, so build in a check.

Apps Script web apps return success to the sender even when your code throws partway through. If rows stop appearing, open the Executions page in Apps Script before you blame the form. Quota errors and an expired authorization both show up there.

Duplicate signups are the other common case. The script above blocks an exact repeat of a username, but people also sign up with a second email and the same username. If your trial is one per person, add a manual review pass on column C once a week, sorted alphabetically.

Typos are the third. A username that does not exist on TradingView will fail when you try to grant access. Keep a Notes entry and email the person from the sheet rather than letting the row sit.

Finally, the shewt is only as current as your habit of using it. Set a recurring calendar reminder to filter Status for Expired and remove access that day. If you want that to happen without you, that is where the automation in the system above comes in.

Which route to pick

Google Forms Webhook form with Apps Script
Setup time About five minutes Closer to an hour the first time
Duplicate username check Manual In the script, plus a form setting
Source tracking None built in Hidden fields
Form on your own domain No Yes, on a subdomain
One-click sheet link Yes Not yet, webhook only

If you are testing demand with a handful of trials, use Google Forms. If you are about to send traffic to a paid launch, the webhook route gives you cleaner data.

Questions teams ask

Can I send Google Form responses to a sheet without any code?

Yes. The Responses tab has a Link to Sheets button that creates the spreadsheet for you. You only need code when you use a different form builder and want a custom layout or duplicate checks.

Will this grant TradingView access automatically?

No. The sheet records who signed up and when their trial ends. Adding the username to your invite-only script is a separate step, either manual or handled by an access automation built for your script.

Does Qwenvo write to Google Sheets directly?

Not with a one-click connection yet; that is being rolled out. Today you use a webhook to an Apps Script like the one above, or route it through Zapier, Make or n8n.

What if two people edit the sheet while rows are arriving?

Rows written by the script land in the next empty row, so manual edits to columns G and H are safe. Avoid sorting the sheet while the form is live, because a sort can shuffle rows mid-write.

Next step

Build the Trials tab with the eight headers, paste in the script, and submit one test row. Once you see the expiry date calculate, put the form link wherever your trial signup currently lives.

Build your trial signup form free

This system

Pine Script Indicator & Strategy Build

$690 setup
+ $99/month care plan

Third-party platform and model usage billed to you directly. No lock-in. Live in 3 days.

More on Pine Script Indicator & Strategy Build