Browse documentation

Type to search the documentation. Press Esc to close.

How do I send a handwritten card from Zapier or Make?

No code needed

Create an inbound hook under Integrations, copy the URL, and use a Webhooks by Zapier → POST action (or Make's HTTP → Make a request) pointed at it. Send the recipient's name and address as JSON fields; the hook's own message template fills in the rest. One POST sends one card and spends one credit.

On this page
  1. Create the hook in Scribble

    Integrations → New hook URL. Name it after the trigger, so Zapier — deal closed won rather than Hook 1.

    Set the design, the handwriting and the message template. The template is what lets the payload be as small as a name and an address.

    Set Signed by to whatever {{sender_name}} should become.

    A hook message template
    Congratulations, {{first_name}} — everyone at
    {{sender_name}} is glad the {{deal_name}} deal came
    through.

    You’ll know it worked when The hook appears in the list with a URL like https://scribblecards.com/api/v1/hooks/whk_.... Copy it now: it is shown once and stored hashed.

  2. Check the hook is live

    Paste the URL into a browser. A GET returns a small JSON object confirming the hook is live and showing an example payload — some tools verify an endpoint by fetching it before they will let you save it, so this is deliberate.

    GET on a hook URL
    {
      "object": "inbound_hook",
      "ready": true,
      "message": "This hook is live. POST a JSON body with a recipient to send a card.",
      "example": {
        "name": "Priya Raman",
        "line1": "1 Fifth Avenue",
        "city": "New York",
        "state": "NY",
        "zip": "10003",
        "message": "Congratulations from all of us."
      }
    }
  3. Add a Webhooks by Zapier action

    Action event: POST. URL: your hook URL. Payload type: JSON.

    Add one data field per value below, mapping each to the right field from your trigger step.

    Zapier data fields
    name        → {{Contact Full Name}}
    line1       → {{Mailing Street}}
    line2       → {{Mailing Suite}}          (optional)
    city        → {{Mailing City}}
    state       → {{Mailing State}}          two letters, e.g. NY
    zip         → {{Mailing Postal Code}}    five digits
    deal_name   → {{Deal Name}}              used by the template
    reference   → {{Deal ID}}                echoed back, for your records

    You’ll know it worked when Zapier's test returns a 201 and a body containing a card code like SC-2CR9793 and an arrives_between window.

  4. Handle the failures you will actually get

    Add a filter step before the POST so the Zap only fires when the address fields are present. A 422 from Scribble means the card was not created and nothing was charged, but a Zap that fails half the time is a Zap nobody trusts.

  5. Turn it on and watch the first few

    Scribble's Integrations screen logs every call it receives with the status and the reason. Check it after the first real trigger.

    You’ll know it worked when The hook shows a cards sent count and a last fired timestamp.

#The fields a hook accepts

The hook is deliberately forgiving about shape, because Zapier's field mapper is not. All of these work:

Recipient fields accepted by an inbound hook
FieldAlso accepted asRequired
namefirst_name + last_nameYes
line1address1Yes
line2address2No
cityYes
stateYes, two letters
zippostal_codeYes, five digits or ZIP+4
countryNo, defaults to US
messageOnly if the hook has no message template
arrive_onNo, YYYY-MM-DD
referenceidNo. Echoed back so you can correlate.

Fields can be at the top level or nested inside a recipient object — both are read, so a flat Zapier field map works without a wrapper. The full contract is in the inbound hook reference.

#When it goes wrong

Errors a hook returns, and what they mean
StatusCodeWhat to do
401invalid_hookThe URL is wrong or the hook was deleted. Copy it again from Integrations.
403hook_disabledThe hook was paused. Turn it back on under Integrations.
422invalid_recipientA required address field is missing or malformed. The message names the fields.
422template_incompleteYour payload has no value for a field the message template uses. Send that field, or send a finished message instead.
402no_creditsThe balance is empty. Nothing was created; top up and re-run the Zap.

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