Review / DIY
AppleScript on a Mac mini review
The duct-tape approach: script the Messages app directly.
Messages.app is scriptable. A dozen lines of AppleScript will send an iMessage from a Mac that is already signed in. Every prototype in this space starts here, and almost none of them stay here — there is no delivery status, no inbound handling, no queue, and no way to tell a failure from a silence.
What it is good at
- Zero cost and zero signup — you can test the idea today.
- Useful for understanding what the Messages app actually does.
Where it will bite you
- No delivery receipts. A send that silently fails looks identical to one that worked.
- No inbound handling without reading the chat.db SQLite file yourself.
- Breaks on macOS updates, screen lock, and Automation permission resets.
- Same Apple-terms and account-risk problems as any consumer-account automation.
- Do not put customer messaging on this. It is a demo, not a system.
The shape of the API
Illustrative — parameter names and endpoints change. Treat this as the flavour of the integration, and copy the real thing from the official docs.
tell application "Messages" set targetService to 1st account whose service type = iMessage set targetBuddy to participant "+15551234567" of targetService send "Test from the shop Mac — https://acme.co?utm_source=imessage&utm_medium=sms&utm_campaign=poc" to targetBuddyend tell -- No return value worth trusting. No delivery confirmation.-- This is why hosted APIs exist.Tracking links with AppleScript on a Mac mini
UTM note
Fine for testing that your UTM parameters survive the trip into a bubble and back out to your analytics.
Whatever you send with, build the URL from one helper so tagging is consistent across every job and campaign. Open the UTM builder to generate one now.
Still weighing options?
The comparison table puts all five side by side.