URL: /code/integrations/product-hunt · Id: `page:/code/integrations/product-hunt`

# Product Hunt

> Your agents schedule your launch as the maker, post the first comment at 12:01 am Pacific, and answer every comment through the day.

Your agents schedule your launch as the maker, post the first comment at 12:01 am Pacific, and answer every comment through the day.

```text title="Run it · Ask"
Queue my Product Hunt launch for Tuesday and show me the page it will make.
```

```ts title="Run it · SDK"
import { $ } from 'startup-builder'

const result = await $.try.Post.schedule({ handle: 'product-hunt:dana', title: 'Leaseline', body: 'Rent and renewal tracking for property managers', media: ['files/ph-thumbnail', 'files/ph-gallery-1', 'files/ph-gallery-2', 'files/ph-gallery-3'], publishAt: '2026-11-03T08:01:00Z' })
```

```json title="Run it · Response"
{
  "$type": "Post",
  "mode": "try",
  "stored": false,
  "venue": "product-hunt",
  "status": "scheduled",
  "name": "Leaseline",
  "tagline": "Rent and renewal tracking for property managers",
  "taglineLength": 47,
  "goesLive": "2026-11-03T08:01:00Z",
  "goesLiveLocal": "Tuesday, Nov 3, 2:01 am Central",
  "firstComment": "drafted, waiting for your approval",
  "runsBy": "browser",
  "steps": 11
}
```

- **Connect:** Sign in once, 1 grant
- **Runs through:** [A browser agent](/code/integrations#three-ways)
- **First run:** Watch your launch’s rank and comments for one day, free
- **Sites:** [Product Hunt](/venues#product-hunt)

## Connect once
1. Call `Integration.connect` with `system: 'social'` and `venue: 'product-hunt'`; a browser window opens on producthunt.com.
2. Sign in as the maker who will launch. The session is saved to your browser profile.
3. Call `Handle.connect` to bind the maker account as your account.

| Grant | What it unlocks | Scope |
| --- | --- | --- |
| Your saved session | The launch form, the first comment and your replies, as the maker | `browser session: producthunt.com` |

| To | Do this |
| --- | --- |
| Pause | `Integration.pause` holds every run that needs your Product Hunt session; the session stays saved. |
| Reconnect | `Integration.reconnect` opens a browser window where you sign in to Product Hunt once more; the saved session replaces the old one. |
| Disconnect | `Integration.revoke` deletes the saved Product Hunt session; every Post and reply it made stays in your records. |

## What your agents do
| Ask | Verb | Runs through | Price |
| --- | --- | --- | --- |
| Schedule my launch for Tuesday with the gallery, the tagline and the first comment, signed in as me. | [`Post.schedule`](/code/apps/social/schedule) | A browser agent | About 1.6¢ a step |
| Answer each comment I approve, signed in as me. | [`Conversation.answer`](https://startupbuilder.dev/business/nouns/conversation/answer) | A browser agent | About 1.6¢ a step |

Calls on your own account are free.

Reading this site’s public data needs no account: [`Monitor.create`](/code/data/monitors/create) is a Data call (the [three ways a call runs](/code/integrations#three-ways)).

## What it holds
| Noun | The account’s object | When | Which side leads |
| --- | --- | --- | --- |
| [Post](https://startupbuilder.dev/business/nouns/post) | `launch` | Your agent schedules the launch | The account |
| [Message](https://startupbuilder.dev/business/nouns/message) | `comment` | Someone comments, or your agent posts your reply | The account |
| [Prospect](https://startupbuilder.dev/business/nouns/prospect) | `commenter` | A commenter who fits asks a question or signs up | Your records |

## Events and webhooks
| Direction | Event |
| --- | --- |
| Emits | `Post.scheduled`, `Post.published`, `Message.created`, `Monitor.checked` |

Any Event can wake a Workflow, and a Watch delivers it to your endpoint, signed ([Events and webhooks](/code/events)).

## Limits
| What | Limit | Call |
| --- | --- | --- |
| Launch time | Launches go live at 12:01 am Pacific and the day’s ranking runs to midnight Pacific, so the agent schedules for 12:01 am | [`Post.schedule`](/code/apps/social/schedule) |
| Vote asks | Your agent asks your list for feedback, never for upvotes | Every call |
| Replies | Every comment gets a drafted answer within 30 minutes for the first 6 hours | Every call |

## Field map
| Our field | Product Hunt’s field | Notes | Calls |
| --- | --- | --- | --- |
| `Post.title` | `name` | None. | [`Post.schedule`](/code/apps/social/schedule) |
| `Post.body` | `tagline` | 60 characters: what it does and for whom | [`Post.schedule`](/code/apps/social/schedule) |
| `Post.media` | `thumbnail and gallery` | A square 240 × 240 thumbnail; the first gallery image is the link preview | [`Post.schedule`](/code/apps/social/schedule) |
| `Post.publishAt` | `launch date` | Product Hunt takes a day, and the launch goes live at 12:01 am Pacific that day | [`Post.schedule`](/code/apps/social/schedule) |

## What try does here
Returns the launch page as Product Hunt will show it, with the time it goes live in your time zone; nothing is scheduled.

## How long a connection lasts
A connection lasts as long as the site keeps your saved session signed in; the platform checks the session before every run.

The platform asks you to reconnect 7 days before it runs out; until you do, a call that needs it refuses with [`needs-reauth`](/code/refusals#needs-reauth).

## Formats
| Site | Format | Size | Limits |
| --- | --- | --- | --- |
| [Product Hunt](/venues#product-hunt) | Launch | None. | Tagline 60 characters; a square 240 × 240 thumbnail |

## Plays and strategies
| Kind | Where |
| --- | --- |
| Plays | [Launch sites](/plays/launch-sites), [Launch week](/plays/launch-week), [Category kit](/plays/category-kit), [Build in public](/plays/build-in-public) |
| Strategies | [Launch and search](/strategy/launch-and-search) |

## Used by
- **Agent tasks:** [Launch day](/capabilities/earn-first-links/launch-day)

## Reference

| Call | Path | Price |
| --- | --- | --- |
| [`Post.schedule`](/code/apps/social/schedule) | `POST /posts/schedule` | About 1.6¢ a step |
| [`Conversation.answer`](https://startupbuilder.dev/business/nouns/conversation/answer) | `POST /conversations/answer` | About 1.6¢ a step |