Telegram to Google Sheets, business cards captured
You get back from an event with a pocket full of business cards. Then Monday hits. Cards go missing, handwriting is questionable, and the “I’ll add them later” pile quietly turns into lost revenue. Telegram Sheets leads automation fixes that mess.
Founders feel it when follow-up slips a few days. Marketing managers hate the spreadsheet copy-paste. And if you run sales for a small team, you’ve probably chased “that person from the booth” more than once. This workflow turns a photo into a clean lead row, plus a ready-to-send follow-up message.
You’ll see how the automation captures the card via Telegram, extracts the details with OCR, uses AI to structure and qualify the lead, then logs everything to Google Sheets (and even drafts email copy).
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Telegram to Google Sheets, business cards captured
flowchart LR
subgraph sg0["Telegram Intake Flow"]
direction LR
n0["<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 Intake Trigger"]
n1["<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/>Encode Image as Base64"]
n2["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Vision API Request"]
n3["<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/>Parse OCR Text"]
n4@{ icon: "mdi:robot", form: "rounded", label: "AI Outreach Planner", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Engine", pos: "b", h: 48 }
n6["<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/>Normalize AI Output"]
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Email Presence Check", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Append to Spreadsheet", pos: "b", h: 48 }
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Email Copy", pos: "b", h: 48 }
n7 --> n8
n4 --> n6
n2 --> n3
n6 --> n7
n0 --> n1
n3 --> n4
n5 -.-> n4
n8 --> n9
n1 --> 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 n0 trigger
class n4 ai
class n5 aiModel
class n7 decision
class n8 database
class n2 api
class n1,n3,n6 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n3,n6 customIcon
The Problem: Business cards die in the follow-up gap
Capturing leads at events should be the easy part. The painful part is what happens after. You have cards in your bag, photos in your camera roll, and half-remembered conversations in your head. By the time you finally sit down to type everything into Google Sheets (or a CRM), you’re guessing at job titles, mistyping emails, and losing context like “they asked about pricing” or “they’re evaluating vendors next month.” That’s where good leads quietly go stale.
It adds up fast. And it’s not just time, it’s accuracy and speed.
- Manual entry turns into about 5 minutes per card, and that’s on a good day.
- One wrong character in an email address can kill the entire follow-up thread.
- Teams forget the “why” behind the lead because notes live nowhere consistent.
- Even when you do log the lead, writing a decent first message takes longer than it should.
The Solution: Telegram photo → AI-extracted lead → Google Sheets log
This workflow starts with something you already do: you take a photo of a business card. Instead of letting that photo disappear into your phone, you send it to a Telegram bot. n8n grabs the image, converts it into a format the OCR service can read, and sends it to Google Vision to pull out the raw text. Then an AI agent (using an OpenAI chat model) turns that messy text into structured fields like name, company, role, email, and phone. It also infers a bit of context and drafts follow-up messaging, so you don’t stare at a blank email later. Finally, the lead is appended to Google Sheets and, when an email address is present, the workflow can generate email copy via Gmail.
The workflow begins when Telegram receives the card photo. OCR extracts the text, AI cleans and qualifies it, then Google Sheets becomes your single source of truth. If the lead has an email, you also get follow-up copy ready to send.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you come home with 20 business cards from a meetup. If you type them into a sheet at roughly 5 minutes each, that’s about 100 minutes, plus time rewriting emails when you spot typos. With this workflow, you forward 20 photos to Telegram in maybe 20 minutes total, then let OCR + AI process them in the background. You end up with a populated Google Sheet and draft outreach text, without sacrificing your evening.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram Bot for sending business card photos.
- Google Cloud Vision API to OCR the card image.
- OpenAI API key (get it from the OpenAI API dashboard).
Skill level: Intermediate. You’ll be pasting API keys, testing a couple runs, and matching fields to your Google Sheet columns.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Telegram photo intake. You send a business card photo to your Telegram bot, which triggers the workflow immediately. No app switching, no “upload later” step.
Image and text extraction. n8n encodes the image and sends it to Google Vision via an HTTP request. The response comes back as raw extracted text, which is useful, but messy.
AI turns text into a lead. The AI agent and OpenAI chat model interpret the OCR output, pull out name/company/role/email/phone, and generate outreach guidance like a suggested next step and a draft message. Honestly, this is the part that saves the most mental energy.
Sheets logging and optional email copy. If the workflow detects an email address, it appends the structured data to Google Sheets and prepares a Gmail draft/output so you can follow up quickly. If there’s no email, it still logs what it can, so the lead doesn’t vanish.
You can easily modify the Google Sheets columns to match your CRM-style 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 entry point so Telegram messages with images can be received and downloaded.
- Add and open Telegram Intake Trigger.
- Set Updates to
message. - Enable Download in Additional Fields so images are captured as binary.
- Credential Required: Connect your Telegram credentials (required for Telegram Intake Trigger).
Step 2: Prepare Image Data and Call Vision API
Convert the incoming image to Base64 and send it to Google Vision for OCR.
- In Encode Image as Base64, keep the provided JavaScript Code as-is to set
items[0].json.base64. - Open Vision API Request and set URL to
https://vision.googleapis.com/v1/images:annotate?key=[CONFIGURE_YOUR_API_KEY]. - Set Method to
POSTand JSON Body to the expression:={ "requests": [ { "image": { "content": "{{ $json.base64 }}" }, "features": [ { "type": "TEXT_DETECTION" } ] } ] }. - Set JSON Headers to
{ "Content-Type": "application/json" }.
[CONFIGURE_YOUR_API_KEY] before testing.Step 3: Extract OCR Text and Configure AI Planning
Transform the OCR output and generate structured outreach content using the AI agent.
- In Parse OCR Text, keep the JavaScript that maps OCR to
raw_text. - Open AI Outreach Planner and confirm the Text prompt includes
{{ $json.raw_text }}and{{ $('Telegram Intake Trigger').item.json.message.caption }}. - Replace the placeholders in the prompt (e.g.,
[YOUR_NAME],[YOUR_EMAIL]) with your real details. - Ensure OpenAI Chat Engine is connected as the language model for AI Outreach Planner.
- Credential Required: Connect your OpenAI credentials in OpenAI Chat Engine (credentials are added on the parent model node, not the agent node).
Step 4: Normalize AI Output and Check Email Presence
Clean the AI response into a stable JSON structure and verify an email exists before saving.
- In Normalize AI Output, keep the JavaScript code that parses and normalizes the AI JSON.
- Open Email Presence Check and set the condition Left Value to
={{ $json.emails[0] }}with the notEmpty operator. - Verify the execution flow: AI Outreach Planner → Normalize AI Output → Email Presence Check.
Step 5: Connect Google Sheets and Append Lead Data
Store structured lead information in a spreadsheet before sending the email copy.
- Open Append to Spreadsheet and set Operation to
append. - Set Document ID to
[YOUR_ID]and Sheet Name togid=0. - Confirm column mappings use expressions such as
={{ $json.name }},={{ $json.emails[0] }},={{ $json.htmlBody }}, and={{ $json.subject }}. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Append to Spreadsheet.
Step 6: Configure Email Dispatch
Send the generated email copy to your internal address for review or follow-up.
- Open Dispatch Email Copy and set Send To to
=[YOUR_EMAIL]. - Set Subject to
={{ $json['Email Subject'] }}. - Set Message to
={{ $json['Email Body'] }}. - Credential Required: Connect your Gmail credentials in Dispatch Email Copy.
Step 7: Test and Activate Your Workflow
Run a full test to confirm OCR, AI processing, data storage, and email dispatch are working end-to-end.
- Click Execute Workflow and send a Telegram message with a business card image and caption.
- Verify that Vision API Request returns OCR text and AI Outreach Planner produces JSON output.
- Confirm a new row is appended in Append to Spreadsheet with fields like Email Body and Email Subject.
- Check your inbox for the email sent by Dispatch Email Copy.
- Toggle the workflow to Active to run it in production.
Common Gotchas
- Google Cloud Vision credentials can expire or have billing/permission restrictions. If OCR suddenly fails, check your Google Cloud API key settings and project billing 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 early or you’ll be editing outputs forever.
Frequently Asked Questions
About 30 minutes once you have your API keys.
No. You’ll connect Telegram, Google, and OpenAI, then map a few fields into your sheet.
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 Google Vision OCR charges and OpenAI API usage (often just a few cents per lead).
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, but you’ll swap the “Append to Spreadsheet” step for a HubSpot (or CRM) create-contact step. Many people also tweak the “Normalize AI Output” code so the field names match their CRM properties. Common customizations include writing the AI fit score into a lead status, tagging the event name, and saving the WhatsApp draft in a notes field.
Usually it’s an expired Google authorization or the sheet permissions changed. Reconnect the Google Sheets credential in n8n and confirm the target spreadsheet is shared with the same Google account. Also check that your sheet columns still match what the workflow is trying to append, because renamed headers can cause silent mapping failures.
A lot.
It depends on what you value. Zapier and Make can be quicker for basic “photo in, row out” zaps, but OCR + AI parsing often gets awkward once you need branching, retries, and data cleanup. n8n is strong when you want control over the logic, and self-hosting is a big deal if you’re processing many cards after a conference. Also, this workflow already includes the qualification and message drafting layer, not just a spreadsheet write. If you want help picking the right stack, Talk to an automation expert.
Set it up once, then treat every business card like it matters, because it does. Your sheet stays clean, your follow-ups go out faster, and the “lost leads” problem stops being a thing.
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.