The short version
- This website has no accounts, no forms, no analytics and sets no cookies. The only way to reach us is email.
- Ledger, our Google Ads tool, signs you in with Google, reads your Google Ads accounts, campaigns and performance data with your permission, and makes changes only when you ask it to. Tokens and anything secret are encrypted at rest.
- We do not sell data, do not use it for advertising, and do not use it to train AI models. You can revoke access at Google at any time and ask us to delete everything.
VietHoang ("we") is a net agency. This policy covers two things we run: viethoang.us, the website you are reading, and Ledger, our Google Ads operations app, which runs under the viethoang.us domain. For anything in this policy, write to hi@viethoang.us.
1. The viethoang.us website
The website is a set of static pages. There is nothing to sign up for, no comment system, no contact form and no newsletter. It runs no analytics and sets no cookies. Fonts are served from our own domain, so no font provider sees your visit. Your browser's language preference is used once, by the server, to send you to the English or Vietnamese version of a page; it is not stored.
The site is hosted on Vercel. Like any web host, Vercel's servers receive your IP address, browser and the page you requested in order to deliver it, and may keep that in server logs under Vercel's privacy policy. We do not add anything to those logs and do not use them to identify you.
If you email us, we keep the conversation in our mailbox for as long as we need it to answer you and to keep a record of what was agreed.
2. Ledger, our Google Ads app
Ledger is a dashboard for people who run Google Ads accounts. You sign in with your Google account, connect your own Google Ads manager account (MCC), and Ledger shows your accounts, campaigns and performance in one place and lets you make a defined set of changes from there. Ledger is in early access; this section describes how it is built today.
2.1 Signing in
Ledger uses Google Sign-In with the openid, email and profile scopes. From that we store your Google account identifier, your email address, your name and the URL of your profile picture, so we can recognise you next time and show who is signed in. Each Google account gets its own workspace; there are no shared teams.
To keep you signed in, Ledger sets one cookie, ledger_session. It is httpOnly, holds a random session token, and is strictly necessary for the app to work. We store only a hash of that token, together with when the session was created, last used and when it expires. Signing out revokes the session.
2.2 Connecting Google Ads
When you connect a manager account, Ledger asks Google for the https://www.googleapis.com/auth/adwords scope. You grant it from your own Google account on Google's consent screen, and you can withdraw it at any time (see section 4). Google then gives Ledger a refresh token for your account. We store that token encrypted at rest with AES-256-GCM; it is decrypted only to call the Google Ads API on your behalf and is never shown to you or anyone else.
2.3 What Ledger reads from Google Ads
Ledger reads the following through the Google Ads API, for the manager account you connected and the accounts under it, and keeps a copy in its database so your dashboard loads without calling Google on every page. A background job refreshes that copy on a schedule.
| Data | What it is |
|---|---|
| Accounts | The list of accounts in your manager account, their names, IDs, currency, time zone and status, and the links between them. |
| Account budgets | Account-level budget and billing-setup information. |
| Campaigns, ad groups, ads, keywords | Their names, settings, status, budgets, bids, responsive search ad copy and keyword lists. |
| Performance metrics | Impressions, clicks, cost, conversions, invalid clicks, impression share and related metrics, broken down by date, hour, day of week, device, network, location, keyword and search term. |
| Reference lists | Google's own lists of locations and languages, used to label your targeting. These contain no data about you. |
| Account access | Which users and manager accounts have access to an account, used to show the account's status correctly. |
2.4 What Ledger changes, and only when you ask
Ledger can pause or enable a campaign, edit a campaign's settings, change a campaign budget, set a campaign's CPC ceiling and set ad group bids. Every one of these happens because you pressed something in the dashboard; nothing changes on its own. Each change is written to an audit log in your workspace with the action, the account, the time, whether Google accepted it and Google's request ID, so you can see exactly what Ledger did.
2.5 The optional vault
Ledger has a vault for details about your own ad accounts that you may choose to save alongside them: the sign-in password and two-factor secret of an ad account's login, a proxy setting, the number of a payment card attached to an account, and a Telegram bot token for alerts. We never ask for any of these; you add them yourself, and Ledger works without them.
Everything in the vault is encrypted at rest with AES-256-GCM using a key derived separately for your workspace, is shown back only to you, and is decrypted only for the feature you trigger. You may remove any of it at any time, and it is deleted with your workspace. Please only store credentials you are entitled to hold.
2.6 Notifications
If you add a Telegram bot token and chat in Ledger's settings, Ledger sends alerts about your accounts and campaigns to that chat through Telegram's API. Those messages are then handled under Telegram's privacy policy. Without that setting, nothing leaves Ledger.
2.7 Where your data lives and how it is protected
- Ledger's database (PostgreSQL) and servers are operated by us. Every row of data belongs to exactly one workspace, and the application enforces that boundary on every query, so one user can never see another's data.
- Connections to Ledger and from Ledger to Google and Telegram use TLS. Refresh tokens and vault contents are encrypted at rest as described above; session tokens are stored only as hashes.
- Ledger runs no analytics, advertising or tracking scripts, and does not use any AI service.
- Access to the servers and database is limited to the people who operate Ledger, and only for running, debugging and supporting it.
2.8 Who else sees the data
- Google, because every read and change goes through the Google Ads API and sign-in goes through Google Sign-In, under Google's privacy policy.
- Telegram, only if you configured alerts (2.6).
- Infrastructure providers that host our servers and database, who process the data only to provide that hosting.
- Authorities, if the law requires us to and only to the extent it does.
We do not sell your data, do not share it with advertisers or data brokers, do not use it to serve or target ads, and do not use it to build or train AI or machine-learning models. We use Google Ads data only to show it to you and to carry out the changes you ask for.
2.9 Google API Services User Data Policy
Ledger's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements. In plain words: data obtained through Google APIs is used only to provide and improve the Ledger features you see, is not transferred to anyone except as needed to provide those features, as required by law, or with your explicit consent, and is never used for advertising or to train models.
3. How long we keep data
- Website: nothing is kept by us. Vercel's server logs follow Vercel's retention.
- Ledger: your account details, the Google Ads copy, the audit log and the vault are kept for as long as your workspace exists. Sessions expire on their own and are removed when they do.
- Email: kept while we need it to answer you and to keep a record of what was agreed.
4. Revoking access and deleting your data
- Withdraw Google's permission. Open myaccount.google.com/permissions, find Ledger and remove its access. Google invalidates the refresh token immediately; Ledger can no longer read or change anything.
- Have your workspace deleted. Email hi@viethoang.us from the Google account you signed in with. We delete the workspace and everything in it — account details, the Google Ads copy, audit log, vault and sessions — within 30 days and confirm by email. Ledger does not yet have a self-service delete button; until it does, this is the way.
5. Your rights
You can ask what we hold about you, have it corrected or deleted, receive a copy of it, or object to how it is used. Write to hi@viethoang.us; we answer within 30 days. Depending on where you live you may also have the right to complain to a data protection authority.
6. Children
Ledger is for people and businesses that run Google Ads accounts, which Google only provides to adults. It is not directed at anyone under 18 and we do not knowingly collect their data.
7. Changes to this policy
When we change something that matters — new data, a new recipient, a new purpose — we update the date at the top and, for Ledger users, say so in the app or by email before the change takes effect. Smaller clarifications are simply published here.
8. Contact
VietHoang · hi@viethoang.us · viethoang.us