The moment it happens
Text a receipt photo to log it in a sheet
Text a photo of a receipt to your number and the date, supplier and total are added to your expenses sheet, with a text back to confirm.
- Runs
- The moment it happens
- Apps
- Google Sheets, Twilio
- AI
- Yes, uses the built-in AI allowance
- Access
- Twilio account SID/token; Sheets edit
Send this to your assistant
Create a ClickRuntime automation: when I text a receipt photo to my Twilio number, read the date, supplier and total, add a row to my Expenses sheet, and text me back what was logged.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
People who spend on the road, such as contractors, consultants and sales reps, collect paper receipts that fade, get lost and turn into a stressful pile at tax time.
Texting a photo the moment you pay gets each receipt recorded in your sheet on the spot, with no app to install, and the confirmation text shows exactly what was logged.
What you get out of it
Logged on the spot
Receipts are recorded the moment you pay, before they can get lost.
No app to install
It works from any phone's messaging app.
No typing
Date, supplier and total are read from the photo.
Ready for your accountant
All expenses sit in one sheet you can filter and share.
How it works
What happens, step by step
You text a photo of a receipt to your Twilio number.
The photo is downloaded from the message.
AI reads the date, supplier and total.
A row is added to your Expenses sheet and you get a text back with what was logged.
Before it runs live
- Connect your Google Sheets account and pick the spreadsheets it may use
- Connect Twilio
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Google Sheets and Twilio steps into one automation
Under the hood
The code that runs this automation
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from twilio.rest import Client
import base64
from clickruntime import on_event, credentials, http, ai
SHEET_ID = "your-spreadsheet-id"
SCHEMA = {"type": "object", "properties": {"date": {"type": "string"}, "supplier": {"type": "string"}, "total": {"type": "number"}}, "required": ["date", "supplier", "total"]}
FROM = "+15005550006"
def sms(to, body):
return Client(credentials.secret("TWILIO_ACCOUNT_SID"), credentials.secret("TWILIO_AUTH_TOKEN")).messages.create(to=to, from_=FROM, body=body)
@on_event
def handle(event):
f = event.json or {}
if not f.get("MediaUrl0"):
sms(f.get("From"), "Please send a photo of the receipt.")
return {"skipped": "no media"}
img = http.get(f["MediaUrl0"], auth=(credentials.secret("TWILIO_ACCOUNT_SID"), credentials.secret("TWILIO_AUTH_TOKEN"))).content
r = ai.generate(["Read this receipt: date (YYYY-MM-DD), supplier, total.", base64.b64encode(img).decode()[:30000]],
json_schema=SCHEMA, max_output_tokens=80).json
build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets().values() \
.append(spreadsheetId=SHEET_ID, range="Expenses!A:D", valueInputOption="USER_ENTERED",
body={"values": [[r["date"], r["supplier"], r["total"], f["From"]]]}).execute()
sms(f["From"], f"Logged {r['supplier']} {r['total']:.2f} on {r['date']}")
return {"logged": r["supplier"]}FAQ
Common questions
Does it work on any phone?
What if it reads something wrong?
Can several people use it?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Answer product questions by text from a sheet catalogue
Customers who text a question get an answer from the products in your sheet within seconds.
See how it worksText new leads instantly and log them in a sheet
New leads get a text within seconds, are logged in your sheet, and their reply is qualified so you know who's hot.
See how it worksText back missed callers and log them in a sheet
Anyone whose call you miss gets a text right away, is added to your Missed Calls sheet, and you get an email about it.
See how it worksKeep exploring
Set up “Text a receipt photo to log it in a sheet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.