Send Facebook group posts to Zapier and Google Sheets
Zapier can no longer connect to Facebook groups by itself. GroupSignal can send it the group posts that matter to you: the posts that match a monitor, or only the ones you save. Set up a Zapier Catch Hook, and each post lands as a new row in Google Sheets.
Why Zapier's Facebook Groups app is gone
Meta removed the Facebook Groups API for every app on April 22, 2024 (Graph API changelog), and Zapier's Facebook Groups app stopped working the same day. No automation tool can read group posts through Facebook any more. GroupSignal works differently: its Chrome extension reads the groups you've joined while Chrome is open on your computer and signed in to Facebook. Sosaly then sends Zapier only the posts that match your monitors, never a whole group, and it sends them from its own servers, so delivery doesn't depend on your browser.
What you need
- A GroupSignal monitor watching your groups. Sending needs an active trial or plan.
- A Zapier account on a plan that includes Webhooks by Zapier. It isn't part of Zapier's free plan.
- A Google Sheet with a header row, for example: Date, Monitor, Post link, Text, Event ID.
Step 1: Create a Catch Hook in Zapier
- Create a new Zap.
- For the trigger, choose Webhooks by Zapier, set the event to Catch Hook and click Continue.
- Leave Pick Off A Child Key empty and continue.
- On the Test tab, copy the webhook URL. It starts with
https://hooks.zapier.com/hooks/catch/.
Leave the Zap open; you'll come back to it once Sosaly has sent a test.
Step 2: Add the webhook to your monitor
- In Sosaly, open Monitors, choose the monitor, and open its Webhook tab.
- Under Destination, choose Zapier Catch Hook and paste the URL into Destination URL.
- Choose When to send and What to include, explained below, then Save webhook.
Sosaly keeps the URL encrypted and never shows it again; to change it, choose Replace destination. Each monitor has its own webhook. To collect several monitors in one place, paste the same URL into each; every event carries its monitor's name.
When to send
- When saved (the default) sends a post the first time you choose Save opportunity in your inbox. Only posts you've chosen leave Sosaly, including Possible matches you decide to save. Saving the same post again never sends it twice.
- When matched sends every new AI match as it arrives, before you've reviewed it. Possible matches are never sent this way, and saving one doesn't send it either. If you want Possible matches in Zapier, use When saved and save the ones you want.
Neither sends anything from before you set up the webhook.
What to include
- Minimal: the event's ID, type and time, the monitor name, and the link to the post on Facebook.
- Standard (recommended): Minimal plus the post's text. Very long posts are cut short, and a photo or video post without text has empty text.
- Full context: Standard plus the author's name and the group's name, when they're known.
No profile includes the AI's reason for a match (the Why it matched line in your inbox), your Find and Ignore wording, or the author's profile or picture. Post text and names can identify people, and once they're in Zapier and the apps it connects, Sosaly can't delete those copies. Choose the smallest profile that does the job.
Step 3: Send a test
After saving, choose Send test under Webhook delivery on the same tab. Sosaly sends an event with invented content, so Zapier can see the fields before a real post arrives. In Zapier, choose Test trigger and pick the request that arrives.
Every event is a JSON object with these fields:
eventId: a unique ID for the event. If the same ID arrives twice, it's the same post.eventType:opportunity.saved(When saved) orcandidate.matched(When matched).occurredAt: when the post was saved or matched, in UTC.monitorName: the monitor that found the post.primarySourceUrl: the link to the post on Facebook.postText: the post's text, with Standard and Full context.authorDisplayNameandtargetDisplayName: the author's and the group's names, with Full context, when known.schema,profile,sourceandcontentKinddescribe the event's format, profile and source.
{
"schema": "groupsignal.webhook@2.0.0",
"profile": "STANDARD",
"eventId": "550e8400-e29b-41d4-a716-000000000036",
"eventType": "opportunity.saved",
"occurredAt": "2026-01-15T12:00:00.000Z",
"monitorName": "Example opportunities",
"source": "facebook",
"contentKind": "POST",
"primarySourceUrl": "https://www.facebook.com/groups/123456789/posts/987654321",
"postText": "A local business is looking for a website designer next month."
}Step 4: Add a row to Google Sheets
- Add an action step: Google Sheets, event Create Spreadsheet Row, and connect your Google account.
- Choose the spreadsheet and the worksheet. Zapier loads its columns.
- Map each column to a field from the test event: Date to
occurredAt, Monitor tomonitorName, Post link toprimarySourceUrl, Text topostTextand Event ID toeventId. - Test the step, check the new row in your sheet, then publish the Zap.
From then on, each event adds one row: one for every post you save with When saved, or for every new AI match with When matched. Delete the test row whenever you like.
If something goes wrong
The Webhook tab lists recent deliveries under Webhook delivery, each with its status:
- Accepted: Zapier received the event. That doesn't prove the rest of your workflow ran; check its history in Zapier.
- Pending: waiting to be sent, or to be tried again after a temporary error. Sosaly retries temporary errors on its own.
- Failed: Zapier refused the event, or it ran out of attempts. When Retry delivery is offered, fix the cause in Zapier first, then retry. An event can be retried for 24 hours after the post was saved or matched.
- Unknown: Sosaly can't tell whether Zapier received it. It may already have arrived, so a retry can create a duplicate; the
eventIdtells them apart. - Cancelled: not sent, because the webhook was paused, changed or removed before the event went out.
The most common cause of a failure is a Zap that's off or deleted, since Zapier may refuse events for it. Turn the Zap back on, or create a new Catch Hook and choose Replace destination, then retry.
Nothing listed at all? Only posts saved or matched after you set up the webhook are sent, and sending needs an active trial or plan. If no matches are reaching your inbox either, writing a monitor covers what to check.
Beyond Google Sheets
The same Catch Hook can feed any Zapier action: a Slack message, an email, a row in Airtable or a contact in your CRM. Zapier can't reply on Facebook for you, and the reply is better written by you anyway. How to reply to a post in a Facebook group without getting removed covers what to write. Using Make instead? Send Facebook group posts to Make.