Quick Overview This workflow runs daily at 7am to back up Hostinger Reach contacts and segments into Google Sheets, upserting records into separate Contacts and Segments tabs and adding a last_synced_at timestamp for tracking. How it works Runs every day at 7am and sets the target Google Sheets URL plus the tab names for contacts and segments. Requests the first page of Hostinger Reach contacts and continues fetching additional pages until the last page is reached. Splits the returned contacts into individual records, maps key fields (including uuid and email), and adds a last_synced_at timestamp. Upserts the contact records into Google Sheets using uuid as the matching key. Fetches all Hostinger Reach segments, splits them into individual records, and adds a last_synced_at timestamp. Upserts the segment records into a separate Google Sheets tab using uuid as the matching key. Setup Add a Hostinger API credential for the Hostinger Reach nodes that list contacts and segments. Add a Google Sheets credential and ensure the Google Sheet is accessible to that account. Update the Google Sheets URL and the Contacts/Segments tab names in the configuration step.
Tags
Related workflows
See all Google Sheets→Generate and vet ad creative with OpenAI, Spendict, Google Sheets, and Slack
Quick overview This workflow collects a product brief via an n8n form, uses OpenAI to generate ad variants, gates each one with Spendict run/fix/kill scoring, auto-rewrites fixable ads, logs approved results to Google Sheets, and posts an approval count to Slack. How it works Receives a product brief from an n8n form submission with product, platform, audience, and desired variant count. Sends the brief to OpenAI Chat Completions to generate multiple ad variants (headline + primary text) in JSON. Splits the OpenAI response into individual variants and submits each one to Spendict’s /assess endpoint for a launch recommendation and score. Routes variants by Spendict verdict: “run” is accepted, “fix_first” is rewritten with the prioritized fixes and re-scored by Spendict, and “kill” is collected as rejected output. Combines accepted and auto-fixed variants and appends them as rows in Google Sheets with status, copy, platform, verdict, and score. Aggregates the logged approved variants and posts a summary message to Slack via an incoming webhook. Setup Add HTTP Header Auth credentials for OpenAI (Authorization: Bearer ) in both OpenAI HTTP Request steps. Add HTTP Header Auth credential
Audit YouTube video metadata changes with Google Sheets and Slack
Quick Overview This workflow runs daily to fetch all videos from a YouTube channel, compare key metadata fields against a prior snapshot stored in Google Sheets, log any differences, and optionally post a summary to Slack. How it works Runs every day at 08:00 on a schedule. Reads your YouTube channel’s uploads playlist and retrieves each video’s current title, description, tags, privacy status, and category. Loads the previous snapshot from Google Sheets and compares the tracked fields to detect added, removed/hidden, or changed metadata. When changes are found, appends each changed field (old value vs new value) to a Google Sheets change log. Clears and rewrites the snapshot in Google Sheets with the latest metadata so the next run compares against today’s baseline. Posts a summary to a Slack channel when changes are detected (or when alwaysNotify is enabled). Setup Add a YouTube (Google) OAuth2 credential and set your target channel ID in the audit options. Add a Google Sheets credential, set the spreadsheet ID, and ensure your spreadsheet has a Snapshot tab and a Change Log tab mapped in the Google Sheets steps. Add a Slack credential and set the target Slack channel ID for the
Unpublish expired YouTube videos using Google Sheets and Slack
Quick Overview This workflow runs daily and checks a Google Sheets embargo schedule for YouTube videos whose unpublish date has passed, then updates their privacy status on YouTube and logs the result back to the sheet while sending a recap (or “nothing due”) message to Slack. How it works Runs every day at 6am on a schedule trigger. Reads your embargo control spreadsheet from Google Sheets. Selects videos whose “Unpublish Date” is today or earlier (using a configured timezone), skips rows already marked Expired, and defaults the target privacy status to private when missing. For each due video, fetches the current video snippet and status from YouTube. If the video is not already at the target privacy status, updates the video on YouTube to private or unlisted while preserving its existing title and category. Updates the matching row in Google Sheets to Status = Expired and writes an “Unpublished At” timestamp, then posts a Slack recap of the processed videos. If no videos are due, posts a “nothing due” notice to the configured Slack channel. Setup Add a YouTube (Google) OAuth2 credential with permission to read and update videos, and select it in both YouTube steps. Add a Google