Log every VideoAsk response to a Google Sheet
Mirror every new VideoAsk answer into a searchable Google Sheet, one row per question, so your team never has to open the VideoAsk inbox to read replies.
Build me a code workflow that runs on a cron every hour and mirrors every new VideoAsk response into a Google Sheet response log, so my team has a searchable, exportable record of every reply without having to open the VideoAsk inbox.
Trigger: cron, hourly.
Inputs I want to configure on the workflow: the destination Google spreadsheet ID, the response-log tab name (default "VideoAsk Responses"), and a small metadata tab name (default "_sync_state") used to track the last processed contact per form.
Steps:
1. Call VideoAsk List Forms to enumerate every form in the authenticated organization. Paginate with limit and offset until fewer than limit items come back.
2. Read the _sync_state tab in the target Google Sheet using Get Values. This tab holds two columns: form_id and last_contact_id (the id of the most recent contact we appended for that form). Build an in-memory map from those rows.
3. For each form, call VideoAsk List Form Contacts with include_answers=true and paginate with limit and offset. Stop paginating once you hit the last_contact_id from the state map for that form (or run out of pages if this is the first sync). Sort contacts oldest to newest before flattening so the state map ends up on the newest one.
4. For each new contact, flatten one row per answer with these columns in order: sync_timestamp, form_id, form_title, contact_id, contact_name, contact_email, contact_status (completed or dropped_out), question_id, question_title, answer_type, transcription (or text answer), media_url, answered_at.
5. If there are new rows, call Google Sheets Append Values on the response-log tab with valueInputOption USER_ENTERED. On the very first run (empty tab), prepend a header row with the column names above.
6. Update the _sync_state tab with the new last_contact_id per form. Use Append Values plus a dedupe read, or clear + rewrite the small state tab. Whatever is simplest and idempotent.
Requirements: this is a deterministic pipeline, no LLM summarization or scoring. Handle VideoAsk 429s with exponential backoff. Handle Google Sheets 429/503 with exponential backoff. If a form has zero new contacts, skip it silently. Log a one-line summary at the end: total forms scanned, total new contacts, total rows appended.
Additional information
What does this prompt do?
- Checks all of your VideoAsk forms once an hour and pulls in every new respondent since the last run.
- Writes one row per answer to a Google Sheet, with the question, the transcript or text reply, the media link, the respondent's name and email, and whether they finished or dropped out.
- Remembers where it left off for each form, so re-runs never create duplicate rows.
- Gives you an exportable, filterable log of every video, audio, and text answer without touching the VideoAsk dashboard.
What do I need to use this?
- A VideoAsk account with the forms you want to track.
- A Google account with edit access to the Google Sheet you want responses written to.
- A destination sheet and tab name ready (a blank tab works fine, the workflow will add the header row on the first run).
How can I customize it?
- Change the schedule. Hourly is the default, but you can run every 15 minutes for near-real-time or once a day for a lighter log.
- Filter which forms sync. Skip drafts or internal forms by matching on the form title.
- Adjust the columns. Add tags, drop columns you never look at, or split completed and dropped-out responses onto separate tabs.
Frequently asked questions
Will this create duplicate rows if it runs while I'm still receiving responses?
Do I get the actual video or just a transcript?
What if a respondent dropped off partway through the form?
Can I point this at more than one Google Sheet?
Does this work for VideoAsks that collect text-only answers?
Related templates
Stop copying VideoAsk replies into a spreadsheet by hand.
Connect VideoAsk and Google Sheets once, and Geni keeps a full response log up to date for you every hour.