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.

Deterministic Code
VideoAskGoogle SheetsOperationsProductData SyncFeedback Triage
PromptCreate

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?
No. The workflow remembers the last respondent it processed for each form and only appends rows for people who replied after that point.
Do I get the actual video or just a transcript?
You get both. Each row includes the media link to the original video or audio reply and the transcript or text answer, so you can skim the sheet and click through to watch.
What if a respondent dropped off partway through the form?
Their partial answers still get logged, and the row is marked as dropped out so you can filter them separately from completed submissions.
Can I point this at more than one Google Sheet?
Yes. The most common setup is one sheet per team or per campaign. You can duplicate the workflow and set a different destination sheet on each copy.
Does this work for VideoAsks that collect text-only answers?
Yes. Text, audio, and video answers all get logged. Text answers appear in the transcript column and the media link is left blank.

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.