Product Hunt meets Discord for top launches posts
Checking Product Hunt, picking the top launches, formatting a clean post, then dropping it into Discord sounds simple. It’s not. It’s the kind of “small” task that quietly steals an hour, then two, then starts getting skipped.
Community managers feel it when the server goes quiet. A founder running growth doesn’t have time to babysit daily updates. And a marketer trying to keep engagement steady needs Product Hunt Discord automation that works even on busy days.
This n8n workflow pulls the top 5 products from Product Hunt every hour and posts them to your Discord server. You’ll see exactly what it automates, what you need to run it, and where teams usually tweak it for their own community.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Product Hunt meets Discord for top launches posts
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Scheduled Automation Trigger", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/graphql.png' width='40' height='40' /></div><br/>GraphQL API Query"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/itemLists.svg' width='40' height='40' /></div><br/>Split Item List"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Data Fields", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/discord.svg' width='40' height='40' /></div><br/>Dispatch Discord Alert"]
n3 --> n4
n0 --> n1
n1 --> n2
n2 --> n3
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
classDef customIcon fill:none,stroke:none
class n1,n2,n4 customIcon
The Problem: Sharing Product Hunt launches is easy to forget
Product Hunt moves fast. If you’re trying to keep a community in the loop, manual posting turns into a repetitive daily chore: open Product Hunt, figure out what’s actually “top,” copy the details, clean up the text, and then remember to post it at a decent time. Miss a few days and people stop expecting updates, which means fewer clicks, fewer conversations, and less momentum in the place you’re trying to build. Honestly, it’s not the work that kills you. It’s the constant context switching.
The friction compounds. Here’s where it usually breaks down.
- Someone posts late (or not at all), so your “daily drop” becomes random and unreliable.
- Manual formatting leads to messy links, inconsistent titles, and posts that people scroll past.
- Top launches get missed because no one has time to check Product Hunt at the right moment.
- It becomes a single-person task, and the moment they’re busy, the habit dies.
The Solution: Auto-post the top 5 launches to Discord
This workflow turns Product Hunt updates into a scheduled, hands-off community feed. It starts on a timer (every hour by default), then queries the Product Hunt GraphQL API using your Product Hunt token. Instead of leaving you with one big blob of data, it splits the response into a list of items, then maps only the fields that matter for a Discord post: product name, description, and vote count. Finally, it sends the top 5 products straight into your chosen Discord channel as a clean alert. Consistent output, minimal noise.
The workflow runs on a schedule, pulls fresh launch data, and formats it into something readable. Discord receives a ready-to-post update without you touching a keyboard.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you share the top 5 launches once per day. Manually, it’s usually about 10 minutes per product to open the page, grab the key details, and format a post that doesn’t look sloppy, so around 50 minutes total. With this workflow, your “work” is basically zero after setup: the Cron trigger runs every hour, the API call pulls fresh results, and Discord gets the update automatically. You get close to an hour back each week, and the community sees consistent drops.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Product Hunt for accessing top launches via API
- Discord to publish updates into your server channel
- Product Hunt API token (get it from your Product Hunt developer/API settings)
Skill level: Beginner. You’ll connect accounts, paste an API token, and choose a Discord channel.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Scheduled trigger fires. The Cron node runs every hour, which means you can keep your Discord channel updated without anyone checking Product Hunt manually.
Product Hunt data is pulled. n8n sends a GraphQL request to Product Hunt’s API using your token, then receives the “top” launch data back in one response.
The list gets cleaned up. The workflow splits that single response into individual items, then maps only the fields you want to show in Discord (name, short description, vote count). No extra clutter.
A Discord alert goes out. The Discord node posts the top 5 products into your server. If you want a different rhythm, you can send only once per day, or post into multiple channels with small tweaks.
You can easily modify the schedule to post at a fixed time based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set the workflow to run on a recurring schedule so it can fetch the latest Product Hunt rankings.
- Add the Scheduled Automation Trigger node as your trigger.
- In Trigger Times, set Mode to
everyHour. - Confirm the trigger is connected to GraphQL API Query.
Step 2: Connect Product Hunt via GraphQL
Query the Product Hunt GraphQL API for the top 5 ranked posts from the last 24 hours.
- Add the GraphQL API Query node and connect it after Scheduled Automation Trigger.
- Set Endpoint to
https://api.producthunt.com/v2/api/graphql. - Set Request Format to
json. - Set Query to
=query PostRanking{ posts(postedAfter:"{{new Date(new Date(Date.now()).getTime() - (1000*60*60*1*24)).toUTCString()}}", order:RANKING, first:5, postedBefore:"{{new Date(Date.now()).toUTCString()}}"){ edges { node { name tagline description votesCount reviewsRating } } } }. - Under Header Parameters, add Authorization with value
Bearer [CONFIGURE_YOUR_TOKEN].
[CONFIGURE_YOUR_TOKEN] with your live API token or the request will fail.Step 3: Split and Map the Returned Items
Convert the GraphQL response into individual items and map the fields needed for the Discord alert.
- Add Split Item List after GraphQL API Query.
- Set Field To Split Out to
data.posts.edges. - In Options, set Destination Field Name to
posts. - Add Map Data Fields after Split Item List.
- Enable Keep Only Set.
- Create a number field Votes with value
={{$json["posts"]["node"]["votesCount"]}}. - Create string fields Name and Description with values
={{$json["posts"]["node"]["name"]}}and={{$json["posts"]["node"]["description"]}}.
Step 4: Configure the Discord Alert Output
Send the formatted top 5 results to a Discord channel via webhook.
- Add the Dispatch Discord Alert node after Map Data Fields.
- Set Webhook URI to
[YOUR_ID]and replace it with your actual Discord webhook URL. - Set Text to
=Here are the top 5 PH projects: **Name:** {{$json["Name"]}} **Description:** {{$json["Description"]}} **Vote:** {{$json["Votes"]}} -------.
Step 5: Test & Activate Your Workflow
Run a manual test to confirm the data fetch, mapping, and Discord message all work end-to-end.
- Click Execute Workflow to run the process manually.
- Confirm GraphQL API Query returns a list of posts and Split Item List outputs individual items.
- Verify Map Data Fields outputs Name, Description, and Votes.
- Check your Discord channel for the formatted message from Dispatch Discord Alert.
- Once verified, toggle the workflow to Active to enable scheduled execution.
Common Gotchas
- Product Hunt credentials can expire or need specific permissions. If things break, check your Product Hunt API token in n8n credentials first.
- If you rely on scheduled runs, timing matters. If downstream nodes post empty or partial results, adjust the Cron timing and confirm the API response includes the “top 5” at that hour.
- Discord bots can post successfully but land in the wrong place. Verify the bot has permission to send messages in the target channel, and double-check the selected channel in the Discord node.
Frequently Asked Questions
About 20 minutes once you have your Product Hunt token.
No. You’ll paste a token, connect Discord, and choose where the message should go.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Product Hunt API access (usually free with a token) and whatever limits apply to your account.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s a common tweak. Change the Cron schedule so it runs once per day (for example, weekday mornings), then adjust the Discord message format in the “Dispatch Discord Alert” node to match your channel style. Some teams also add an If node to post only when vote counts cross a threshold, which keeps the channel from feeling spammy.
Usually it’s permissions. Make sure the bot is invited to the server, has permission to send messages in the target channel, and that the Discord credentials in n8n still have access. If it suddenly stopped working, re-authenticate the Discord account in n8n and try a manual test execution to see the error message.
A lot more than you’ll realistically post, since it only sends the top 5 each run.
It depends on how “clean” you want the result and how much control you need. Zapier and Make can work, but Product Hunt data often comes in a shape that needs extra parsing, and GraphQL support plus item splitting is where n8n is more comfortable. Another factor is cost: if you plan to run hourly and later add logic (filters, multiple channels, archiving to Sheets), task-based pricing can get annoying fast. With n8n you can self-host, run as often as you want, and add branching without paying per step. If you’re unsure, Talk to an automation expert and we’ll point you to the simplest option.
Once this is running, your community gets the top launches on autopilot. You get the time back, and the channel stays alive.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.