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
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.Check the hook is live
Paste the URL into a browser. A
GETreturns 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." } }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 recordsYou’ll know it worked when Zapier's test returns a
201and a body containing a card code likeSC-2CR9793and anarrives_betweenwindow.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
422from Scribble means the card was not created and nothing was charged, but a Zap that fails half the time is a Zap nobody trusts.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:
| Field | Also accepted as | Required |
|---|---|---|
name | first_name + last_name | Yes |
line1 | address1 | Yes |
line2 | address2 | No |
city | — | Yes |
state | — | Yes, two letters |
zip | postal_code | Yes, five digits or ZIP+4 |
country | — | No, defaults to US |
message | — | Only if the hook has no message template |
arrive_on | — | No, YYYY-MM-DD |
reference | id | No. 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
| Status | Code | What to do |
|---|---|---|
| 401 | invalid_hook | The URL is wrong or the hook was deleted. Copy it again from Integrations. |
| 403 | hook_disabled | The hook was paused. Turn it back on under Integrations. |
| 422 | invalid_recipient | A required address field is missing or malformed. The message names the fields. |
| 422 | template_incomplete | Your payload has no value for a field the message template uses. Send that field, or send a finished message instead. |
| 402 | no_credits | The 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.