Google Sheets + Telegram: video posts, tracked proof
Manually posting the same video to three platforms feels “quick” until you do it every day. Then you’re hunting links, re-copying captions, and wondering if you already posted that one (again).
Social media managers get stuck doing proof screenshots instead of strategy. A content creator feels it when consistency slips. And a small team lead just wants a simple calendar and reliable execution. This Sheets Telegram posting automation turns your Google Sheet into a posting engine and sends you a clean Telegram recap with live URLs.
You’ll see what the workflow does, what you need, how the moving parts fit together, and the common places these setups usually break.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Google Sheets + Telegram: video posts, tracked proof
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Format Drive Content", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Social Media Account IDs", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Google Sheets1", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code"]
n5@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send a text message"]
n8@{ icon: "mdi:cog", form: "rounded", label: "Upload a video", pos: "b", h: 48 }
n3 --> n0
n4 --> n3
n6 --> n4
n2 --> n7
n8 --> n2
n5 --> n6
n0 --> n1
n1 --> n8
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n5 trigger
class n3 decision
class n2,n6 database
class n4 code
classDef customIcon fill:none,stroke:none
class n4,n7 customIcon
The Challenge: Scheduled posting turns into daily busywork
A spreadsheet content calendar is supposed to make posting easier. In reality, it often becomes a second job: copy the caption, download the video, upload to Instagram, then LinkedIn, then TikTok, then update the sheet, then message the team with links. And when something fails, you don’t know which platform broke until you go looking. The worst part is the mental load. You’re not just posting, you’re tracking, proving, and double-checking so you don’t duplicate or miss a slot.
It adds up fast. Here’s where it breaks down in day-to-day operations.
- Posting to three platforms one-by-one can burn about an hour, especially when uploads crawl.
- Status tracking gets skipped when you’re rushed, which means you later post the same video twice.
- Proof of publishing lives in DMs and screenshots, not in a system you can trust.
- Even small caption changes get inconsistent because you’re copying and pasting across tabs.
The Fix: Schedule from Sheets, post automatically, get link proof in Telegram
This workflow turns your Google Sheet into the source of truth, then handles the boring part for you. Twice a day (by default), n8n checks your content calendar for rows marked “Listo para postear”. It compares the scheduled time in the sheet to the current run time, so only the items meant for that slot move forward. Next, it pulls the title, caption (Copy), and the Google Drive video link, then sends that payload to UploadPost to publish the same video to Instagram, LinkedIn, and TikTok in one go. After publishing, it updates the row status to “Posteado” so it won’t repeat. Finally, you get a Telegram message showing what posted and the live URLs you can click and share as proof.
The workflow starts on a schedule trigger at 9 AM and 9 PM (America/Santiago). From there, Google Sheets acts as the queue, Google Drive provides the file, and UploadPost publishes to multiple channels. Telegram closes the loop with a clear summary so you’re not guessing.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you publish one video per day to Instagram, LinkedIn, and TikTok. Manually, you’ll usually spend about 15 minutes per platform between uploading, captions, checks, and grabbing links, so roughly 45 minutes a day. With this workflow, you plan the post once in Google Sheets, then the run at 9 AM or 9 PM does the work while you’re doing something else. Your “active time” drops to a couple minutes to add a row and paste a Drive link, plus you get the Telegram proof automatically.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets to store your posting calendar.
- Google Drive to host the video files.
- UploadPost API credentials (get them from your UploadPost account dashboard).
- Telegram Bot token + chat ID (get the bot token from @BotFather, then your chat ID from Telegram).
Skill level: Intermediate. You’ll connect accounts, paste IDs/keys, and match your sheet columns to the workflow.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A scheduled run checks your calendar. The workflow runs twice daily (9 AM and 9 PM), then reads Google Sheets rows with the status set to “Listo para postear”.
The time gets normalized and validated. A small script converts the trigger time into the same Spanish date format your sheet uses, then an If check confirms the post is meant for that slot.
Your post payload is assembled. n8n collects the title, caption copy, and the Google Drive download URL, then adds the right account identifiers for each platform.
Publishing happens in one shot, then proof is sent. UploadPost pushes the video to Instagram, LinkedIn, and TikTok; Google Sheets is updated to “Posteado”; Telegram sends a success report with the platform URLs.
You can easily modify the schedule (more than two runs per day) or swap in different platforms supported by UploadPost based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the workflow to run on a schedule using the existing trigger configuration.
- Add and open Scheduled Start Pulse.
- Set the schedule rule to run at 9 and 21 hours using the trigger interval configuration already defined in the node.
- Keep the node connected so it flows to Retrieve Sheet Entries.
Step 2: Connect Google Sheets
Pull rows ready to post and later update their status in the same spreadsheet.
- Open Retrieve Sheet Entries and select the spreadsheet and sheet: set Document to
[YOUR_ID]and Sheet toVideo(gid=0). - Set the filter to match Status equals
Listo para postearand enable Return First Match. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Sheet Entries.
- Open Update Sheet Status and keep Operation set to
update. - In Update Sheet Status, map Status to
Posteadoand row_number to{{ $('Retrieve Sheet Entries').item.json.row_number }}. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Sheet Status.
Step 3: Set Up Processing and Time Matching
Convert the trigger time to the correct locale and only continue when it matches the scheduled time in the sheet.
- Open Format Time Script and keep the JavaScript as-is to generate
Readable timeandDay of weekin theAmerica/Santiagotimezone. - Open Time Match Check and ensure the condition compares
{{ $json['Readable time'] }}with{{ $('Retrieve Sheet Entries').item.json["Fecha.Hora"] }}using equals. - Confirm the flow is connected Retrieve Sheet Entries → Format Time Script → Time Match Check.
Step 4: Configure Upload and Notifications
Build the payload, append platform identifiers, upload the video, then send a Telegram summary.
- Open Assemble Drive Payload and confirm assignments for Title, Copy, Status, video_url, and row_number use the expressions from Retrieve Sheet Entries, such as
{{ $('Retrieve Sheet Entries').item.json.Title }}and{{ $('Retrieve Sheet Entries').item.json["Video Link"] }}. - In Append Account Identifiers, fill in facebook id (Page Id) and board id (Pinterest) as needed and keep Include Other Fields enabled.
- Open Multi-Channel Video Upload and set User to
JoseAI, Operation touploadVideo, and Platform toinstagram,linkedin, andtiktok. - Set Title to
{{ $('Append Account Identifiers').item.json.Title }}and Copy to{{ $('Append Account Identifiers').item.json.Copy }}in the multi-line title field:{{ $('Append Account Identifiers').item.json.Title }} {{ $('Append Account Identifiers').item.json.Copy }}. - Set Video to
{{ $('Append Account Identifiers').item.json.video_url }}. - Credential Required: Connect your uploadPostApi credentials in Multi-Channel Video Upload.
- Open Telegram Post Summary and set Chat ID to
[YOUR_ID]. - Keep the message body as-is, using the expression values from Multi-Channel Video Upload, such as
{{ $('Multi-Channel Video Upload').item.json.results[0].post_url }}. - Credential Required: Connect your telegramApi credentials in Telegram Post Summary.
- Verify the flow continues Time Match Check → Assemble Drive Payload → Append Account Identifiers → Multi-Channel Video Upload → Update Sheet Status → Telegram Post Summary.
results[0..2] for the selected platforms.Step 5: Test and Activate Your Workflow
Validate the end-to-end flow before turning it on for scheduled production use.
- Click Execute Workflow and check that Retrieve Sheet Entries returns a row with Status set to
Listo para postear. - Confirm Format Time Script outputs
Readable timeand that Time Match Check passes when the sheet time matches. - Verify Multi-Channel Video Upload produces results for the selected platforms and Update Sheet Status changes Status to
Posteadoin Google Sheets. - Check Telegram Post Summary delivers a message with platform URLs and success flags.
- When satisfied, toggle the workflow to Active so Scheduled Start Pulse runs automatically at the configured hours.
Watch Out For
- Google Sheets credentials can expire or need specific permissions. If things break, check the n8n Credentials screen and your Google OAuth consent/access first.
- If you’re using external uploads through UploadPost, processing times vary. Bump up timeouts in the HTTP-based upload step (or add a short wait) if downstream nodes fail on empty responses.
- The default caption/copy handling is generic. Bake your brand voice into the sheet (or add an AI rewrite step) early, otherwise you’ll be “fixing” captions forever.
Common Questions
About an hour if your accounts and spreadsheet are ready.
Yes, but you’ll want someone comfortable with connecting OAuth and pasting API keys. No coding is required, though you do need to match the sheet columns exactly.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in UploadPost API costs based on your plan and usage.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can change the run times in the Schedule Trigger and adjust the time formatting in the Format Time Script node if you don’t use the Spanish “16 de Octubre a las 9 am” style. If you want more platforms, update the Multi-Channel Video Upload node to include additional UploadPost-supported channels (like YouTube or Facebook). Common tweaks include adding an approval step before publishing (Telegram works well), posting only on certain days using an extra If condition, or swapping which accounts are used in the Append Account Identifiers node.
Usually it’s expired OAuth access or the wrong Google account connected in n8n. Reconnect Google Sheets in n8n Credentials, then confirm the spreadsheet ID (documentId) and sheet tab name match what the workflow expects. Also check sharing permissions if the sheet lives in a shared Drive.
On most n8n setups, this can comfortably handle a daily schedule for dozens of posts, and it scales mainly based on your UploadPost plan and how fast video uploads complete. If you self-host, there’s no execution cap from n8n itself; your server resources become the limit. On n8n Cloud, capacity depends on your monthly execution allowance. Practically, most teams keep it to a few queued posts per run so the workflow doesn’t sit uploading for hours.
Often, yes. n8n is easier to keep stable when you need conditions (time matching), multi-step data shaping, and “update the row so it never repeats” logic in the same flow. It also gives you self-hosting, which matters if you’re doing frequent scheduled checks. Zapier or Make can be quicker for a basic two-app handoff, but video uploads plus reporting usually get messy (and expensive) fast. If you’re deciding between tools, Talk to an automation expert and we’ll map it to your volume and channels.
Once this is live, your spreadsheet becomes the plan, and Telegram becomes the proof. Set it up, keep your calendar clean, and stop spending your best hours on posting chores.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.