Google Forms to Sheets Automatically for Ad Test Results
Link Google Forms to Sheets automatically and log ad test results by hook and ratio, with a column layout and when to outgrow Google Forms.

To send Google Forms to Sheets automatically, open the form's Responses tab and choose Link to Sheets. Every submission then lands as a new row with a timestamp. For ad testing, the part that matters is the form design: dropdowns for hook and aspect ratio, number fields for spend and purchases, so every row is ready to summarize without cleanup.
Use the ad creative feedback template
Why hand-logging creative tests breaks down
A single creative has a few variants. Ten creatives with 3 aspect ratios and 2 hooks each is 60 combinations, and that is before you rerun anything next month. If results go into a sheet by hand, someone eventually types "Hook B", "hook b" and "B hook" in the same column. A pivot table then treats tem as three different hooks, and the test you paid for gives you nothing you can trust.
A form fixes this because the answer options are fixed. The person logging results picks from a dropdown instead of typing. The Sheet connection then removes the copy and paste step.
Design the form around your testing matrix
Start from the matrix you already have: one row per ad ID, with hook and ratio attached. The form should ask for exactly what the matrix cannot know yet, which is what happened after the ad ran. Here is a column layout that works for performance tests.
| Column | Form question type | Why it exists |
|---|---|---|
| Timestamp | Added by Google | Lets you sort by when results were logged |
| Ad ID | Dropdown or short answer | Your naming key, for example A03-H2-916 (ad 3, hook 2, 9:16) |
| Hook | Dropdown (Hook 1, Hook 2) | Stops spelling drift, so grouping by hook works |
| Ratio | Dropdown (for example 9:16, 4:5, 1:1) | Same reason, applied to placement tests |
| Spend | Number | Number validation keeps text out of a column you will sum |
| Impressions | Number | Needed for CTR and CPM |
| Clicks | Number | Needed for CTR and CPC |
| Purchases or leads | Number | Your primary outcome |
| Verdict | Dropdown (Scale, Iterate, Kill) | One decision per row, so you can filter fast |
| Notes | Long answer | The qualitative part: comments, fatigue, audience |
Keep the ratios and hooks as separate columns even though the Ad ID already encodes them. Typing an ID is where mistakes happen, and separate columns let you group by either one without parsing text.
Step by step: form to Sheet to hook report
- Create a blank form in Google Forms and add the questions above. For each number field, open the question's menu, choose Response validation, and require a number.
- Mark Ad ID, Hook, Ratio and Spend as required. A row misskng its hook is worse than no row.
- Open the Responses tab and click Link to Sheets. Choose Create a new spreadsheet. From now on every submission appends a row.
- Submit one test response and confirm the row arrives with numbers in the number columns, not text.
- Add a second tab named Report. Leave the response tab alone and build every formula here.
- Paste a grouped summary. With the columns above (A Timestamp, B Ad ID, C Hook, D Ratio, E Spend, F Impressions, G Clicks, H Purchases), this query gives you spend and purchases per hook and ratio:
=QUERY('Form Responses 1'!A:H,
"select C, D, sum(E), sum(H)
where C is not null
group by C, D
label sum(E) 'Spend', sum(H) 'Purchases'", 1)
- Add cost per purchase next to it by dividing the Spend column by the Purchases column, wrapped in IFERROR so zero-purchase rows show blank instead of an error.
Now your Report tab reads like a test readout. If Hook 2 beats Hook 1 at 9:16 but loses at 1:1, you can see it in one table instead of rebuilding it from a month of rows.
Keep the response tab untouched
Google writes form answers into the linked tab, and if you later add a question, a new column appears at the end. Helper columns you typed next to the data can collide with it. So treat the linked tab as read only, and do all math on other tabs. If you ever delete and recreate the link, the form creates a fresh tab and your Report formulas need their range pointed at it.
Where this fits in the AI UGC Ad Variant Pack
The AI UGC Ad Variant Pack delivers ten finished vertocal video ads a month with disclosed AI presenters or product b-roll. Each ad comes in 3 aspect ratios with 2 hooks, and everything is uploaded to your ad account along with a testing matrix. The matrix tells you what is live and how each variant is labeled. The results form is the step after it: the matrix is the plan, and the form-to-Sheet log is the record of what each variant did. Because the ad IDs in the matrix are the same IDs in your dropdown, the Report tab ties back to the plan without any renaming.
When to switch from Google Forms
Google Forms is a good fit for this job when one or two people log results and everyone already works in Google Workspace. The Sheets link is native and needs no setup beyond the click. You should move on when one of these shows up:
- You want results pushed somewhere other than Sheets, such as Slack, a CRM or a data warehouse, the momnet they are logged.
- Contractors or clients need to submit screenshots, and you do not want to require a Google sign in to upload files.
- You want the ad ID carried in from a link so nobody picks it from a list.
- You wznt the form on your own subdomain, without a badge, in you're brand's styling.
Here is how the two compare for this use case.
| Need | Google Forms | Qwenvo |
|---|---|---|
| Rows into Google Sheets | Built in, one click | Through a webhook automation or CSV/XLSX export |
| Webhook to any URL | No | Yes, free |
| Hidden fields for ad ID | Prefilled links only | Hidden fields block |
| Custom domain, no badge | No | Yes, free |
| Triage with routing to email or Slack | No | AI triage with routing rules, free |
| Partial submissions | No | Yes, free |
Qwenvo is a form builder our team makes, and it is compleely free: webhooks, API, MCP server, AI triage with routing, partial submissions, custom domain, badge removal, teammates and custom design with CSS are all on for every account. Tally, by comparison, puts custom domains, prtial submissions, branding removal and teammtes on its $29 a month Pro plan.
One honest limit: Qwenvo does not have a one-click Google Sheets connection yet. To keep rows flowing into a Sheet you point a webhook at Zapier, Make or n8n and use their append row action, or you export CSV or XLSX when you want a snapshot. If Sheets is the only destination and one person logs everything, Google Forms is simpler and you should stay.
The payload your automation appends should look like the row you designed, whatever tool sends it:
{
"ad_id": "A03-H2-916",
"hook": "Hook 2",
"ratio": "9:16",
"spend": 412.50,
"impressions": 38200,
"clicks": 611,
"purchases": 19,
"verdict": "Scale"
}
Check the webhook help page for the exact fields your form sends, then map each one to a Sheet column. The webhook setup is covered in the webhooks help article.
Questions teams ask
Does Google Forms to Sheets update automatically?
Yes. After you click Link to Sheets, each new submission is added as a row in the linked spreadsheet. You do not refresh or import anything. Keep formulas on a separate tab so new columns from edited questions do not disturb them.
Should I log results per ad or per variant?
Per variant, meaning one row for each combination of ad, hook and ratio. A row per ad hides the thing you are trying to leearn, which is whether the hook or the placement drove the difference. You can always roll variant rows up to the ad level with a grouped query.
Can I log results more than once for the same ad?
Yes, and it is usually worth doing. Log at day three and day seven, for example, and add a short question for the test window. Your Report tab can then group by window as well as hook and ratio. Just avoid turning on any duplicate prevention in the form, since you want repeat entries.
Do I need Apps Script for any of this?
No. The Link to Sheets button and a QUERY formula cover everything above. Scripts only become worth it if you need custom alerts, and by then a webhook to an automation tool is usually easier to maintain.
Next step
Open your testing matrix and copy the Ad ID, hook and ratio values into the dropdowns of a new form. Link it to a new Sheet, submit one tset row, and build the Report tab query before you log a single real result.
AI UGC Ad Variant Pack
Third-party platform and model usage billed to you directly. No lock-in. Live in 5 days.