Connections
Works with what you already use
Start cards from your web shop, CRM or own software and get every step back. Built for developers, usable without them.
Request a demoDevelopers
One call per card
POST /v1/postflows/pf_01JB…/items Authorization: Bearer pb_live_•••••••• Idempotency-Key: order-10482 { "recipient": { "name": "Sanne de Vries", "addressLine1": "Dorpsstraat 4", "postalCode": "3512 AB", "city": "Utrecht" }, "variables": { "voucherCode": "WELKOM15" } }
202 Accepted
{ "id": "itm_01JB…", "status": "IN_FLOW" }item.created20041 msitem.in_flow20038 msitem.ready20044 msrun.handed_to_printer20052 msitem.handed_to_carrier20039 msqr.scanned20047 msx-webhook-signature: v1=5f3a…c91eHMAC-SHA256 with your own secretRecord-triggered FlowOpportunity: Closed Won
ActionPostBuddy: Send Mail Item
Postflow Idpf_bedanktRecipient name{!Contact.Name}VariablesfirstName = {!Contact.FirstName}The status comes back on the Mail Item of the record
TEST
pb_test_••••••••Nothing is printed or paidReceivedReadySimulated runWith PostNL (test)Completed
With the same webhooks as live.
Integrations
Ready-made or built yourself
Install the Salesforce app, upload a list or build your own integration. The status of every card comes back where you work.
Salesforce
REST API
Webhooks
CSV and Excel
SDK
A card from your own code
With the SDK for TypeScript or Python. An idempotency key keeps a card from going twice.
Read the API documentationimport { PostBuddyClient } from '@postbuddy/sdk'; const client = new PostBuddyClient({ apiKey: process.env.POSTBUDDY_API_KEY!, }); await client.postflows.createItem('pf_welkom', { body: { recipient: order.shippingAddress, variables: { firstName: order.customer.firstName, voucherCode: 'WELKOM15', }, }, idempotencyKey: `order-${order.id}`, });