hookzo

→ legal

Privacy Policy

Last updated: August 10, 2026

1. The short version

Hookzo collects the minimum needed to run your account and generate scripts. One thing we hold is not about you at all: a list of public posts by other creators, used to show what is working in a niche. It holds links and public numbers, never anyone's writing or images, and it is described in section 2 along with how a creator can have their posts removed from it. The posts you capture from Instagram and TikTok are processed to create scripts — we don't track you around the web, build an advertising profile of you, or sell your data. What we do keep is the creator profile you fill in yourself — your handle, niche and voice — because scripts written without it are generic; if you run more than one account you can keep a profile for each, and exactly one is in use at a time. It's described in section 2, and you can change or clear any of it whenever you like. This policy explains the details.

2. What we collect

  • Account info: your email address and, if you use Google sign-in, the basic profile (name, email) Google returns.
  • Usage & quota: how many generations you've used, your plan, and timestamps — so we can enforce limits and show your dashboard.
  • Anti-abuse signals: a random per-install device ID and a hashed (non-reversible) version of your IP address, used to prevent multi-account abuse of the free tier. (A hashed IP is also stored with a product-update email signup, described below — that is the only other place one appears.)
  • Generation inputs: the post captions/metrics you send when you click "Generate" — and, for posts without a caption, the post's cover image — which are passed to our AI provider to produce scripts (the cover image is used only to read its on-screen text). These are processed to generate your scripts and are not stored after.
  • Your generations (the output): if you're signed in, the scripts, swiped hooks, carousels, reel remixes, video breakdowns and creator deep-dives we generate for you are saved to your account so you can find them again on your account page instead of losing them when you close the panel. We store the generated text itself, the public @username it was generated from, and the settings used (style, length, language). We do not store the captured post captions, metrics or cover images that went in — only what came out. You can delete any saved generation from your account page at any time. Generations made while signed out are never saved, because there's no account to attach them to.
  • Scripts you tell us you published, and how they did: when you're on one of your own posts in the extension you can tap "✓ I made this" and pick which of your generated scripts you filmed. Nothing about this is guessed — we never match your posts to your scripts by caption, wording or timing, so a result exists only because you said so. Marking one saves the link (which script, which post code, the hook pattern it used, and the day the post went up). Later, when you capture your own profile, the extension works out how that post did against the median of your own posts and sends us only that ratio — for example "2.1×" — together with which metric it was computed on (views or likes) and how many of your posts stood behind the median. The like and view counts themselves never leave your browser; the division happens there, and we receive the result of it rather than the numbers that produced it. This is what powers hookzo.app/studio/results. You can remove any mark from the same button in the panel, and deleting a generation deletes the results attached to it.
  • Creator deep-dives (two accounts, so worth spelling out): a deep-dive puts a creator you're studying next to your own account, so a saved one holds both public @handles — theirs and yours — plus figures we worked out from the two boards: what share of each account's posts are reels, carousels or photos, how many words a typical caption runs to, how many days pass between posts, how many opening lines ask a question, and how each account's best post compares to that same account's own median. It holds no caption text, no like, view, comment or follower count, and no cover image from either side. Follower and comment counts are never sent at all. The two boards' like and view counts are sent, and they are used for exactly one thing: working out each account's own median, so a post can be placed against that same account's baseline. They are never stored, and the AI model is never shown them — it only ever sees the multiple we derived, which is why a deep-dive can't tell you which account is bigger.
  • Your creator profiles: if you're signed in and you fill in the extension's setup (or its ✎ Profile screen, or the same form on the web at hookzo.app/studio/pages), we save eight things per profile to your account so you don't retype them on every device: your own public @handle, which platform it's on, your niche, a short description of how you write (your "voice"), a list of topics you already post about, a short name you can give the profile so you can tell your accounts apart, whether the niche and voice were written by you or read from your own captions, and your one-tap answer to "where did you find Hookzo?". If you run more than one account you can keep a profile for each, and exactly one of them is in use at a time — we store which one, because that is the profile the scripts we generate are steered by. It's written by the extension or by hookzo.app using your own account credentials. It never contains the posts you captured — no captions, no metrics, no cover images; that stays in your browser. You can change or clear any of it from the extension panel or from hookzo.app/studio/pages at any time, and it's deleted when you delete your account.
  • Chat messages (the assistant): if you use the chat — in the extension panel or in the Studio at hookzo.app/studio — each message you send goes to our servers and on to our AI provider so it can work out the next step. What travels with it: the messages you typed, the name of what you have open (the @username or #hashtag already shown at the top of your panel), how many posts you have captured and how they are sorted, the creator profile you currently have in use (section 2), your style/length/language settings, and a short summary of what each step returned — for the step that reads your board, that summary is the engagement numbers and ages of your top ten posts, the same public numbers already on your screen. On every chat message, a summary of your own saved work is read from our database and given to the AI provider so the assistant knows what you have been doing. It is built on our servers, not sent from your browser, and it contains: how many items of each kind you have saved, which hook patterns they used and how often, how many carried a check-this-number flag, what your saved breakdowns measured, and the public @usernames you have been studying — most recent first. It never contains a caption, a cover image or a post you captured. What never travels with it: the captions, the cover images and the post links you captured — those still go only to the generator, and only when you run a step that needs them. The conversation itself is not stored on our servers; it lives in your browser's local storage so it is still there when you come back, and you can clear it by removing the extension's storage. Anything the chat generates is saved to your library exactly like the rest, as described above.
  • Transcription (Pro): if you use the transcript feature on a video that has no caption track, the video's media URL is sent to our transcription provider (Deepgram) to produce a text transcript. Caption-track transcripts are read entirely in your browser and never leave your device.
  • Generated slide photographs (Lite and Pro, only when you press the button): in the deck editor you can put a photograph behind one slide. Nothing is sent until you press Generate on that slide, and it happens one slide at a time. What travels: the text of that slide (what you wrote, or edited), the text of the deck's first slide so the picture belongs to the same story, and the two brand colours you set, so the photograph sits under your palette instead of fighting it. What does not travel: your @handle, your account, the posts you captured, or the images of the carousel the deck was built from. It happens in two steps and they see different things — our AI provider reads the slide and writes a short photography brief; the image provider receives only that brief, never your slide text. The photograph never contains any text: we ask for a picture and nothing else, and your words are drawn on top of it in your own browser — which is why a number on a Hookzo slide is always the number you approved. The picture comes back to your browser and stays in the editor until you export it or close it; we do not store it.
  • Deck drafts (the edits you make to a carousel): when you open a saved carousel in the deck editor you can rewrite any slide, and those edits are saved to your account so they're still there when you come back, on any device. We store the text of each slide, the caption you write for the post, and — if you put a photograph behind one — that photograph, so the deck you come back to is the deck you left. Four things about the picture. It goes in a private store that only your own signed-in session can read; there is no public link to it and no link we could give anyone. Your browser re-encodes it before it is sent, which shrinks it and, more to the point, strips its metadata — the GPS coordinates a phone writes into every photo never reach our disk, because a re-encoded picture does not carry them. We keep the picture and nothing about where it came from: not the original file, not its EXIF, not the folder you took it from. And it is deleted the moment it stops being used — when you put a different photograph behind that slide, when you press "No photo", when you restore the deck, and when you delete the carousel from Your work. What Hookzo originally wrote is kept untouched and separate; that's what “Restore what Hookzo wrote” gives you back, and pressing it deletes the draft and its photographs. The photographs are the one thing here we do not promise to delete automatically at the 12-month mark: the routine that clears out old work runs inside the database and cannot reach the picture store, so a carousel you never touch again may leave its photograph behind. Delete the carousel yourself, or email hi@hookzo.app, and it goes. While the editor is open a copy also sits in your browser's local storage so a tab that dies can't take your work with it, and it's removed as soon as the save lands.
  • Payment info: handled entirely by Polar. We receive your plan status and a subscription ID — never your full card details.
  • Product-update emails: if you submit your address to “Or get product updates by email” on our homepage, we save that email address to our database so we can send you those updates. Three things are stored next to it as signup context: a hashed (non-reversible) version of your IP address, your browser's user-agent string, and the referring URL your browser sends with the request. No account is created by this, and it does not sign you up for anything else. To be removed, reply to any update or email hi@hookzo.app.
  • Trending format signals (only if you say yes): when you run ⌗ Name the formats on a board, the extension asks once whether the shapes it found may be counted toward the trends everyone sees. It contributes only if you press yes — the question going unanswered contributes nothing, and you can change your mind in the panel. What a contributed row holds: the shape (one of a fixed list, like "before / after" or "stat shock"), the short name given to it, the platform, the niche term you had open, the week, how many posts in your board carried that shape, what share of the board that was, how those posts performed relative to that same board's own median, and a link to the cover image of the single strongest post that carried the shape — a link to what the platform already serves publicly, handled exactly as section 2 describes for the discovery corpus: your browser asks us, we fetch it and pass the bytes through, and nothing is written to any disk, bucket or database of ours. Those links are signed by the platform and stop working after a few days; when one does, the card simply shows no picture, because it is drawn to be finished without one. What it does not hold: any caption, any post link, any creator's @username, any image, and any identifier of yours — the row carries two one-way hashes and nothing else that could point at anyone. One stands for you, so the pool can count how many different people have seen a shape without knowing who any of them are. The other stands for the board the shapes came from, so re-running the read on the same board does not let it count twice. Neither can be traced back — the account, the platform and the term you had open go into the hash and never into the table, and both change every week, so nothing here can be followed from one week to the next.
  • The discovery corpus (posts by other creators, not by you): so that a feed of "what is working right now" has something in it on the day you sign up, we maintain a table of public posts from public Instagram and TikTok creator accounts. This is the one thing in this policy that is not about you. A row holds: the platform and the post's public permalink, the creator's public @username, their public follower count, the post's public like, view and comment counts, the date it was posted, whether it is a reel, a carousel or a photo, whether it is pinned to the top of that creator's grid, our own topic labels for it (from a fixed list of 38 — ours, not theirs), a link to the cover image the platform already serves publicly, and, when a post appears on two accounts as a collaboration, the second public @username it was found under. A row does not hold — and this is the point of the design — any part of the caption, any image, any video, any audio, any bio, any email address, any phone number, any follower list, or anything private. We keep a copy of the cover, and that changed on 10 August 2026: the cover is the only thing one of these cards can show — the caption is never stored, by design — and the platform's links are signed and expire. Measured that day: of 1,175 rows, 742 already pointed at nothing, so most cards were arriving blank. So we now save a copy of the cover image itself into our own storage, once, shortly after the post is collected, and serve the card from that copy instead. It is the same picture the platform already publishes; it is stored so the card still works next month. Where we have no copy — because the link had expired before we could take one — we still fetch from the platform and pass the bytes through, writing nothing; and where neither is available the card simply shows no picture, because it is drawn to be finished without one. Either way the request your browser makes goes to us, carries no cookie and nothing about you, and the platform is never told who is looking. Removal covers the copy too: a creator who asks to be taken out has the stored images deleted with the rows. A caption is read once, in the moment, to work out those topic labels, and is discarded immediately; nothing written by the creator is stored. The posts are collected from public profile pages through a licensed commercial data provider (Apify, section 7). If you are in the EEA or UK, our basis for this is legitimate interest: showing creators which public posts are performing, using the public metrics those posts already display. If you are a creator and want your posts out of it, email hi@hookzo.app with your @username — we remove them and stop collecting that account, and we aim to do it within 7 days.
  • Support messages and affiliate applications: if you use the contact form on our site, the email address and message you submit. If you apply to the affiliate program, the email address you give, the handle or link where you create or teach, and — only if you choose to fill them in — your audience size and a short message about how you would promote Hookzo. Both are delivered to our inbox via Resend so we can reply, and neither is stored in our database.

3. What we do NOT collect

We do not collect your general browsing history, the sites you visit outside Instagram and TikTok, your social account credentials, or your private messages. We don't build an advertising profile of you, and we never sell your data. On Instagram and TikTok, Hookzo reads the public posts and engagement numbers already visible on the page — only to rank them for you.

4. What stays in your browser

Captured posts are ranked and displayed locally inside the extension, and they stay there — we never store the posts you capture. That is still true now that section 2 describes a corpus of other creators' posts: none of it comes from your captures. We collect it ourselves from public profile pages, and the Outliers feed on the web reads your own boards by asking the extension for them in your browser — those posts are drawn on your screen and never sent to us. Your style settings and a per-install device ID live in your browser's local storage and never leave it. Part of the creator profile the extension is currently using (handle, niche, voice, and your answer to "where did you find Hookzo?") is kept in local storage too, and while you're signed in your profiles are saved in full to your account so they follow you between devices. We receive data when you trigger an action that needs our servers — "Generate", sending a message in the chat, saving your profile. There is one exception, and it exists to protect your work: while you have a deck open in the editor, your slide text is saved to your account on its own, a moment after you stop typing, so ten minutes of edits can't be lost to a closed tab. Nothing else is sent automatically. A few things leave your browser and stay with us: the output we generate for you, those creator profiles, the edits you make to a deck, and the mark and ratio for a script you told us you published — all described in section 2. None of them contains any caption, metric or cover image you captured. A creator deep-dive is the one output worked out from your captures rather than written from scratch, and what it keeps is the percentages, medians and self-relative multiples listed in section 2 — never the posts they were counted from. Chat messages leave your browser too, but they are processed and not kept: the transcript you can scroll back through is the copy in your own browser.

5. Chrome extension permissions

Hookzo requests the minimum permissions needed to work, and uses each only for its stated purpose:

  • Storage — saves your settings, voice profile, and sign-in session locally in your browser.
  • Access to instagram.com & tiktok.com — lets the extension read the public posts and engagement metrics shown on the page so it can rank them. This reading happens inside your browser. Hookzo does not modify these pages and never automates your account (no liking, following, posting, or messaging).
  • Access to hookzo.app — lets the extension sync your sign-in status from your account.

Hookzo does not read or run on any other websites, and does not track your activity elsewhere.

6. How we use it

To authenticate you, run and enforce your plan, generate scripts, prevent abuse, process payments, respond to support, and improve the Service. We do not sell your personal data or use it for third-party advertising.

7. Third parties we rely on

  • Supabase — authentication and database (your account, plan, usage, your saved generations, your deck drafts, your creator profiles, and the product-update email list described in section 2), file storage for the photographs you put behind deck slides, and storage of the anonymous events described in section 8.
  • Anthropic — AI processing of your generation inputs (post captions/metrics, and cover images for posts without captions, to read their on-screen text) to produce scripts, and of your chat messages in the panel's assistant (section 2) to work out what to do next.
  • Deepgram — AI transcription of videos that have no caption track (a Pro feature); receives the video's media URL to produce a text transcript. Not used for caption-track transcripts, which are read in your browser.
  • OpenAI or Google — drawing the optional photograph behind a deck slide (section 2), whichever of the two we have configured at the time. Either one receives only the short photography brief our AI provider wrote — not your slide text, not your handle, and nothing you captured. Used for no other part of the Service.
  • Instagram and TikTok (only if you press play) — a saved breakdown keeps the public permalink of the reel it read, and its page offers to show you that reel using the platform's own embed. Nothing is requested until you press the play button. The card sits there as a still poster, it says which platform the video would come from, and the page itself never contacts them on your behalf. When you do press it, your browser loads the reel from Instagram or TikTok the same way visiting their site would — they can see that request and may set their own cookies — so the choice stays yours, per reel, every time. We send them no referrer and nothing about your account or the breakdown you are reading.
  • Apify — a licensed data provider that reads public Instagram profile pages to build the discovery corpus described in section 2. It receives a list of public @usernames from us and returns their public posts and counts. It receives nothing about you: not your account, not your email, not your device, and not anything you captured.
  • Polar — payments, billing, and tax as merchant of record.
  • Cloudflare — bot protection (Turnstile) at sign-in and email routing for hi@hookzo.app.
  • Resend — delivery of transactional emails (sign-in links, the welcome email, and plan and quota notices), product-update emails, and contact-form and affiliate-application messages sent to our inbox.
  • Vercel — hosting of the website, and privacy-friendly, cookieless traffic analytics for it (aggregate page views and referrers; no cookies, no cross-site tracking, no advertising profiles).

Each processes data under its own terms and only as needed to provide its part of the Service. Google sign-in is used only to authenticate you (we receive your name and email) — Hookzo requests no other Google access.

International transfers: these providers process data in the United States and other countries. If you're in the EEA, UK, or Switzerland, your personal data may be transferred outside your country; where required, such transfers rely on appropriate safeguards (e.g., Standard Contractual Clauses).

8. Cookies & local storage

We use local storage and essential cookies to keep you signed in and remember your settings.

On the website we measure traffic with Vercel Web Analytics: aggregate page views and referrers, so we can tell how people find Hookzo and where they get stuck. It sets no cookies, does not follow you across other sites, and never builds an advertising profile — which is why there is no consent banner to click. We do not use Google Analytics, advertising cookies, or behavioral tracking scripts.

On the site we also record four anonymous events of our own, stored in our Supabase database: which "Add to Chrome" button was clicked, the campaign tag (utm_*) of a visit that arrived from a link we shared, the fact that an affiliate application was submitted (only the path of the page it was sent from — the application itself goes to our inbox, as described in section 2, and never into this table), and the fact that a signed-out generation happened (only its type, platform and language — never the scripts, the captions, or the profile it came from). These rows contain no identifier of any kind — no name, no email, no cookie, and no IP address, not even a hashed one. They cannot be linked to you or to each other, and they are deleted after 12 months.

The extension sends three anonymous signals, and here is every one of them in full:

  • that a Hookzo panel was opened, on which platform (Instagram or TikTok), and which version of the extension you have — at most once a day;
  • that the first-run setup was finished or skipped, with the same platform and version — once, on your first run;
  • the answer you tap to "where did you find Hookzo?" — once, and it is one of six fixed words (TikTok, Instagram, YouTube, a friend, search, other). Nothing else travels with it, and if you skip the question nothing is sent.

That is the whole of it. None of the three carries an account, an identifier, or an IP address — not even a hashed one — and they are stored in the same anonymous table as the events above, deleted after 12 months. They exist so we can tell whether people who install Hookzo actually get it working, and where they first heard of it. None of these three signals carries anything about which profiles you visit or which posts you capture — they are counts and version strings, nothing else. Hookzo learns what you are looking at only when you deliberately run something on it: a generation, a transcript, a message in the chat, or marking one of your own posts as published, each described in section 2. Simply browsing Instagram or TikTok with the extension installed reports nothing.

9. Data retention

We keep account and usage data while your account is active. The post data you send when you click "Generate" is passed to our AI provider to create your scripts and is not stored afterwards — we never keep the captions, metrics or cover images you captured. The scripts, breakdowns and deep-dives we generate for you are saved to your account (see section 2) so they're still there when you come back; we keep them for 12 months, and you can delete any of them yourself at any time from your account page. Chat messages have no retention period because there is nothing to retain: they are processed to work out the next step and not written to our database — the only copy is the transcript in your own browser. A product-update email signup (section 2) is kept, with the hashed IP, user-agent and referring URL stored beside it, until you ask to be removed — email hi@hookzo.app or reply to any update and we delete the row. Your creator profiles have no timer on them, deliberately: each is one small row of your own answers about yourself, and expiring one would only mean forgetting your niche back to you. They last as long as your account, and you can change or clear any of them from the extension panel or from hookzo.app/studio/pages whenever you want. The discovery corpus (section 2) keeps a post for 90 days after it was last seen, then deletes it automatically — a feed of what is working now is worthless full of two-year-old posts, so the same rule serves both privacy and the product. Deck drafts have no timer of their own either: a draft belongs to the carousel it edits, so it goes when that carousel goes — the 12-month limit takes both together, and deleting the carousel or your account removes it. A script you marked as published is kept for as long as the generation it points at, and goes when that generation goes — deleting a set of scripts also deletes the record of what they did, which is why the panel and the library both say so before you confirm. Contributed format signals (section 2) are aggregate counts with no link to you and are kept while the trend they describe is still shown. When you delete your account, your saved generations and your creator profiles are deleted with it, along with your other personal data — except where we must keep records (e.g., payment/tax records held by Polar).

10. Your rights

If you are a creator whose posts are in the discovery corpus and you do not have a Hookzo account, you still have rights here and you do not need to create one to use them: email hi@hookzo.app from any address with your @username and we will remove your posts and stop collecting that account, normally within 7 days. You can also ask us what we hold about that account, which will be the links and public counts listed in section 2.

You can access, correct, export, or delete your personal data. Email hi@hookzo.app and we'll action your request. Depending on where you live (e.g., EEA/UK/California), you may have additional rights under GDPR or CCPA, including the right to object or complain to a regulator.

11. Security

We use reputable providers and standard safeguards (encryption in transit, access controls, hashed identifiers). No system is perfectly secure, but we work to protect your data and limit what we collect.

12. Children

Hookzo is not intended for anyone under 18, and we don't knowingly collect data from children.

13. Data controller

The data controller responsible for your personal data is Hookzo, a Data Runner product. For privacy matters, contact hi@hookzo.app.

14. Changes

We may update this policy. Material changes will be reflected in the date above and, where appropriate, communicated to you.

15. Contact

Privacy questions or requests: hi@hookzo.app.

© Hookzo 2026 · Terms of Service