🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Telegram + Google Sheets: attendance logs without mess

Lisa Granqvist Partner Workflow Automation Expert

Attendance tracking gets messy fast when it lives in chat messages, paper notes, and “I’ll fix it later” spreadsheets. People forget to log, managers chase updates, and payroll ends up doing detective work instead of approving hours.

If you’re a team lead trying to keep timesheets honest, you already know the pain. Ops managers feel it at month-end. So do agency owners running small teams. This Telegram attendance logs automation gives you a clean record without turning you into the attendance police.

You’ll set up a Telegram bot that lets employees check in, check out, and view today’s status, while n8n writes clean rows to Google Sheets and blocks duplicates automatically.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Telegram + Google Sheets: attendance logs without mess

Why This Matters: Attendance Tracking Breaks Quietly

Attendance errors rarely look dramatic in the moment. It’s one “I forgot to check in,” one duplicate entry, one manager approving hours based on memory. Then it compounds. By the end of the week you’re sorting messages, scanning spreadsheets for duplicates, and trying to reconstruct what actually happened on Tuesday. That time doesn’t come back, and worse, the team loses trust when pay or hours feel inconsistent. Honestly, the worst part is the mental load: you’re always half-worried the sheet is wrong.

It adds up fast. Here’s where it breaks down in real teams.

  • Check-ins arrive in different formats, so someone has to “normalize” the sheet by hand.
  • Duplicates slip in when people tap the button twice or try again after a slow connection.
  • Unregistered users can submit bogus logs unless you validate employees every time.
  • Status questions (“Did I check out?”) interrupt managers all day and still don’t fix the data.

What You’ll Build: A Telegram Bot That Logs Clean Attendance Rows

This workflow turns Telegram into a simple attendance terminal your team will actually use. An employee opens your bot, taps Check-in or Check-out, and n8n immediately validates that they’re on your approved employee list in Google Sheets. If they’re not registered, the bot replies with a clear “not allowed” message and nothing gets logged. If they are registered, n8n checks today’s attendance history to prevent duplicates, then appends a clean row to your Attendance sheet. When someone asks for today’s status, the workflow looks up their entries, merges the results, formats a readable reply, and sends it back in Telegram. Everything stays in one place, ready for reporting.

The workflow starts with a Telegram message or button press. Google Sheets becomes the source of truth for employee validation and attendance logs. Finally, Telegram confirms what happened, so employees don’t guess and managers don’t have to.

What You’re Building

Expected Results

Say you have 15 employees. Without automation, even a “quick” process like DM’ing a manager and then updating a sheet can take about 2 minutes per check-in or check-out, plus another 30 minutes a week cleaning duplicates and chasing missing entries. That’s roughly 6 hours of admin work a week. With this workflow, employees tap once in Telegram and the bot confirms instantly, while Google Sheets updates in the background. You still review payroll, but you stop rebuilding the data.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Telegram Bot for check-in/check-out and status replies
  • Google Sheets to store employees and attendance rows
  • Telegram API token (get it from BotFather)

Skill level: Beginner. You’ll connect accounts, copy a Sheet template, and map a few fields.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A Telegram message or button tap triggers the workflow. The Telegram Update Trigger listens for /start, /menu, and menu selections, then routes the request to the right branch.

The workflow decides what the user is trying to do. Using simple “if/switch” logic, it separates check-in/check-out actions from “show me today’s status,” so you can keep the experience clean for employees.

Google Sheets validation and duplicate prevention happen next. n8n retrieves your Employee sheet to confirm the Telegram username (or ID) is registered, then looks up today’s attendance rows before it writes anything new.

Telegram confirms the result. If the entry is valid, the workflow appends a row to your Attendance sheet and replies with a confirmation message. If it’s a duplicate or an unregistered user, it replies with a clear warning instead.

You can easily modify the employee matching rules to use a different identifier (like employee ID) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Telegram Trigger

This workflow starts when a Telegram update (message or callback query) is received. The trigger fans out into multiple branches for menu handling and check-in/out actions.

  1. Add and open Telegram Update Trigger.
  2. Credential Required: Connect your telegramApi credentials.
  3. Set Updates to include message and callback_query.
  4. Confirm the execution flow: Telegram Update Trigger outputs to Branch Start Or Menu, Branch Attendance Menu, Branch Status Menu, and Check Callback Action in parallel.
Parallel branches mean that menu routing and callback handling can trigger at the same time. Ensure your Telegram bot is configured to accept both message and button callbacks.

Step 2: Connect Google Sheets

Google Sheets is used for employee lookups and attendance tracking. Multiple nodes share the same sheet, so connect credentials consistently.

  1. Open Retrieve Employee Sheet and set Document ID to your spreadsheet ID (replace [YOUR_ID]).
  2. In Retrieve Employee Sheet, set the filter lookupColumn to username_telegram and lookupValue to {{ $json.callback_query.from.username }}.
  3. Open Fetch Attendance Status and set filters for username_telegram to {{ $json.username_telegram }} and date to {{ $today.format('dd-MM-yyyy') }}.
  4. Open Lookup Duplicate Attendance and confirm filters include attendance_type with {{ $('Check Callback Action').item.json.callback_query.data }}.
  5. Open Append Attendance Row and confirm Operation is append with column mappings for date, time, timestamp_iso, and attendance_type.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials for all Google Sheets nodes (Retrieve Employee Sheet, Fetch Attendance Status, Lookup Duplicate Attendance, Retrieve Employee Sheet Alt, Append Attendance Row).
⚠️ Common Pitfall: If your sheet tab names don’t match Employee or Attendance, the filters won’t return data. Update the Sheet Name in each Google Sheets node.

Step 3: Set Up Processing and Branching Logic

Branching logic decides whether to show menus, check employee records, prevent duplicates, or return status messages.

  1. In Branch Start Or Menu, verify the regex condition uses {{ String($json.message?.text || $json.channel_post?.text || '') }} and matches ^/(start|menu)$.
  2. In Branch Attendance Menu and Branch Status Menu, confirm the conditions check {{ $json.callback_query?.data || '' }} for menu_attendance and menu_attendance_status.
  3. In Check Callback Action, keep Combine Operation as any to match checkin or checkout.
  4. Ensure Validate Employee Record and Validate Employee Alt use the boolean condition {{ $json.isNotEmpty() }} to gate access.
  5. Open Format Status Message and keep the function that builds the check-in/out status text exactly as provided.

Step 4: Configure Telegram Output Nodes

Telegram nodes deliver menus, confirmations, and error notices. This workflow includes multiple Telegram nodes, so apply the same credentials and confirm message mappings.

  1. In Deliver Main Options, set Chat ID to {{ $json.message?.chat?.id }} and keep the inline keyboard buttons for menu_attendance and menu_attendance_status.
  2. In Deliver Check In Out Menu, set Chat ID to {{ $json.callback_query.message.chat.id }} and keep buttons for checkin and checkout.
  3. In Send Status Reply, set Text to {{ $json.text }} and Chat ID to {{ $('Branch Status Menu').item.json.callback_query.message.chat.id }}.
  4. In Warn Duplicate Attendance, confirm the message uses =Your {{ $('Check Callback Action').item.json.callback_query.data}} has already been recorded ⚠️.
  5. In Confirm Attendance Logged, keep the conditional text expression {{ $('Check Callback Action').item.json.callback_query.data === 'checkin' ? 'Check-in recorded. ⏰' : 'Check-out recorded. 🏁' }}.
  6. Credential Required: Connect your telegramApi credentials for all Telegram nodes (Deliver Main Options, Deliver Check In Out Menu, Send Status Reply, Notify Not Employee, Notify Not Employee Alt, Warn Duplicate Attendance, Confirm Attendance Logged).
Keep Notify Not Employee and Notify Not Employee Alt enabled to gracefully handle unregistered Telegram users.

Step 5: Test and Activate Your Workflow

Run a controlled test to validate menu routing, attendance logging, and duplicate detection before turning the workflow on.

  1. Click Execute Workflow and send /start to your Telegram bot to trigger Deliver Main Options.
  2. Tap 🕘 Check In/Out and confirm Deliver Check In Out Menu appears.
  3. Perform a checkin and verify Append Attendance Row writes to the Attendance sheet and Confirm Attendance Logged sends a message.
  4. Use the status menu option and confirm Send Status Reply displays the formatted summary from Format Status Message.
  5. When everything works as expected, toggle the workflow to Active.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Telegram credentials can expire or be configured with the wrong bot token. If replies stop working, check the Telegram credential in n8n first and confirm it matches the token from BotFather.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Google Sheets lookups fail quietly when the sheet name, column headers, or sharing permissions change. Verify the template tabs (Employee/Attendance) and re-check the Google Sheets credential access.

Quick Answers

What’s the setup time for this Telegram attendance logs automation?

About 30 minutes if your bot and Sheet are ready.

Is coding required for this attendance logging outcome?

No. You’ll mostly connect Telegram and Google Sheets, then map a few fields in n8n.

Is n8n free to use for this Telegram attendance logs workflow?

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 OpenAI API costs if you keep the AI nodes enabled, which are usually small for short messages.

Where can I host n8n to run this automation?

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.

Can I modify this Telegram attendance logs workflow for different use cases?

Yes, and it’s common. You can change how employees are matched by editing the Google Sheets “Retrieve Employee Sheet” lookup and the “Validate Employee Record” / “Validate Employee Alt” checks (for example, match on employee ID instead of Telegram username). People also customize the “Append Attendance Row” fields to include location, project code, or shift name, and tweak “Format Status Message” to match the wording your team expects.

Why is my Telegram connection failing in this workflow?

Usually it’s the bot token. Regenerate or re-copy the token from BotFather and update your Telegram credentials in n8n, then re-test the trigger. Also confirm the bot is the one employees are messaging (teams sometimes set up two bots and wire the wrong one). If it works sometimes and fails during busy periods, Telegram rate limits can be the culprit, so reduce noisy replies and avoid sending multiple messages per tap.

What volume can this Telegram attendance logs workflow process?

For most small teams, it’s effectively “as much as you need.” On n8n Cloud, your monthly execution limit depends on the plan, and each check-in/check-out is typically one execution. If you self-host, there’s no platform execution cap, but your server and Google Sheets API limits still matter. Practically, teams can handle dozens of employees logging twice a day without issues, especially if your Sheet lookups are optimized and you keep the bot replies simple.

Is this Telegram attendance logs automation better than using Zapier or Make?

Often, yes, if you care about validation and duplicates. This workflow relies on branching logic (menu routing, employee checks, duplicate lookups), and n8n handles that kind of “if this, then that, otherwise reply” flow cleanly. You also get the option to self-host for unlimited executions, which matters when every check-in is an execution. Zapier or Make can be fine for a simple “Telegram message → add row,” but once you add status lookups and guardrails, costs and complexity tend to creep up. If you want a second opinion for your exact team size and process, Talk to an automation expert.

Once this is running, attendance becomes a quick habit instead of a weekly repair job. Your sheet stays clean, your team gets instant confirmation, and payroll stops guessing.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal