Skip to main content
Browse documentation

Type to search the documentation. Press Esc to close.

How do I send handwritten cards from my CRM?

For developers

Use Scribble's public Zapier or Make app to connect your CRM. A native HubSpot integration is available through a private pilot; it is not listed in HubSpot Marketplace. For custom connections, use the public API, inbound hooks, and signed outbound webhooks.

On this page

#Choose a connection for your CRM

Choosing an integration route
If you want to…UseNeeds code?
Connect your CRM through an automation appScribble on Zapier or Scribble on MakeNo
Use the native HubSpot pilotHubSpot setup guideNo
Send a card when a record changes stateAn inbound hookNo — a Flow, a Zap or a workflow action is enough
Send cards from your own backend, with full controlPOST /api/v1/cardsYes
Keep Scribble's address book in step with the CRMPOST /api/v1/contactsYes
Show card mailed on the contact's timelineOutbound webhooksYes — you need an endpoint that verifies a signature

#The pattern that works, in order

  1. Decide what the trigger is, precisely

    Deal moves to closed-won is a trigger. Deal updated is not — it will fire on every note, and every fire is a card and a credit.

  2. Confirm the CRM record actually carries a postal address

    This is where most integrations fail. Sales CRMs are full of contacts with an email, a phone number and no street. Check the field coverage before you build anything.

    You’ll know it worked when You can name the CRM fields that map to line1, city, state and zip for the majority of the records you intend to trigger on.

  3. Test the sending route

    Create an inbound hook or use your chosen connector. Send one request with your own address to check the complete path. This creates a real paid card. Use a stable idempotency key so a retry cannot create a duplicate.

    Prove the path
    curl -X POST https://scribblecards.com/api/v1/hooks/whk_YOURTOKEN \
      -H "Content-Type: application/json" \
      -d '{
        "name": "Dana Okafor",
        "line1": "88 Colin P Kelly Jr St",
        "city": "San Francisco",
        "state": "CA",
        "zip": "94107",
        "message": "Thanks for four great years, Dana."
      }'

    You’ll know it worked when A 201 with a card code, and the card visible under Orders.

  4. Move to the API when you need control

    Use POST /api/v1/cards when you need to choose the design per card, set an arrive_on date, or read the status back later. Create a key under Integrations with only the scopes you need.

  5. Decide how you learn a card was mailed

    Under Integrations, use Webhooks to your system → Add endpoint and subscribe to card.mailed. Verify the signature on each request.

    You can also poll GET /api/v1/cards/{card_code} and check mailed_at. Use the card code returned by the send.

    You’ll know it worked when The delivery log on the Integrations screen shows HTTP 200 against your endpoint for a test delivery.

  6. Sync the address book, if you need lists

    If you want to run automations off CRM data — birthdays, renewal dates — push contacts in with POST /api/v1/contacts and always send an external_id. See keeping contacts in sync for the pitfall.

#Common questions

Can I trigger a card from a Salesforce Flow without any code?
Yes. An Outbound Message or an HTTP Callout action pointed at an inbound hook URL, with the recipient's mailing fields in the body, is all it takes.
Can I trigger a card from Shopify?
Yes, through a Shopify Flow HTTP request action or through Zapier. The shipping address on the order carries everything a card needs, which makes Shopify one of the easier sources.
Does Scribble read data out of my CRM?
It depends on the route. API and inbound-hook requests push the data you supply. Native connectors may read the fields needed for their workflow; check that connector’s permissions and setup guide.

Last checked against the product on . Something wrong or missing? Tell us.