INTEGRATION · SLACK

PostKnock in Slack

Put every delivery confirmation, QR scan and call outcome in the channel your team already has open. No app to install from a directory — a Slack incoming webhook and about two minutes.

Included with Pro. The Slack format is part of PostKnock Pro. You can set up webhooks from Admin › Webhooks once you are on a Pro plan.

Connect Slack

No developer required — this is all point and click.

  1. 1

    Create a Slack app for the workspace

    Go to api.slack.com/apps and select Create New AppFrom scratch. Name it something your team will recognise in the channel, such as “PostKnock”, and pick the workspace.

  2. 2

    Turn on Incoming Webhooks

    In the app’s left sidebar choose Incoming Webhooks and switch Activate Incoming Webhooks to On.

  3. 3

    Add a webhook and pick the channel

    Select Add New Webhook to Workspace, choose the channel that should receive PostKnock updates, and select Allow. A private channel works too, as long as you have access to it.

  4. 4

    Copy the webhook URL

    Slack shows a URL beginning https://hooks.slack.com/services/. Treat it as a credential — anyone holding it can post to that channel.

  5. 5

    Add it to PostKnock

    In PostKnock open Admin › Webhooks › New webhook, set the format to Slack, and paste the URL. PostKnock checks it is a real hooks.slack.com address, so a URL pasted into the wrong field is caught immediately.

  6. 6

    Choose events and send a test

    Tick the events you want in the channel — postcard.delivered and contact.responded are the usual pair — save, then select Test and watch the message appear in Slack.

Every event you can subscribe to

Pick the ones you want per webhook, or subscribe to all of them with *. Each event carries the fields listed here inside data.

Event Fires when data fields
postcard.sent A postcard was handed to the print partner and mailed. campaign_id, contact_id, wave_number, lob_id
postcard.in_transit The postal service scanned the piece in transit. campaign_id, contact_id, wave_number, lob_id
postcard.delivered Delivery confirmed. Never presumed — only a real carrier confirmation fires this. campaign_id, contact_id, wave_number, lob_id, delivered_date
postcard.failed The piece failed or came back as return-to-sender. campaign_id, contact_id, wave_number, lob_id, reason
call.scheduled A follow-up call was queued for a contact. campaign_id, contact_id, wave_number, scheduled_for
call.completed A call was completed and its outcome recorded. campaign_id, contact_id, wave_number, call_result, contact_type, duration_seconds
call.no_answer A call rang out or the line was unavailable. campaign_id, contact_id, wave_number
contact.responded A contact scanned the QR code on their postcard. contact_id, campaign_id, method, tracked_url_id
contact.unsubscribed A contact was marked do-not-contact. contact_id, reason
campaign.activated A campaign started sending. campaign_id, name, total_contacts
campaign.completed Every wave finished, or someone marked the campaign complete. campaign_id, name
campaign.paused A campaign paused — by request, or automatically on a low wallet balance. campaign_id, name, reason
touchpoint.failed An individual postcard or email touchpoint failed. campaign_id, contact_id, touchpoint_type, reason

IDs in data are the same per-account IDs you see in the PostKnock URL bar, so campaign_id: 7 is the campaign at /campaigns/7.

Want the raw JSON instead?

The Slack format posts a message written for humans reading a channel. If you would rather receive the signed JSON envelope and handle it in your own code, use a Generic webhook — same events, full payload, HMAC signature included.

Questions

Do I need a signing secret for Slack? +
No. The Slack webhook URL is itself the secret, so PostKnock does not add an HMAC signature for Slack subscriptions. That is why the URL must be handled carefully and rotated in Slack if it leaks.
Can I send different events to different channels? +
Yes. Create one Slack webhook URL per channel and one PostKnock webhook per URL, each subscribed to its own set of events. Delivery confirmations to a marketing channel and failures to an ops channel is a common split.
What does the message look like? +
A short formatted message naming the event, the campaign and the contact, rather than raw JSON. If you want the raw payload instead, create a Generic webhook pointing at your own endpoint.
It stopped posting. What should I check? +
Open Admin › Webhooks › Deliveries in PostKnock. Slack returns a clear error body, and it is recorded there verbatim — usually a revoked webhook, a deleted app, or an archived channel.

Direct mail your other tools can see

Send postcards and follow-up calls from PostKnock, and stream every delivery, scan and call outcome straight into the tools your team already watches.

Start free

Outbound webhooks are included with PostKnock Pro.