Skip to content
Integrations · Make

Post to social from Make — with receipts.

Publish, schedule, check account health, and react to delivery alerts from the Make scenarios your team already uses.

Quick answer

Create the Publishly app from this repository, add an API key, and choose whether the scenario posts content, checks receipts, watches account health, or reacts to alerts. A public Make catalog listing is not claimed yet.

01

Create the Publishly app in Make

The app currently installs from integrations/make-publishly in this repository through Make’s developer area. A public Make catalog listing is not claimed yet.

02

Give it only the access it needs

Add your Publishly address and API key. Limit the key to posting, reading receipts, checking account health, or receiving alerts based on what this scenario does.

03

Choose what the scenario should do

Publish now, schedule for later, get a delivery receipt, or check which brand, client, or location accounts need attention.

04

Add Watch Events for alerts

Watch Events securely connects the scenario to delivery, failure, and connection alerts. Delete it and Publishly removes that connection.

05

Reject fake or stale alerts

Before a scenario starts, Watch Events verifies that the alert came from Publishly and was sent recently. API errors appear as errors, never as an empty success.

06

Act on the real result

Treat confirmed live as success. Send failed posts to the right person using the reason Publishly provides, and use the event ID so one alert never causes the same action twice.

Use the API directly if needed

The Make actions send this same request. You can also use the API directly in Make’s HTTP module.

curl — schedule a post
curl -X POST https://publishlyapi.com/api/public/v1/posts \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Idempotency-Key: campaign-location-2026-08-14' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "schedule",
    "date": "2026-08-14T18:00:00.000Z",
    "shortLink": false,
    "tags": [],
    "posts": [{
      "integration": { "id": "connection-id" },
      "value": [{ "content": "Launch day.", "image": [] }],
      "settings": { "__type": "linkedin" }
    }]
  }'

Verifying the webhook signature

The dedicated webhook performs this check before emitting a bundle. At the wire level, events carry an X-Publishly-Event header and an X-Publishly-Signature header in the form t=<unix-timestamp>,v1=<hex>. Recompute and compare, in a downstream module that can run the hash:

verify HMAC (pseudocode)
const header = webhook.headers['x-publishly-signature']; // t=...,v1=...
const [t, v1] = header.split(',').map((p) => p.split('=')[1]);

const expected = hmacSha256(YOUR_SIGNING_SECRET, `${t}.${rawBody}`);

if (expected !== v1) throw new Error('Bad signature');
// Optionally: reject if t is older than a few minutes.

Full endpoint and payload reference: API docs. Component and release-status details live in the repository’s distribution guide; no public Make catalog listing is implied.