Telegram to Google Sheets, business cards logged fast
You snap a photo of a business card, someone drops it into chat, and then… it sits there. Or worse, it gets retyped later with missing digits, swapped names, and the classic “I’ll add it tomorrow.” This is Telegram Sheets logging pain in its purest form.
Sales reps feel it after events. A marketing coordinator feels it when lead lists are due. And ops teams get stuck cleaning the mess once those “quick notes” become your CRM source of truth.
This workflow turns a business card photo sent in Telegram into a structured Google Sheets row automatically. You’ll see what it does, what you need, and how it saves hours of tedious retyping.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Telegram to Google Sheets, business cards logged fast
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "Add to Google Sheet", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Input Type", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "AI Vision Agent", pos: "b", h: 48 }
n3@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Vision Model", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "Ingredient Parser", pos: "b", h: 48 }
n5["<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/>Telegram Trigger"]
n2 --> n0
n1 --> n2
n5 --> n1
n4 -.-> n2
n3 -.-> n2
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 n2,n4 ai
class n3 aiModel
class n1 decision
class n0 database
classDef customIcon fill:none,stroke:none
class n5 customIcon
The Problem: Business Cards Pile Up in Chat
Business cards are tiny data-entry traps. You collect a stack at a conference, someone shares photos in Telegram, and then the real work starts: typing names, guessing emails, formatting phone numbers, and trying to remember which company belonged to which person. It sounds small until you do it 30 times in a row. Then it’s an hour gone, and you still don’t fully trust the sheet. The worst part is the mental load: you can’t delegate it cleanly, and you can’t automate it with basic “form” tools because the data is trapped in an image.
It adds up fast. Here’s where it breaks down in real life.
- Typing a single business card into a sheet usually takes about 5 minutes when you include double-checking for mistakes.
- Photos in Telegram don’t create usable data, so your “lead capture” turns into a backlog that never feels urgent until it’s too late.
- Small formatting differences (mobile vs. phone, missing country codes, weird spacing) make the list hard to sort, dedupe, or import.
- When two people enter the same contact differently, follow-ups slip and reporting becomes unreliable.
The Solution: Telegram → AI Extraction → Google Sheets
This n8n workflow starts in the place your team already uses. You send a business card to a Telegram bot, and the workflow immediately checks what came in (an image, a file, or plain text). Then an AI Vision Agent reads the card and pulls out the fields you actually need: company, full name, department, job title, address, postal code, and all the contact details like phone and email. The workflow cleans that into a consistent structured format and pushes it into Google Sheets as a new row, or updates an existing row if the contact already exists. No copy-paste loops. No “I’ll do it later.”
The flow begins with a Telegram intake trigger. After a quick validation step, the AI extraction runs and returns structured JSON. Finally, Google Sheets appends or updates the matching contact so your list stays current.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your team collects 25 business cards after a meetup. Manually, assume about 5 minutes per card to type and verify details, which is roughly 2 hours of admin work (and that’s on a good day). With this workflow, each card is “logged” by sending one Telegram message that takes maybe 20 seconds, then you wait for extraction and the Google Sheets update. You still spot-check a few entries, but the heavy lifting is gone.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram to receive business card photos via bot
- Google Sheets to store and update your contact list
- Telegram Bot API token (get it from BotFather in Telegram)
- OpenRouter (or similar AI vision provider) API key (get it from your provider dashboard)
Skill level: Beginner. You’ll connect accounts, pick your sheet, and adjust a couple field mappings.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A message hits your Telegram bot. You or your team sends a business card photo (or text) to the bot, which triggers the workflow instantly.
The workflow validates what came in. An “If” check routes the message correctly so the extraction agent receives the right content instead of failing on unexpected formats.
AI extracts the contact fields. The Vision Extraction Agent runs on an OpenRouter vision chat model and returns structured JSON (company, full name, job title, phones, email, website, address, and more). Honestly, this is the difference between “OCR text” and something you can actually use.
Google Sheets updates your list. The workflow appends a new row or updates an existing one (based on your matching key), so your contact sheet stays clean without manual merge work.
You can easily modify the sheet columns to match your team’s fields based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Telegram Trigger
Set up the incoming Telegram message trigger so the workflow can receive business card photos.
- Add and open Telegram Intake Trigger.
- Set Updates to
message. - Enable Additional Fields → Download as
true. - Credential Required: Connect your
telegramApicredentials. - Confirm the trigger connects to Validate Incoming Type.
Step 2: Validate Incoming Messages
Filter out non-photo messages to ensure only business card images are processed.
- Open Validate Incoming Type.
- Set the condition to check Left Value as
{{ $json.message.text }}. - Use the operator notExists so text-only messages are excluded.
- Ensure the true path routes to Vision Extraction Agent.
Step 3: Set Up Vision Extraction with AI
Configure the AI agent to extract structured business card data using the OpenRouter vision model and a structured parser.
- Open Vision Extraction Agent and set Text to
=Analyze the provided business card image or text and accurately identify all of the following information.List them clearly. Image URL: {{ $('Telegram Intake Trigger').item.json.message.photo[0].file_id }}. - Set Prompt Type to
defineand keep Has Output Parser enabled. - In Vision Extraction Agent → Options → System Message, paste the full system prompt from the workflow to enforce Japanese-first extraction rules.
- Open OpenRouter Vision Model and set Temperature to
0.3. - Credential Required: Connect your
openRouterApicredentials on OpenRouter Vision Model. This model is connected as the language model for Vision Extraction Agent. - Open Structured Output Parser and set Auto Fix to
{{ false }}and Schema Type tomanual. - Paste the provided JSON schema into Input Schema to match the business card fields exactly.
- Note: Structured Output Parser is an AI sub-node connected to Vision Extraction Agent; add credentials to the parent if required by your environment.
Step 4: Configure Google Sheets Output
Append the extracted business card data to your spreadsheet using field mappings.
- Open Append to Spreadsheet and set Operation to
appendOrUpdate. - Select the target spreadsheet in Document ID (currently
[YOUR_ID]), and choose the sheetシート1. - Set column mappings using the existing expressions, such as date →
{{ $today }}and full_name →{{ $('Vision Extraction Agent').item.json.output['Full Name'] }}. - Ensure these fields are mapped exactly: company_name, department, job_title, full_name, postal_code, address, phone_number, mobile_phone_number, fax_number, email, website_url.
- Credential Required: Connect your
googleSheetsOAuth2Apicredentials.
company_name, phone_number), the append/update may fail or write empty values.Step 5: Test and Activate Your Workflow
Run a live test using a Telegram photo message and then activate the workflow for production.
- Click Execute Workflow and send a business card photo to your Telegram bot.
- Verify the data passes from Telegram Intake Trigger → Validate Incoming Type → Vision Extraction Agent → Append to Spreadsheet.
- Confirm a new row is created or updated in Google Sheets with the extracted fields populated.
- When satisfied, toggle the workflow to Active to enable production use.
Common Gotchas
- Telegram credentials can expire or the bot may lose permissions. If things break, check the bot token in n8n Credentials and confirm the bot is still active in BotFather first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice and preferred formats (country codes, address style) early or you’ll be editing outputs forever.
Frequently Asked Questions
About 30 minutes if your Telegram bot and Google Sheet are ready.
No. You’ll connect accounts and adjust a few field mappings in n8n.
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 your AI vision API costs, which are usually small per card but depend on your provider and model.
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.
Yes, and you should. Most teams switch the “update match” to email because it’s more unique than company name. You’ll adjust the mapping after the Structured Output Parser so the Google Sheets append/update logic checks your preferred key. Common customizations include removing fields you don’t care about (fax, postal code), forcing consistent phone formatting, and adding a “source” column like “Event” or “Inbound DM.”
Usually it’s an invalid or rotated bot token. Update the Telegram credentials in n8n, then confirm the bot can still receive messages. If the workflow doesn’t trigger at all, make sure the workflow is activated and the Telegram Trigger is the one receiving updates for that bot.
A lot. In practice it’s limited by your n8n execution limits (on Cloud) and your AI provider rate limits, not by Google Sheets itself. If you self-host, volume mostly depends on your server size and how fast your vision model returns results.
Often, yes, because this flow needs conditional routing and structured AI output handling that can get awkward (and pricey) in simpler tools. n8n also gives you the self-hosting option, which matters when you start logging hundreds of cards. Zapier or Make can still be fine if you only need a lightweight “send image somewhere” flow and you don’t care about consistent structured fields. The bigger issue is control: prompts, parsing, update logic, and error handling. If you want help choosing, Talk to an automation expert.
Once this is running, business cards stop being a backlog and start being a clean list. The workflow handles the repetitive stuff, so you can actually follow up while the conversation is still warm.
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.