Auto-Save Zendrop Shipping Label PDFs to Google Drive Folders
Automatically capture new Zendrop order shipping labels via webhook and upload them as organized PDF files to a designated Google Drive folder. Ops teams eliminate manual downloading and filing of shipping documents.
- 1
Step 1 – Receive the Zendrop Webhook
Add a
Webhooknode as the trigger. Set the HTTP Method toPOSTand copy the generated webhook URL. In your Zendrop dashboard under Settings > Webhooks, paste this URL and select theorder.createdororder.fulfilledevent so n8n is notified whenever a new shipping label is generated. - 2
Step 2 – Extract Order Details and Label URL
Add a
Setnode connected to the Webhook. Create three fields: setorderIdto{{ $json.body.order_id }},labelUrlto{{ $json.body.shipping_label_url }}, andfileNameto{{ 'ShippingLabel_' + $json.body.order_id + '.pdf' }}. This normalizes the incoming payload for the next steps. - 3
Step 3 – Download the Shipping Label PDF
Add an
HTTP Requestnode. Set the Method toGETand the URL to{{ $json.labelUrl }}. Under Options, enableResponse FormatasFileso n8n treats the response as binary data. This downloads the raw PDF bytes from Zendrop's label URL. - 4
Step 4 – Upload PDF to Google Drive
Add a
Google Drivenode and select theUploadoperation. SetFile Nameto{{ $json.fileName }}and choose your targetParent Folderby pasting the Google Drive folder ID (found in the folder URL). Connect your Google Drive OAuth2 credential. The PDF binary from the previous node is automatically passed as the file content. - 5
Step 5 – Confirm Upload with a Response
Add a
Respond to Webhooknode at the end. Set the Response Body to a simple JSON string such as{ "status": "uploaded", "file": "{{ $json.name }}" }. This closes the webhook handshake and gives Zendrop a 200 OK confirmation so it does not retry the event.
Frequently asked questions
What if the Zendrop webhook does not include a direct PDF URL?
Some Zendrop plans return an order ID instead of a direct label URL. In that case, replace the HTTP Request node with a call to the Zendrop REST API endpoint GET /orders/{order_id}/label using your Zendrop API key as a Bearer token in the Authorization header to fetch the label URL first.
How do I organize labels into subfolders by date?
In the Set node, add a fourth field called `folderName` with the value `{{ new Date().toISOString().slice(0,10) }}`. Then add a Google Drive node before the upload step using the Create Folder operation, pass `folderName` as the folder name and your root folder as the parent, then use the returned folder ID as the parent in the upload node.
Is my Google Drive credential secure inside n8n?
Yes. n8n stores OAuth2 credentials encrypted in its database. For self-hosted deployments, ensure your n8n instance uses HTTPS and that the N8N_ENCRYPTION_KEY environment variable is set to a strong secret. Never share your credential ID publicly.