IntegrationsAutomation

Brand mentions into a Zap, already filtered

Zapier is the answer to "can it talk to the thing we use", where the thing is a CRM, a spreadsheet or a task tracker. FishOut posts to a Catch Hook, which makes it an instant trigger rather than a polled one — worth understanding, because it is the difference between seconds and a quarter of an hour.

On every FishOut plan, including Free. Webhooks by Zapier requires a paid Zapier plan.

[01] WHAT LANDS THERE/ A ZAP

A mention, as it arrives in Zapier

Rendered by the code that sends it, from a sample Reddit post. Never the post body.
POST — catch hook
{
  "version": 2,
  "id": "mention.scored:wrq_sample:reddit-shared-inbox",
  "type": "mention.scored",
  "organizationId": "org_acme",
  "projectId": "prj_default",
  "occurredAt": "2026-10-19T18:30:00.000Z",
  "simulated": false,
  "data": {
    "resourceType": "mention",
    "resourceId": "mt_reddit-shared-inbox",
    "mention": {
      "id": "mt_reddit-shared-inbox",
      "platform": "reddit",
      "url": "https://www.reddit.com/r/smallbusiness/comments/1g7k2qx/shared_inbox_for_two_people/",
      "title": "Shared inbox for two people without a full helpdesk?",
      "authorHandle": "quietledger",
      "postedAt": "2026-10-19T09:08:10.000Z",
      "relevance": 96,
      "relevanceReason": "relevant",
      "labels": [
        "asking-for-recommendations",
        "has-a-problem"
      ],
      "labelNames": [
        "Asking for recommendations",
        "Has a problem"
      ],
      "replyCall": "reply_now",
      "replyHint": "answer",
      "subject": "topic",
      "sentiment": "neutral",
      "status": "new"
    },
    "links": {
      "self": "https://app.fishout.ai/api/v1/orgs/org_acme/projects/prj_default/mentions/mt_reddit-shared-inbox",
      "app": "https://app.fishout.ai/org/org_acme/project/prj_default/inbox?mt_id=mt_reddit-shared-inbox"
    }
  }
}

Zapier receives the same version 2 envelope as a webhook, unsigned — the Catch Hook URL is the secret. relevance, labelNames, replyCall and subject are all there to filter and map on. The post body is deliberately absent; links.self fetches it with your own API key.

[02] CONNECT IT/ SETUP

Point FishOut at a zap

4 steps, a few minutes end to end.
  1. 1

    Add a Catch Hook trigger

    In the Zap editor, make Webhooks by Zapier the trigger and choose Catch Hook for a parsed body, or Catch Raw Hook if you want the headers and the unparsed payload — which is what you need if you want to read our event-id headers.

  2. 2

    Copy the hook URL

    It appears in the Test tab with a Copy button. The URL is tied to the Zap and does not change, unless the Zap is transferred to another Zapier user — the URL carries the owner’s id. Zapier’s own advice is to treat it as a password.

    catch hook url

    https://hooks.zapier.com/hooks/catch/1234567/f8f22dgg/
  3. 3

    Paste it into FishOut and set a floor

    Under Settings → Notifications, add a Zapier channel, paste the URL and set a relevance floor. This is the channel where the floor is about money as much as noise: every successful action step downstream is a Zapier task. Zapier channels send each mention instantly rather than batching it into a digest.

  4. 4

    Build the rest of the Zap

    Send a test from FishOut so Zapier can learn the payload shape, then map the fields you care about — relevance, labelNames, replyCall, subject, platform, url — onto whatever comes next. The post body is not in the payload; fetch links.self with an API key if you need it. Free Zapier accounts are limited to a two-step Zap, so a filter plus an action needs a paid plan.

Then set the floor

On Zapier the relevance floor is a budget as much as a noise control. Triggers are free — Zapier does not charge for the poll or the catch — but every successful action step downstream is a task, so a floor of 40 rather than 70 can quietly multiply your monthly bill by a Zap you set up once and forgot. Set it where the downstream action is actually worth taking, and filter on labelNames or replyCall inside the Zap for anything finer.
Settings · Notifications

Zapier

https://hooks.zapier.com/…

Healthy

Relevance floor40

Eventsmention.scored
Batch burstsoff
[03] WHAT IS IN IT/ FIELDS

What Zapier receives, field by field

Built from the event’s envelope and nothing else, so a retry renders exactly the message the first attempt would have.
Field How
relevance, relevanceReasonShownFilter on it in a Filter step if you want a second, Zap-side floor.
labelNames, labelsShownDisplay names and stable ids, in the same order.
replyCall, replyHintShownIds such as reply_now and answer; null where the platform has no Reply call.
title, url, authorHandle, postedAtShownThe title is the platform’s own, unclipped up to 300 characters.
links.self, links.appShownThe REST resource, and the mention in the FishOut inbox.
Post bodyNeverNever sent: the envelope does not carry it.
[04] EVERY EVENT/ INSTANT

One request per event, by default

A machine wants every event and can group them itself, so Zapier channels send each one as it happens. The same event can arrive twice after a retry: key on the envelope id, which is also the x-fishout-event-id header. Opt into the digest if you would rather receive a mention.digest per window.
Request headers
content-type: application/json
x-fishout-event: mention.scored
x-fishout-event-id: mention.scored:wrq_sample:reddit-shared-inbox
x-fishout-delivery: dlv_…
[05] WHAT WILL BITE YOU/ LIMITS

Zapier’s limits, not ours

These are Zapier’s constraints and failure modes, checked against its own documentation. Its pricing and plan structure move often enough that we link to it rather than quote it. Failures are tracked per channel, so one broken destination never stops the others.

Webhooks by Zapier is a premium app and needs a paid Zapier plan. A Free Zapier account cannot use a Catch Hook at all — the FishOut side is on every plan including Free, but the Zapier side is not. [source]

Because FishOut pushes to the hook, this is an instant trigger and skips Zapier’s polling schedule entirely. That schedule is 15 minutes on Free and 2 minutes on Professional, so the difference is not academic. [source]

Triggers do not consume tasks — only successful action steps do. It is the step after the trigger that costs, which is what makes the relevance floor a billing setting here. [source]

A Zap is capped at 100 steps, and a Free Zapier account is limited to two — one trigger and one action. A filter counts as a step but not as a task. [source]

The maximum payload is 10MB for a trigger and 2MB for a Catch Raw Hook, headers included. A FishOut event is a couple of kilobytes, because the post body is never in it. [source]

On a paid plan Zapier replays a failed step up to five times, backing off from 5 minutes to 6 hours — about ten and a half hours end to end — before it emails you. Autoreplay is not available on Free. [source]

Zapier turns a Zap off automatically if it errors 95% of the time over seven days and has run more than 20 times in that window. A Zap that silently switched itself off is a common reason alerts stop. [source]

In the channel’s delivery history
You seeIt meansDo this
http_404 / http_410The Zap or its hook no longer exists, or the Zap is off.Turn the Zap on, or copy the new Catch Hook URL into the channel.
redirect_not_followedThe URL answered with a redirect, which FishOut never follows.Paste the hook URL exactly as Zapier shows it.
invalid_destinationThe URL is not a hooks.zapier.com Catch Hook.Use Webhooks by Zapier → Catch Hook, or a webhook channel for anything else.
[06] WHERE MENTIONS COME FROM/ ROUTES
[07] OPEN IN FISHOUT/ THE INBOX

From Zapier to a drafted reply

“Shared inbox for two people without a full helpdesk?”, open in the inbox. You send the reply; FishOut never posts.
Redditquietledger
96

Shared inbox for two people without a full helpdesk?

Reply nowAsking for recommendationsHas a problemTopic

Draft reply · Answer the question directly

Copy and open threadYou send it

Questions