HeyCatch product reference
Everything the product does, in one place. If a question is not covered by the FAQ, the answer is usually here.
What HeyCatch is
HeyCatch is an AI marketing co-founder for solo founders, indie hackers and people who ship with AI builders. You give it one link to your product. It analyses that link, builds your documents and your audit, and then runs your early marketing with you: daily Reddit, X and Threads opportunities, short-form video for Instagram, TikTok, YouTube and Facebook, and analytics that tie channels to signups and payments.
Four things define it. It closes the whole loop, from research to plan to daily actions to published content to analytics. It is approve-first on Reddit, X and Threads, and never posts there for you, while accepted videos do publish automatically to Instagram, TikTok, YouTube and Facebook. Ban safety is a promise rather than a setting. And everything is grounded in your real product, not generic AI output.
Company
HeyCatch, Inc., a Delaware C-corp, 1111B S Governors Ave STE 59736, Dover, DE 19904. Support and privacy requests: support@heycatch.ai. Marketing site heycatch.ai, product at app.heycatch.ai, legal pages at heycatch.ai/terms, /privacy, /permitted-use and /refund, help centre at heycatch.crisp.help.
What a project is
A project is created from exactly one link: a website, an App Store listing, or a Google Play listing. Without a link, Fill in manually, the link next to "No website yet?" under the Add project button on the Add your first project screen (the only screen that shows it, so an account that already has a project does not see it), builds it from a brief the customer types in: four required fields (Product name, What does it do?, Who is it for?, What problem does it solve?) and optional ones, a link among them; it costs the same, builds the same documents and takes the same time as a link, and a link can be added later with the pencil on the Product brief page, which for a project started with Fill in manually costs credits. The other side of the same product can be added afterwards, an app listing to a project created from a website or a website to one created from a listing: it costs 40 credits and gets its own audit and action plan, on Listing optimization or Website optimization under Growth Audit in the sidebar.
A website project is built from the root of the host: whichever page is pasted at setup, the path is dropped, the project is created from the domain and the brief and audit read the site from there, so a project link shown as a bare domain is intended and needs no change. Subdomains are kept as they are (app.site.com stays app.site.com, and a neighbouring subdomain is a separate project), App Store and Google Play links are taken as they are with the project set to mobile app, and a site living on a host the customer does not own, such as username.github.io/project or something.notion.site/page, gets a project built from that foreign root, so the audit, short links and SDK read a root that is not theirs, which only their own domain fixes.
Two refusals can appear at setup and the wording on screen tells them apart. "This looks like a web app. Add your website/landing URL instead." means the link was read as the product itself rather than a page that sells it, so the landing, waitlist or marketing page is what the project wants. "We couldn't open this link. Make sure the URL is correct and publicly accessible." means the page could not be read at all, usually a login wall, a staging password or bot protection; our crawler identifies itself as Exa AI (exa.ai) and has to be allowed through. A site that loads fine in a browser and matches neither is ours to look at, and a second project is never the workaround because it is charged separately.
The customer changes the link themselves, once per billing period: the pencil next to the link at the top of the Product brief page (its tooltip reads "This brief was generated for <link>. You can change it once per billing period.") opens Change your project link?. The window lists what the change resets: Product brief, Audience and Competitors are regenerated from scratch; keywords, subreddits, account health and video prompts are rebuilt from the new data; the site audit and action plan re-run for the new page, and current tasks and their progress are cleared; connected accounts are disconnected and scheduled posts are canceled; and the project's short links stop working, with their number shown. What stays: the plan and credits, and everything already published. It is a full wipe of everything built for the old link, which also removes the catches, the videos waiting in the deck and any app listing or website added under Growth Audit, and the new link can be a different product. The change is free and allowed once per billing period: once every 2 weeks on the 2-week plan, once every 4 weeks on the 4-week plan, and twice on the 8-week plan, once in each 4 weeks. There is no second change inside a period, including by us. The reset is instant and the project is then built again from the new link the same way as at setup. The window also shows the date of the next possible change. Ticking I understand this resets my project enables Reset and add a new link, and the new link is pasted on the next step. Editing the address inside the brief text changes nothing. While a project is still on the Product brief stage, Re-run product brief with its Your product link field also corrects the link, using one of the three brief re-runs.
One subscription covers one project, so a second product means a second project and a second subscription, billed separately. You add one yourself from the project switcher at the top of the sidebar, under Add new: you pick a plan for the new project in the Add new project window, where the price is shown before you pay, and it is charged to the payment method already on the account. Projects live under one account and are switched between in that menu, so a second email and a second login are not needed. Renaming a project is free and the customer does it themselves: the name chip at the top of the Product brief page, then Rename project; type the new name in Project name and press Rename project, and "Project renamed." confirms it. It uses no credits, and the new name replaces the old one everywhere HeyCatch holds it; catches and videos already created keep the old name. Deleting a project does not free up its subscription.
Websites get the full analytics experience. Mobile app projects use the SDK for in-app events. Store-level metrics such as impressions and installs are not available.
Getting started
Sign-in is passwordless: you enter your email and we send a 6-digit code. No password ever exists.
The email on an account is changed by the customer while signed in: Settings, then Account, then Profile, Add email address, confirm the new address from its inbox, then make it the primary one from the three dots next to it; the old address can be removed from the same menu. The same screen is how a second person is added to an account. A customer who cannot sign in at all, because of a typo at signup or at payment or a mailbox they cannot open, names the address the account is on and the address they want, and a person on our team makes the move after confirming the account is theirs. Paying with the wrong address needs no second payment: the subscription, the project and the documents stay with the account.
After payment the product link is analysed. The Product brief generates first, in about two minutes: geo scope, one-liner and category, hero copy, promo and pricing tactics, features, ICP signals, trust spine and tone. During onboarding you can edit it freely and regenerate it up to three times, and it stays editable afterwards.
When you continue, Audience, Competitors and the audit with its action plan generate, about 10 minutes in total, and the app unlocks with a list of 17 onboarding tasks. Tasks are ticked off manually; there is no automatic detection.
The documents: Foundation and Growth Audit
Product brief: your positioning and messaging, the document everything else is built from.
Audience: a summary, an ICP segmentation table with scoring, and deep dives on the top three segments including their pains in their own words, their objections and their triggers.
Competitors: a summary, a comparison matrix, a spotlight pair and three deep dives.
Website optimization and Listing optimization, under Growth Audit in the sidebar: each page holds an audit and the action plan built from it. What the audit scores depends on what it reads. A website gets the site audit, five dimensions: positioning, conversion clarity, trust signals, paywall and pricing, and SEO basics. An App Store or Google Play listing gets a listing audit, eight dimensions: title with subtitle and keyword field, icon, screenshots and video preview, long description and promotional text, trust signals, localisation, technical health including update cadence and privacy labels, and monetisation transparency. Every dimension is a table of individual checks with a pass or fail and the finding. The audit keeps dated versions so you can see your score move, and it has a Copy fix prompt button that copies the fixes as a ready prompt for your AI builder, including a link back to the full audit. A copy that does not reach the clipboard reads "Couldn't copy the fix prompt. Try again."; pressing it again usually settles it, and we can send the prompt across directly if it does not.
The denominator is not always 100. On a pre-launch or waitlist site the audit drops the checks it cannot fairly judge, redistributes the weights and scores out of what is left, which is why a score can read 74 out of 85. The exclusions are named in a banner at the top of the audit.
Action plan: on the same page as the audit it was built from. For a website, Quick wins first, then Do this quarter, then Bigger bets, each item with where, why, what, the hypothesis, the target metric it is meant to move and the effort; a listing's plan can be grouped differently.
SEO, a page of its own under Growth Audit, between Website optimization and Listing optimization: a separate audit of how well search engines and AI assistants can reach, read and quote the site. Our own crawler reads the homepage, robots.txt, the sitemap, llms.txt and up to 300 pages; nothing connects to Google, so there is no traffic or Search Console data on it, and it does not track mentions in AI answers. The Audit score is out of 100, four pillars of 25 points each: Crawlability, Page clarity, Quotability and Authorship. Under 50 reads Critical, 50 to 79 Needs work, 80 and up Healthy, and a pillar can read out of 22 or 23 when some of its checks could not be run. It is a different score from the Website optimization one and the two are not comparable. Adding the website on that page is free and starts the first audit, one website per project. Re-run audit is a full new audit for 40 credits, free only as a retry when the first audit failed, although the button still shows 40. Recheck inside a fix completes that fix if it now passes, Recheck all fixes above the list does it for every open fix, and both are free, up to 10 rechecks per project in any 24 hours, failed ones included; past that the page only says "Couldn't finish the recheck" until the limit clears, within a day. Recommended fixes are grouped by pillar and each is worth points. Open shows What we found, How to fix and a Fix prompt for that fix, and Copy fix prompt above the list copies one prompt for every open fix, with a public link to the audit that needs no login. A fix reaches Completed only when a recheck finds it done on the live site; there is no manual complete. An archived fix leaves the list and still counts against the score. While a recheck runs the score reads Running and the buttons are greyed out. On a project whose subscription has ended the page is read-only: fixes and prompts stay, audits and rechecks need the plan reactivated.
A project starts with the page that matches the link it was created from, and the other one can be added. On a project created from a website, Listing optimization asks for the App Store or Google Play link, with an Add app listing button. On a project created from a listing, Website optimization asks for the website, with an Add website button. Either costs 40 credits, shown on the button, needs a public page that opens without logging in, produces a scored audit and a ranked action plan for the added listing or site; the form says up to 5 minutes, the first real runs took about 20, most of it in the queue. The added link cannot be changed or removed afterwards, it feeds nothing except its own audit and action plan, so the brief, audience, competitors, catches and videos stay built on the original link, and it is re-run from its own page at 40 credits a run. Onboarding and the task list still use the names Site audit and Action plan for the same audit and plan.
Product brief, Audience and Competitors sit in the Foundation group of the sidebar. All five used to sit in one group called Growth plan, with Site audit and Action plan as two separate entries.
Editing and re-running
Everything paid inside a project is metered in credits. Your plan grants credits in one go at the start of each paid period: 300 on the 2-week plan, which is the intro plan and the trial, 300 on the 4-week plan, and 600 on the 8-week plan; there are no separate allowances for edits, re-runs or audits any more. Plan credits expire at the end of the period, do not roll over, and belong to the project they arrived with; on an 8-week plan the 600 live for the whole 8 weeks, and nothing resets inside the period. Credits you buy never expire, sit in an account-level wallet, and are spent only after the project's plan credits run out. The full picture is on the credits page.
Product brief, Audience and Competitors are all editable, during onboarding and at any time afterwards, through the Edit button on the document itself.
Saving an edit stores your text and costs nothing. A banner then appears reading "Changes saved, not applied yet" with an Apply now button: pressing it rebuilds Audience, Competitors, keywords and subreddits straight away, refreshes what is in Post settings, and costs 30 credits. Changes made inside Post settings stay there and do not rewrite Product brief, Audience or Competitors. If it is left alone, the changes go in on their own tonight at midnight in your timezone. The 30 credits are charged when the update starts, whether it was started with Apply now or left to go in overnight. While the update runs the Edit button is unavailable and reads "Editing will be available in a few minutes."; that is a matter of minutes, and a lock still on screen hours later is a stuck run for us to clear rather than something to wait out. Edits to Product brief, Audience and Competitors apply together and count as one application, so changing all three costs 30 credits rather than 90, and content that was already generated stays as it is, built from the old data.
The site audit and its action plan share one page, Website optimization, and one run at one price, 40 credits, shown on the re-run button there. Rerunning it, rescanning, scanning the site again, running it again, redoing the scoring and resubmitting the audit are all this one control: there is no separate submit step and nothing else re-reads the page. A re-run takes about 15 to 20 minutes and rebuilds both documents in the same pass: the audit is re-scored against a fresh read of the page and the action plan is written again from that same read. The page keeps the controls the two screens had, Re-run audit by the audit and Re-run action plan by the plan, and it is one run either way, so pressing either refreshes the pair and costs 40 credits once. There is no way to verify a single check on its own. Editing the brief does not re-run them: the site is read again only by this re-run and, on the SEO page, by its own re-run and rechecks. Listing optimization re-runs an App Store or Google Play listing audit and its action plan the same way, at the same price of 40 credits, and keeps its past runs; if a project shows no re-run button there, tell us in the chat.
The Reddit and X account analysis is re-run the same way and costs 15 credits for Reddit and 15 for X, each with its own version history. On that audit, you mark an individual fix done with its Complete button, at no cost; only a full re-run costs credits. The site audit has no equivalent; the SEO page has its own free Recheck.
The counters that used to sit on these buttons are gone. There is no remaining-uses count on them, no exhausted state naming the date the window resets, and no button inviting you to contact support to get one sooner: every paid button carries its price instead, and the balance in the header says what you have. The one counter that survives is Regenerate videos in Post settings, which is free, costs no swipes and is capped at 3 per 4-week window.
On regeneration, keywords and subreddits you added yourself are never wiped, ones you removed never come back, and only the AI-suggested ones get replaced. Keywords are capped at 20.
Catches, Reddit, X and Threads
How much arrives depends on the platform. On X it depends on the account's step: Newcomer, a brand new account in its first week, 1 reply a day for three days and then 2, with no links or posts; Regular up to 5 replies and 1 post a day, no links; Trusted, from a score of 6 with no critical fixes left, up to 8 replies and 2 posts with links; Insider up to 12 replies and 3 posts; these are where each step tops out, a step starts lower and the card shows today's limit. Threads sends two posts a day. On Reddit it depends on the account's step on the warm-up line: Newcomer, a brand new account in its first week, gets 1 reply a day for three days and then 2, with no links; Regular gets up to 7 replies a day, never more than one per subreddit, with no links; Trusted, from a score of 6, gets up to 5 replies a day with links and product mentions allowed; Insider keeps up to 5 replies a day and adds posts, 1 a day in the first week, then 2 when there are enough subreddits to rotate through. The feed does not replenish until the next day, and the daily limits cannot be bought with credits.
A Reply catch is an existing thread worth joining: the card shows the original post, the keywords it matched and a drafted reply, with copy, rewrite and a link straight to the thread. A Post catch is a drafted post for a specific subreddit, with a playbook panel giving the best posting times in UTC, what performs there, the tone to match and the rules to respect. Threads carries Post catches only: the platform gives us no way to reply to other people's posts, so there is nothing to draft there until it opens that up.
Reply catches are filtered for quality. We only surface threads genuinely worth replying to, so it is normal to go days without any. That is the filter working, not a fault. Past about two days with nothing at all, it is no longer the filter, and the monitoring side is what gets checked.
Subreddits our own rules panel marks as no-pitch are no longer proposed for newly generated posts and replies. Cards generated before that fix keep the old behaviour, so one still sitting in a feed is an old card rather than the fault returning.
Archiving a catch takes it out of the feed and also teaches HeyCatch which topics are not relevant, so archiving is more useful than ignoring.
Publishing on Reddit, X and Threads is always manual. This is deliberate: automated posting through the API is strongly associated with shadowbans. On Threads the catch carries the post text with a counter running to 500 characters and a Copy button. Videos are the opposite case: on Instagram, TikTok, YouTube and Facebook, an accepted video is published for you.
Reddit account health
Whatever account you connect is scored out of 10 on account age, comment karma, recent activity and how its bio and post history read, with a one-line verdict and a list of specific fixes, each with its own Complete button, which you press once the fix is done. There is also a bio block that colour-codes your current bio, splits it into what works and what hurts, and offers rewrites you can copy. Disconnecting an account happens in the same panel.
On Reddit the account moves along a warm-up line: Newcomer, Regular, Trusted, Insider. A brand new account is Newcomer for its first week, whatever the score, and moves on by itself on day 8. After that, and from the start for an older account, it is Regular until the score reaches 6, which opens Trusted: links and product mentions in replies, except in subreddits whose karma bar the account has not cleared. Insider, where posts open, also needs 30 days of account age, 50 comment karma and no open critical fixes; post drafts go to the subreddits in the targeting that allow self-promo posts and whose karma bar the account clears. Until the account is 30 days old with 50 comment karma, the score stays at 4 or below. A score that falls under 6 pauses mentions and posts, and comment karma under 50 pauses posts, until each is back over its line. In Account health the same steps are named New, Warming up, Mentions and Ready.
A card above the Reddit catches shows the step, the daily number and, past the first week, the age, karma and score targets for Insider, each ticked when reached, with a link to Account health, where every fix has a Complete button. Every 3 days the account's age, karma and activity are re-measured and the card moves with them; while the score is under 6 and those numbers have moved, it is re-audited once a week and the score updates on its own. Re-run account audit is the manual version and costs 15 credits, shown on the button.
If the profile stops loading publicly, or the account is suspended, the account is paused and replies stop until the profile loads again and passes a re-audit. The card reads "Replies paused: profile not visible" and carries the steps: check for a shadowban by opening the profile in a logged out browser or through r/ShadowBan, and appeal through Reddit's official form. Connecting a different account you already use normally is also fine. We do not advise creating a replacement account after a suspension, because that counts as ban evasion under Reddit's terms.
X has a warm-up line of its own: Newcomer for a brand new account's first week; Regular while the score is under 6; Trusted from a score of 6 with no critical fix left, with links, and product mentions once the account is 14 days old with 25 followers; Insider with 30 days, 50 followers and X Premium or 300 followers. Held is a score of 6 with a critical fix still open: no posts and no links until it is done. Each step starts lower and the reply limit grows by one about once a week when at least half of the catches were closed, so the pill on the card is the limit for today and can be below the step's top: a Regular account may read "Up to 3 replies + 1 post a day" with "Next +1 reply in 5 days". A follower drop of more than 10% in a week, or a profile hidden from X search, resets the limit and pauses outreach for 48 hours; a hidden profile stays paused after that until X shows it again. Blocked covers a profile hidden from search, an account X cannot find, a suspended or protected account, and tweets X does not return; the card carries the steps for each. The X score reads account age, followers, activity, Premium and how replies land. Threads has no warm-up line, and the warm-up guidance shown for Instagram, TikTok and YouTube is a separate thing with separate numbers that does not apply to Reddit.
The per-subreddit guidance lives behind the Account health button in the header of the Reddit section on Catches, next to the checklist and box icons that hold Completed and Archived catches, below the account audit and the bio block.
Practical advice: an older account with real history beats a fresh one every time. A new account should warm up with comments before it posts at all, which is why post drafts only come at the Insider step, and should keep the product name and the short link out of its bio until it has some age. Once an account is healthy and aged, putting the short link in the bio is what makes the traffic attributable.
Connecting a social account picks up whichever account is already logged in on that browser, so log out of the wrong one first or connect from a private window.
Threads is the third catch platform and works, with posts only and no warm-up line. LinkedIn and Facebook groups appear in the interface but neither works as a source of catches in the current version. LinkedIn catches are planned for October 20; Facebook groups have no timeline we can share. Publishing videos to Facebook is a separate thing and does work.
Videos
A swipe deck of AI-generated vertical videos in UGC style with captions, made for your product. 20 swipes per day; approving and rejecting both count, publishing does not. When they run out you get a fresh set the next day. A card that is swiped left is not lost: it goes to the Archive, behind the box icon next to My posts, stays there with no time limit, and can be published from there with its Schedule post button without spending swipes. An empty deck reads "No more ideas right now. Check back soon.", which is the pacing between batches or the day's set being spent rather than a fault; a deck stuck on it for longer than a day is worth looking into.
The video renders after you approve it, not before. Platforms are Instagram, YouTube, TikTok and Facebook, connected through a hosted login from Settings, then Social accounts, or right after your first accept. Instagram has one requirement that decides whether anything ever publishes: it only lets apps post through a Professional account, meaning Business or Creator, linked to a Facebook Page the customer manages. A personal account never appears in the picker and can never publish, by anyone. It can also pass the connect step and then fail at the last stage of every publish, which reads as a broken scheduler, and it can leave a blank Instagram entry with no username, which is an empty connection rather than a working one. If everything looks connected and posts still fail, Page Publishing Authorization on the Facebook Page is the next thing to check: Meta requires it for some Pages and publishing through the API fails without it, and there is no way to detect it in advance. Facebook connects through the same hosted window and what gets connected is a Facebook Page, with two quirks of its own: during connection it offers a choice between Standard Access and Business Access, and Standard is the one to advise, as the window itself says to choose standard access if unsure; after connection the account can display as a numeric ID, for example @103898185880373, instead of a name, which is normal and not a sign of a wrong account. Connecting and disconnecting is always available under Settings, then Social accounts, whether or not any swipes are left today; the video approval screen has the same controls, but only while swipes remain. Warm-up guidance appears for new accounts. These four publish automatically: once the account is connected, a video you accept is scheduled and posted for you without a further confirmation, which is the one place HeyCatch publishes on your behalf. The caption, meaning the text that goes out with the post, is edited at the Content details step before the post is scheduled, and on a scheduled post with Edit caption under My posts until it goes out. You either auto-schedule the video or post it as soon as possible. Closing the publishing flow partway through asks "Leave without posting?", with Continue setup to go back and Discard and exit to leave.
My posts lists everything with thumbnails, times, platform, status and a preview, and lets you cancel a scheduled post with Cancel posting or change its caption with Edit caption. A failed post can be sent again: it carries an Auto-schedule and a Post ASAP button, and either one re-sends it. A post that went out on some of its platforms and not others reads Partly posted, and Post ASAP on it sends only to the platforms it is missing, so nothing publishes twice.
A slideshow card publishes as one Instagram carousel post rather than as several posts, and Instagram caps a carousel at 10 images, so a card above that cap cannot publish at all. Newly generated cards cannot exceed the cap; cards generated before the fix keep the old behaviour, so an over-long slideshow still in a deck is an old card. A scheduling attempt that fails leaves no record, which is why "Couldn't schedule your post, it's back in your deck" arrives with no reason attached and nothing can be read back afterwards.
A video that already exists cannot be edited. The text burned into it, the image, the background and who appears on screen are all fixed once that video exists, so what shapes the next ones is Post settings. Where somebody says the imagery does not suit their product, the first answer is to pick the photos and videos they like from our library: Post settings, Background images and videos, the Add photos and videos tile, search, pick, then Add to library, and those picks are used in their videos. After that come their own uploads in the same section, the scale set to Mostly mine or Only mine, Format mix, and Regenerate videos to rebuild the cards already waiting in the deck. Only the caption can be changed: at the Content details step before the post is scheduled, and afterwards with Edit caption on the scheduled post under My posts, which has a separate field for each platform, up to 2200 characters each, and shows the Post settings hashtags with a Hashtags settings link. It works until the post goes out. The time of a scheduled post cannot be moved; Cancel posting is the other control there.
Post settings sits behind the gear icon in the top right of the Videos screen and has nine sections: Background images and videos, Format mix, Content angles, Tone & Voice, Hashtags, Identity & Product, Purpose & Positioning, Market & Competition, and Brand mentions & Creator gender. The first takes the customer's own material, images up to 10 MB as JPG, PNG or WebP and video up to 50 MB as MP4 or MOV, dragged onto the upload area or picked through Browse files here, and photos and videos picked from our library through the Add photos and videos tile next to it: a search (the picker suggests describing the setting, "morning kitchen", "city street"), a grid with the author under each result, one or more picks, Add to library with no price on the button, and the pick lands first in the same list as the uploads. The picker's own note applies to every pick: stock is background only, so no one in it appears to endorse the product, and shots with visible logos are skipped. Under the tiles sits a five-step scale, Only stock, Mostly stock, Mixed, Mostly mine, Only mine, setting how often posts use that library instead of stock we pick. Format mix, the second section, sets the share of new videos in each of four formats, Slideshow, Wall of text, Green screen and Hook demo videos, 25% each by default: press the pencil, type the shares in percent, any numbers that total 100%, and Save; the mix applies to new generations, and Regenerate videos rebuilds the cards already waiting in the deck with it, and Hook demo videos are only made once a Hook video is uploaded, otherwise that share goes to the other formats. Hashtags, the fifth section, holds the hashtags that always go on posts: up to 10, up to 30 characters each, the # added automatically, added with Add Hashtag and removed with the cross on each one, with a checkbox per platform for Instagram, YouTube, TikTok and Facebook. They go onto the cards already in the deck as well as new ones, with no regeneration needed, they show in the caption at Content details, and HeyCatch adds none of its own. It saves on press. Below the scale sits a gallery of everything uploaded, with All, Images and Videos tabs and each file listed with its name, size and upload date; a file's card carries categories under "Where this file can appear in your posts.", Slideshow image and Green screen background for an image, Background video and Hook video for a video, which control where the file can be used: a Background video is ordinary footage, the clip behind the text in a Wall of text video; a Hook video is the person in the first two seconds of a Hook demo video, before the product is shown, and Hook demo videos are only made once one is uploaded; a Green screen background is the image a person stands in front of in a Green screen video, reacting to what is on it. Category changes apply to future generations only, never to cards that already exist. The pencil icon edits a file, the cross deletes it, and deletion asks for confirmation and cannot be undone. Uploaded material is used in videos and in image posts. Changes apply to videos made from then on; Regenerate videos rebuilds the ones already waiting in the deck. Neither uploading nor regenerating spends swipes or credits. Anything to do with steering what gets made lands on this screen: what the videos are about, the story lines behind them, the voice and messaging, which photos are used, which features of the product get promoted, and the context the whole thing works from.
Analytics
Install, staged: Install is a screen in the Analytics sidebar until the first install is confirmed, and once an install is confirmed the panel, project key and install check sit behind the gear icon in the top right of the Product page. The panel has two sections, Web app / Website and Mobile app, each with its own Installed or Not installed status, and both use the same project key; Product itself has a tab per surface, each with its own cards and charts, with + Add mobile app in place of the second tab until the app is installed. The chart card lists the saved charts under the chart's name, with + Create new for a funnel of 2 to 20 steps or a flow map, and its three dots hold Edit and Delete. The AI chat still changes a funnel's steps when asked, after the customer confirms the change; the Edit in chat link under the card is gone. On the panel: pick your framework, press "Copy prompt", and paste it into your AI builder or coding agent. The ones named on that screen are Claude Code, Cursor, Codex, Lovable, Bolt, v0 and Replit, and the Framework row lists React, Next.js, Vue, Svelte, Astro, Angular and Plain JavaScript for the web, and React Native, Swift, Kotlin and Flutter for mobile. The prompt is not limited to that row: on the web it works with any framework, or plain HTML with no build step. For a site on a website builder, WordPress, Webflow, Wix, Squarespace, Shopify or Framer, the same screen has a line with a link, Open the setup guide. What the button copies is not a snippet of code: it is one instruction line pointing the builder at our public install guide and carrying the project key, so the builder does the install and reports back. Then publish, open your own site and click around to generate events, and press "I've installed"; the button goes to "Verifying" with "Checking your install...", a pass reads "Connected. You're good to go." and the section's status turns to Installed. That check only counts events from the last 30 minutes, and that is the whole window rather than a rounding, so verify within half an hour of clicking around, otherwise a working install reports as failed with "Couldn't verify your install. Please try again.", which does not say why. A quick self-check: a working install prints a line like [HeyCatch] SDK v0.8.0 (prod) initialized in the browser console, no line at all means the SDK never loaded, and dev in place of prod means a development-channel build that has to be replaced with the plain version. Expect about 30 minutes before the dashboard itself is worth looking at. Within the stacks we support the same prompt covers a mobile app and a website, so a founder with both does not need two prompts. For builders that cannot install from npm, the same module is imported from a CDN with the exact version pinned, https://esm.sh/@heycatch/sdk@0.8.0 today, inside a script type=module block. There is no script src tag and no window.heycatch global, and that route covers the web only. An unpinned URL re-resolves on every page load. A version that ends in -dev followed by a number is one of our internal builds: it points at a separate development backend, so the install looks healthy and no data ever arrives. Pin a plain version with no -dev. If the page sends a Content-Security-Policy it has to allow the CDN and in.heycatch.ai, which serves the events endpoint and one static script the SDK loads.
Mobile, and it depends on the stack. Native Swift and SwiftUI, Kotlin and native Android, and Flutter are self-serve through the same install prompt: our guide has the coding agent add PostHog's own open-source SDK for the platform (posthog-ios, posthog-android or posthog_flutter) pointed at our endpoint, register the project key and group the app under the project, then identify, send screens and capture business outcomes; an app that already runs PostHog for itself sends the same events to us over plain HTTP instead of a second setup. A debug build on a simulator is enough to verify: events show within about half a minute or when the app goes to the background, then press I've installed. The steps are in the Swift and Kotlin answer and the Flutter answer under Analytics. React Native and Expo do have a ready package entry point: install @heycatch/sdk, call analytics.init with the project key at module scope in the root layout rather than in a component or a hook, and wrap the layout's children once in HeyCatchProvider, which enables tap capture and, on Expo Router, automatic screen views. On Expo also install expo-file-system, expo-application, expo-device and expo-localization; without expo-file-system the visitor identity resets on every launch and the same person counts as new each time. On any navigator other than Expo Router, screen views are sent by the customer with analytics.trackScreen(name). A native build has no pageviews and short links do not apply to it. Store-level numbers, impressions and installs, never come from us and live in App Store Connect and Play Console.
Server side, and it is an addition to a client install rather than a replacement for one. A project with no client surface installed is not supported, so the server entry cannot be a project's only install. Where the client is already in place: import from @heycatch/sdk/server, init once at module scope rather than per request, and await each call. Sends immediately, no batching, no cookies, no DOM, and it never throws, so a failure logs and resolves. Property values are string, number, boolean or null. Every call needs a stable internal user id, the same one the client uses. It works from CommonJS with require, and geo lookup is off by default on this entry. Channel attribution and short links come from the client alone, because both are built from pageviews and the referrer.
Product, the former Dashboard entry in the sidebar: a written summary of what is happening, five metric cards, a chart of how people move through the product, recommended fixes, and a users table with status chips. The cards are Total users, Sessions, Pageviews, Clicks and Total events, each with its percentage change, alongside a refresh button and a period filter covering the last 30 days. The chart under the cards is a funnel or a flow map, picked from the list under the chart's name. The first ones are made automatically from the customer's own tracked events, Default users journey, a flow map, and Conversion funnel, and the customer can build more: a funnel of 2 to 20 fixed steps, or a flow map that follows every path people took from one event. A step is a named event or a visit to a page. The users table carries the person, a short summary, country, status, sessions and last activity, with search by email, id or summary, and where no email was collected an identifier shows instead of a name. Open a user and you get total sessions, total time, average session length, days active, the current stage, the last activity, a short written description of their behaviour and a list of sessions with device, browser, event count and page count. Open a session and you get its Session timeline in two views: Summary, a short list of what the person did with a few words on each, and All events, every event with its time to the second, its type, click or pageview, and the clicked element's text or the page. Those written descriptions are not live and each carries the time it was last refreshed.
Early on the dashboard is thin and the recommendations are cautious. That is expected with little data.
Short links: one per channel for profile bios, each a single letter on the customer's own domain, plus custom links, and a traffic-by-platform chart. A new project starts with seven pre-built links, Reddit, X, Facebook, Instagram, Threads, YouTube and TikTok, and a project created earlier keeps the links it already has. A custom link is a name and one letter picked from the Letter list, for any other channel such as an email, a campaign or a partner, and it gets its own row and its own line on the chart. The addresses are on the Short links screen, one per platform, each with a copy button. They are for websites only and have no equivalent inside a mobile app. To resolve, they need a short redirect on the customer's own site: a one-character path leading to the site with the source tag attached, which the AI builder sets up by following our install guide. A customer with no control over their server or hosting configuration may not be able to add it and should come to us. If the server answers that path with an ordinary 404 page the fallback cannot rescue it, because our code does not load on a 404 page. Deleting a link is permanent: the link and all the tracking data connected to it, its click history and analytics included, are deleted and cannot be recovered.
Attribution is channel-level only. Short links and the SDK tell you which platform brings visits, signups and payments. There is no post-level attribution tying one reply to one customer.
What the SDK captures automatically: pageviews, clicks, route changes, the full URL, and IP, device and browser. Clicks include the text of the element that was clicked, deliberately, because those labels are what let the dashboard describe what a visitor actually pressed. The contents of form inputs are never captured, and there is no session replay or screen recording. Capturing starts as soon as init runs. A site with a consent banner passes optOutCapturingByDefault: true in init: nothing is sent and nothing is written to browser storage until analytics.optInCapturing() is called, and analytics.optOutCapturing() stops it again. From SDK 0.8.0 the customer can remove the text of clicked elements with maskAllText: true, or turn off the automatic capture of clicks and form submissions with autocapture: false, at the cost of the labels in the recap. Headless and automated browsers are filtered as bot traffic, so an install tested by a script shows a healthy init and no events.
There is no analytics for published posts. Instagram, TikTok, Facebook, Reddit, YouTube and X have no metrics anywhere in the product: no views, likes, comments, shares, reach or saves, for any post. What a customer gets after publishing is the live link to the published post, and the platform's own app is where its numbers are. Everything described above is site analytics, which is a different thing and does exist.
End-user data deletion: there is no API endpoint and no dashboard control. A founder who has to delete one of their own users' data emails support@heycatch.ai with the user id or email and we do it by hand. That matters for App Store and Play Console account-deletion requirements.
Credits
Credits are the single meter for everything paid inside a project, and they replaced the old per-action counters. A plan grants credits in one go at the start of each paid period, 300 on the 2-week plan (the intro plan, which is also the trial), 300 on the 4-week plan and 600 on the 8-week plan, and one credit is ten cents at face value.
Prices, all shown on the buttons themselves: an AI chat message 1 credit, Apply changes 30, Re-run Reddit account health 15, Re-run X account health 15, a re-run of Website optimization or Listing optimization 40, a re-run of the SEO audit 40, adding an app listing or a website to a project 40. Applying edits to Product brief, Audience and Competitors together is one application at 30 credits, and it regenerates everything except the Website or Listing audit.
What credits do not meter: the daily limits, meaning catches, which refill on their own and cannot be bought, and the 20 video swipes a day, which refill on their own; rendering a video on approve; publishing; marking a fix done with its Complete button inside the Reddit or X account audit; on the SEO page, the first audit when the website is added and every Recheck and Recheck all fixes; saving an edit without applying it; and Regenerate videos in Post settings, which is free and keeps its own allowance of 3 per 4-week window.
The AI chat is AI Chat, under Home in the sidebar. The first 5 messages every day are free and stay free, and from the sixth each one costs 1 credit. Every account also gets a free window of 4 weeks in which the chat spends no credits at all, and the end date of that window is shown in the chat. It answers and drafts from the project's data, and the one thing it changes in the project is the conversion funnel's steps, when the customer asks and after the customer confirms the change it proposes (steps cannot be renamed): applying edits, publishing, settings, connecting accounts and the project link are done in the interface, and the chat can only say where. At zero credits the input is disabled and the screen shows the next grant date and a top-up button; nothing is ever charged automatically.
Two kinds of credit. Plan credits arrive with a project's subscription in one grant at the start of each paid period, live for that period, expire at its end, do not roll over and are never pooled across projects; on an 8-week plan the 600 live for the whole 8 weeks, and nothing resets inside the period. Bought credits never expire while the account exists, live in one account-level wallet, and can be spent in any project with an active subscription; if the account is deleted, unspent bought credits are forfeited. Spending draws on the project's plan credits first and the wallet second.
Packs are a one-off charge on the saved card rather than a subscription: 100 credits for $9.95, 300 for $24.95 saving 17%, and 1000 for $69.95 saving 30%. A first pack may carry a double-credits offer, 200 for $9.95, which runs for 7 days after the first time a limit is hit and can be used once. There is no auto-refill.
Where to look. The header of the app carries the balance with a credit icon; clicking it opens a popover reading "From your plan N of 300 · resets {date}", "Your wallet N", with Buy credits and View history. Settings, then Credits, is the full screen: the wallet, plan credits per project with each reset date, the transaction history with a Project column and a Source column reading Plan or Wallet, and a link to invoices. Under the chat composer it reads "5 more free tomorrow · 1 credit per message".
States. A project whose subscription has expired goes read-only: its plan credits are frozen and expire on their normal schedule, and the wallet cannot be spent there, because the chat and every re-run need an active project. With every subscription cancelled, bought credits stay in the wallet and wait; they are never refunded automatically. Credits added by support appear in the history as Gift from support.
Plans and billing
Billing runs in periods of 2, 4 or 8 weeks rather than calendar months. Every price, standard and introductory, is on the limits and numbers page, which is the one place they are kept.
The funnel prices apply to the first payment only. A trial converts to the 4-week plan at standard price; the intro price, the standard renewal price and the renewal date are all shown at checkout, and cancelling before the introductory period ends is how you avoid the standard price. There is no free tier: the trial is a paid subscription.
An additional project runs on its own subscription, billed separately from the first, under the same account rather than a separate email. It is added from the project switcher at the top of the sidebar, under Add new, and the plan and its price are shown in the Add new project window before payment. It is $59.95 per 4 weeks or $119.90 per 8 weeks, and that price is permanent for the project, renewals included. The two-week plan is an introductory option on a first project only and is not offered for additional ones. There is no bundle and no shared allowance across projects.
Credit packs are bought separately from the plan and are a one-off charge on the saved card, not a subscription and not an add-on: 100 credits for $9.95, 300 for $24.95, 1000 for $69.95. They appear in billing history with the rest of the invoices. See the credits section above for what credits buy.
Two payment processors are connected: Stripe is the primary one and Paddle is the backup. Every payment currently runs through Stripe. A receipt naming Paddle is still us, and a refund is executed on whichever side took the payment. Settings, Billing tab holds the plan card, switching between 4 and 8 weeks, payment method, billing history and cancellation. Cancellation is not on that page directly: it is behind Change plan, then a Manage subscription link under the current plan.
Refunds
Payments are non-refundable and a partially used billing period is not refunded. Once deliverables have been generated in a period, that period is earned. The reasoning is in the policy itself: the brief, audience and competitor research, site audit and action plan are generated the moment a project is created, and every video generation or Reddit and X analysis spends paid AI compute the instant it runs.
The published policy at heycatch.ai/refund is the only authority on refunds. Nothing said in a chat adds to it.
Refunds are assessed per billing period rather than per subscription. Always refunded: duplicate, erroneous or unauthorised charges, verified at any time; a paid period in which nothing at all was generated for the project, refunded in full; the unused half of an 8-week plan, which is billed once but assessed as two 4-week halves, so if no deliverables were generated in the second half that half is refunded, 50% of the plan price, whether the second half has started or not; and an untouched credit pack, refunded in full on request within 14 days of purchase, provided no purchased credits have been spent since that purchase. The policy's own example: you used the first period and were then charged for a second you did not touch, so the second is refunded in full and the first is not.
Statutory rights apply on top: nothing in the policy limits rights you cannot waive under the law that applies to you. US residents get whatever their state law provides on automatically renewing subscriptions. We do not offer or target the Services in the EEA or the United Kingdom, so the policy is not written around EU or UK withdrawal rules. The published policy at heycatch.ai/refund is the authority, and anything that turns on your local law goes to a person rather than being settled in chat.
What does not qualify, except where the law says otherwise: a change of mind or unmet expectations; dissatisfaction with the quality, style or usefulness of AI-generated output; unused access or allowances inside a period that did produce deliverables; unspent plan credits; credit packs from which any credit has been spent; purchased credits you choose not to use, including after cancelling; platform restrictions, bans or content removals on Reddit, X, Instagram, TikTok or YouTube; reduced reach, engagement or follower growth; and anything caused by your own content, instructions, accounts, devices or integrations. An entirely unused billing period stays refundable, as does the unused second half of an 8-week plan.
Outside the always-refunded cases you can still ask for a discretionary refund: email support@heycatch.ai from your account email with "Refund" as the subject and a short description, and we aim to respond within 5 business days. We review each request case by case. A discretionary refund in one case does not create an obligation in another.
An approved refund goes back to the original payment method, normally within 5 to 10 business days.
Before disputing a charge with a bank, email us: a refund we grant lands in days where a dispute takes weeks, and while a dispute is open we may suspend or cancel the affected subscription; if the disputed charge is a credit pack, its credits are removed from the wallet while the dispute is open.
Cancelling stops future renewals but is not itself a refund, and deleting an account does not cancel a subscription. If an account is terminated for a material, uncured violation of the Permitted Use Policy, fees already paid for the current period are not refunded.
Cancellation and what happens after
A customer can cancel themselves in the app: Settings, then the Billing tab, then Change plan on your plan card. Inside that window, under your current plan, there is a Manage subscription link, and Cancel subscription sits behind it. You then pick a reason, press Continue, and confirm on the Before you cancel screen. The route in is labelled Change plan, so customers often report seeing no cancel option.
When a customer asks us to cancel for them, the cancellation answer gives them the self-serve path in full, with the button names, and only then offers the handover. Never compress the path into something like "open billing and go through the cancellation flow": the route in is labelled Change plan, so a customer told to look for Cancel walks straight past it. Spell the steps out every time.
No turnaround time is ever promised. Not two business days, not any other figure. What is offered is a handover, not a deadline: if the customer cannot get through the flow, the conversation goes to a person who cancels it for them.
Never ask for an email that is already on the conversation; only when the conversation carries none, ask which email they sign in to HeyCatch with. When Crisp carries it, it is on the operator's screen, so state it and invite a correction instead: "I can see the account on <address>." Name the address; never demand one. Exactly: "I can see the account on <address>. To cancel it yourself: Settings, then the Billing tab, then Change plan on your plan card. Inside that window, under your current plan, there is a Manage subscription link, and Cancel subscription sits behind it. You then pick a reason, press Continue, and confirm on the Before you cancel screen. If you cannot get through it, say so here and we will pass you to a person who will cancel it for you. If the subscription is on a different address, tell us which one."
Asking what made them decide to cancel is optional and must never be framed as a condition for cancelling. A customer who asks again gets the cancellation answer in full on that turn. If it is asked at all it is an aside the customer is free to skip.
A cancellation that is handed over goes to a person, who works from the address already on the conversation, or from the sign-in email the customer gave when the conversation had none. An address that is already there must never be asked for again. Proving they own the account is a separate and real requirement, and it is handled by the per-tool identity check, not by asking anyone to retype an address.
Cancelling keeps your access to the end of the period you have paid for, including scheduled posts, and can be undone for free with Resume while that period is still running. It is also how auto renewal is turned off: there is no separate auto-renew switch, and once the plan is cancelled no further charges are made to the card or the bank. Cancelling an account, a membership, a plan or a service all mean this one action, and so does asking not to be rebilled.
There is no delete-account control in the app, which is why customers report seeing no spot within the app to delete their account. Deletion is done by us on request, and the subscription has to be cancelled first, because deleting an account does not stop billing. Unspent bought credits in the wallet are forfeited when the account is deleted.
After the period ends the account goes read-only: old catches are viewable but not actionable, scheduled posts are paused rather than deleted, the dashboard shows everything up to that date, and documents are readable. Billing stays fully accessible. Coming back after that is Reactivate, which is a new payment at standard price.
If a payment fails, access freezes into read-only immediately with no grace period and the card is retried in the background for up to 14 days; a successful retry restores everything automatically, and if it still has not gone through after that, the subscription ends.
Your account and workspace content, the project, the documents, posts and videos, are kept for the life of the account, including after the subscription ends, and are deleted within 30 days of a deletion request to support@heycatch.ai. Public social content shown in catches is kept for 30 days, and access to your connected social accounts is deleted no later than 30 days after the subscription ends.
End-user analytics collected by the SDK is the exception. The SDK stops collecting while the subscription is inactive and that gap cannot be backfilled, and the data already collected is deleted or irreversibly anonymised automatically 2 months after the subscription ends, unless you reactivate inside that window or ask for earlier deletion.
Emails and alerts
The login code and a "your growth profile is ready" message after the analysis finishes. A daily morning digest goes to active users with at least one connected platform, covering today's catches, scheduled posts and tasks, and is skipped when there is nothing to say. Alerts go out in real time when a post fails to publish, a social account disconnects, or the SDK goes quiet. Everything is duplicated in the in-app bell, and both the categories and the digest time are configurable in settings.
Not available in the current version
Each of these is missing, with what to do instead. Where there is no substitute, it says so rather than leaving you to guess.
- A second link change inside one billing period. The customer changes the project link themselves, once per billing period, with the pencil on the Product brief page, and the new link can be a different product; a second change inside the same period is not possible, including by us. A different product at the same time is a second project, which you add yourself from the project switcher at the top of the sidebar, under Add new.
- A full re-analysis of the site after onboarding. The site audit re-run reads your page again, as do the SEO page's re-run and rechecks, and each re-scores its own audit rather than rebuilding the documents. To change the documents, use the Edit button on the brief, audience or competitors; that applies when you press Apply now, or on its own tonight at midnight in your timezone if you do not, and it costs 30 credits either way.
- Verifying a single site audit or listing audit finding on its own. A site audit or a listing audit is re-scored by a full re-run, 40 credits, and nothing else re-reads the page or the listing. On the SEO page a Recheck checks one fix at a time, for free; on the Reddit and X account audits you mark a fix done yourself with its Complete button.
- Facebook group catches. Publishing videos to Facebook works and is a different thing; a Facebook group as a source of catches is not available. Reddit, X and Threads are the catch channels that work today.
- LinkedIn catches, which are planned for October 20. Reddit, X and Threads are the working channels until then.
- Automated posting to Reddit, X and Threads, deliberately. The draft, the subreddit, the timing and the rules are all in the catch, so publishing is a copy and a paste. Videos are the exception and do publish automatically to Instagram, TikTok, YouTube and Facebook.
- Replies to other people's posts on Threads. The platform gives tools like ours no way to post one, so there is nothing to draft and nothing to switch on. Threads catches are posts only.
- Post-level conversion attribution. The nearest real thing is a custom short link: give one post its own link, with its own name and letter, and the traffic, signups and payments through it are attributable to that post. Without a distinct link there is no way to tie a customer to a single reply.
- AI-generated tasks. The task list is fixed. The Action plan is the part written for your product.
- AI-search or GEO visibility tracking. Nothing here measures whether AI assistants mention you, and no other part of the product stands in for it. Analytics covers people who reach your own site, whatever sent them, and the SEO page under Growth Audit scores how well search engines and AI assistants can reach, read and quote the site; it does not track mentions.
- Team seats and roles. There are no separate seats or permissions, but a second person can be added to an account: under Settings, Account, Profile, press Add email address and enter their email, then confirm it from that inbox. They sign in with their own email and work in the same account, with the same projects, billing and credits.
- A HeyCatch mobile app. The web app opens in a mobile browser but is not adapted for one, so use a desktop browser.
- App Store Connect and Play Console metrics. Impressions and installs exist only in Apple's and Google's own consoles. The SDK covers in-app events instead.
- Analytics for published posts. Instagram, TikTok, Facebook, Reddit, YouTube and X have no per-post metrics in HeyCatch, so there are no views, likes, comments, shares, reach or saves to read here. What you get after publishing is the live link to the post, and the platform's own app has its numbers. The analytics section covers your own site instead.
- A public API, an API key or an MCP server. There is nothing to connect your own tools to today, and no other part of the product stands in for it. It is being built.
- Exporting a document to a file. The site audit and the action plan cannot be downloaded in any format, and nothing else here exports them. The text on the page can be copied instead.