Integrating ToloGo with HomeKit
How I got my ToloGo garage door into HomeKit and made it open when I arrive by car: first with Twilio calls, now with my own Home Assistant integration.

Juho Torkkeli
· 7 min read · Updated
Updated : From a phone-call trick to my own Home Assistant integration ↓

The initial setup
When we moved into our new home, I wanted the garage door to open automatically from the car. That wasn’t an option. Instead, the system came with a dedicated app, ToloGo. The app let me control the door with a verified phone number, but using it every time got tedious, and it did much more than the one button I needed.
Looking for a better solution
After a few months, I started looking for alternatives and even talked with the system’s developers about the options. They didn’t give me a direct answer, but the conversation sparked an idea. A friend had set up his gate to open when it gets a call from a virtual number. I figured the same concept could work for my garage door.
Opening the door with a phone call
To test the idea:
-
Getting a virtual number: I bought a virtual number from Twilio and registered it with the garage door system.
-
Triggering the call: The call had to start automatically, or from a button in Apple HomeKit. Home Assistant turned out to have a Twilio integration, and after some straightforward configuration I could open the garage door by pressing a button in HomeKit.
Adding automation
The next goal was to have the door open automatically when I arrive:
-
Location-based automation: With the door in Home Assistant, I set up a simple automation that triggers the door when I enter a zone around home. It worked well, but the door also opened when I came home on foot or by bike.
-
Detecting the car: To tell arriving by car apart from the rest, I thought about using my phone’s Bluetooth connection to the car. Home Assistant couldn’t see which Bluetooth device the phone was connected to, but iOS Shortcuts can run an automation when the phone connects to a specific Bluetooth device. I created a helper switch in Home Assistant that this Shortcuts automation controls, so the door only opens when I arrive by car.
Cutting the cost
I was happy with the setup, but it had a running cost: the Twilio number is about €5 a month. Not a lot, but I wanted a free alternative, and the app’s own cloud service was the obvious place to look. I asked the system’s developers about access. They didn’t give it to me directly, but hinted that a developer could figure it out.
After some experimenting, I worked out how the official app talks to its cloud service and built a simple Flutter app with a single button that opens the door. Then other projects took priority, and this one went on hold.
Where things stood in 2024
This section describes the state in June 2024. See the update below.
Next, I plan to learn how Home Assistant custom integrations work. Using what I found out about the cloud service, I want to build one that opens the garage door for free, so that others with a similar setup can use it too.
Update (Sep 30, 2026): from a phone-call trick to my own Home Assistant integration
The plan above is done. ToloGo for Home Assistant is an open-source custom integration, and the Twilio number is gone. It took two Flutter apps and two years to get there.
Two proofs of concept
The one-button Flutter app mentioned above did exactly one thing: on every press it signed in and asked the cloud service to open my door. That was enough to show the idea works.
In August 2024 I started ToloGo+, a more structured Flutter app: a separate API client package (Dio and Retrofit, with Freezed models), secure token storage, BLoC state management and a router with an auth guard. Sign-in and token storage worked. The doors screen stayed empty, and the app never opened a door.
In hindsight, both were proofs of concept for getting the API working before moving to Home Assistant. Finishing an app of my own wouldn’t have brought real value. The official app has gotten a lot better (version 3.0 in September 2025 brought a redesign), and I open it maybe once a month. The official app also added a widget and Shortcuts support in version 2.4 (February 2024), which in theory could have replaced Twilio, but my automation wouldn’t work as well with it. What I actually want is automation, and that lives in Home Assistant.
The missing piece: token refresh
In June 2026 I’d had enough of paying for the Twilio number, so I went back to the 2024 plan.
Originally, I had figured out the calls by proxying the official app’s traffic through Postman. That covered everything except one piece: the token refresh, because it’s hard to time a capture for the moment the app decides its token needs refreshing. The first PoC didn’t need it, since it signed in on every press. The integration keeps the tokens, never my password, so it did.
This time I looked at the app itself instead of its traffic. The official app is built with React Native, so its JavaScript ships inside the app. Going through it is a bit like reading a website’s sources in the browser’s dev tools. The code is minified, but there are tools that make it readable. I then used Gemini in Google’s Antigravity IDE to go through the code, and it found the refresh call quickly.
What it does
- Setup happens in the Home Assistant UI. You sign in with your ToloGo email and password in the setup dialog.
- Every door on the account becomes a button entity, grouped into one device per location.
- Tokens refresh automatically.
- Each door has a 5-second cooldown, so a double press or an eager automation doesn’t fire a burst of open requests.
It’s unofficial and not affiliated with Tolotech, the company behind ToloGo. It runs on your own ToloGo account and only opens doors you already have access to.
One evening, five releases
I released the integration on the evening of Sunday, June 14, 2026. Versions 0.1.0 to 0.1.4 went out within about an hour, and four of them were packaging fixes: the brand icon, version numbers, hacs.json, and an icon for the HACS dashboard. The first HACS validation run in GitHub Actions failed because the manifest had no documentation URL.
The integration isn’t in the HACS default store, but you can add it to HACS as a custom repository. I haven’t had time to submit it yet, and my use case is fairly niche, so I’ll do it if people ask.
How the door works now
The car-arrival automation still runs, but now it presses the integration’s button instead of starting a Twilio call. Home Assistant runs on a Raspberry Pi at home. I’ve set up remote access to it, so it can use my phone’s location and trigger the automation at the right time. The door button reaches HomeKit through Home Assistant’s HomeKit Bridge, for the times I want to open it by hand. The car-Bluetooth Shortcut from the original setup still does its job.
I also added a new trigger: when I’m in the car, the iPhone Action button opens the door. The rest of the time it does other things.
I canceled the Twilio number around the time I released the integration. That saves €5 a month, and the door opens faster because there are fewer steps involved: no phone call in the middle.
Neither Flutter app was the end product, but what they taught me about the API went straight into the integration. That’s the main lesson from the whole path, phone call to Flutter apps to integration: proofs of concept are worth making. Build the thing, learn what’s good, what’s bad and what’s worth keeping, and keep improving.

