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 demo
Developers

One call per card

Read the documentation
DevelopersLiveTest
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 ms
item.in_flow20038 ms
item.ready20044 ms
run.handed_to_printer20052 ms
item.handed_to_carrier20039 ms
qr.scanned20047 ms
x-webhook-signature: v1=5f3a…c91eHMAC-SHA256 with your own secret
Record-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
TESTpb_test_••••••••Nothing is printed or paid
ReceivedReadySimulated 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.

PostBuddy
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 documentation
import { 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}`,
});

Start with a test key.